CVE-2020-26892
Incorrect handling of credential expiry by /nats-io/nats-server
The JWT library in NATS nats-server before 2.1.9 has Incorrect Access Control because of how expired credentials are handled.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
9.8
The JWT library in NATS nats-server before 2.1.9 has Incorrect Access Control because of how expired credentials are handled.
- Record
CVE-2020-26892- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS 2.0
- 7.5 High
AV:N/AC:L/Au:N/C:P/I:P/A:P - Weakness
- CWE-798
- Updated
- 2026-11-02
CVE List No score
The JWT library in NATS nats-server before 2.1.9 has Incorrect Access Control because of how expired credentials are handled.
- Record
CVE-2020-26892- Updated
- 2026-11-02
EUVDEUVD-2022-0821 No score
The JWT library in NATS nats-server before 2.1.9 has Incorrect Access Control because of how expired credentials are handled.
- Record
EUVD-2022-0821- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-4w5x-x539-ppf5
9.8
Incorrect handling of credential expiry by /nats-io/nats-server
Problem Description
NATS nats-server through 2020-10-07 has Incorrect Access Control because of how expired credentials are handled.
The NATS accounts system has expiration timestamps on credentials; the https://github.com/nats-io/jwt library had an API which encouraged misuse and an IsRevoked() method which misused its own API.
A new IsClaimRevoked() method has correct handling and the nats-server has been updated to use this. The old IsRevoked() method now always returns true and other client code will have to be updated to avoid calling it.
The CVE identifier should cover any application using the old JWT API, where the nats-server is one of those applications.
Affected versions
JWT library
- all versions prior to 1.1.0
- fixed after nats-io/jwt PR 103 landed (2020-10-06)
NATS Server
- Version 2 prior to 2.1.9
- 2.0.0 through and including 2.1.8 are vulnerable.
- fixed with nats-io/nats-server PRs 1632, 1635, 1645
Impact
Time-based credential expiry did not work.
Workaround
Have credentials which only expire after fixes can be deployed.
Solution
Upgrade the JWT dependency in any application using it.
Upgrade the NATS server if using NATS Accounts.
- Record
GHSA-4w5x-x539-ppf5- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-798
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-2c64-vj8g-vwrq No score
Incorrect handling of credential expiry by /nats-io/nats-server
(This advisory is canonically https://advisories.nats.io/CVE/CVE-2020-26892.txt )
Problem Description
NATS nats-server through 2020-10-07 has Incorrect Access Control because of how expired credentials are handled.
The NATS accounts system has expiration timestamps on credentials; the https://github.com/nats-io/jwt library had an API which encouraged misuse and an IsRevoked() method which misused its own API.
A new IsClaimRevoked() method has correct handling and the nats-server has been updated to use this. The old IsRevoked() method now always returns true and other client code will have to be updated to avoid calling it.
The CVE identifier should cover any application using the old JWT API, where the nats-server is one of those applications.
Affected versions
JWT library
- all versions prior to 1.1.0
- fixed after nats-io/jwt PR 103 landed (2020-10-06)
NATS Server
- Version 2 prior to 2.1.9
- 2.0.0 through and including 2.1.8 are vulnerable.
- fixed with nats-io/nats-server PRs 1632, 1635, 1645
Impact
Time-based credential expiry did not work.
Workaround
Have credentials which only expire after fixes can be deployed.
Solution
Upgrade the JWT dependency in any application using it.
Upgrade the NATS server if using NATS Accounts.
- Record
GHSA-2c64-vj8g-vwrq- Weakness
- CWE-284
- Updated
- 2026-11-02
OSV
9.8
The JWT library in NATS nats-server before 2.1.9 has Incorrect Access Control because of how expired credentials are handled.
- Record
CVE-2020-26892- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 5 moreShow less
OSVDEBIAN-CVE-2020-26892
9.8
The JWT library in NATS nats-server before 2.1.9 has Incorrect Access Control because of how expired credentials are handled.
- Record
DEBIAN-CVE-2020-26892- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-4w5x-x539-ppf5
9.8
Incorrect handling of credential expiry by /nats-io/nats-server
Problem Description
NATS nats-server through 2020-10-07 has Incorrect Access Control because of how expired credentials are handled.
The NATS accounts system has expiration timestamps on credentials; the https://github.com/nats-io/jwt library had an API which encouraged misuse and an IsRevoked() method which misused its own API.
A new IsClaimRevoked() method has correct handling and the nats-server has been updated to use this. The old IsRevoked() method now always returns true and other client code will have to be updated to avoid calling it.
The CVE identifier should cover any application using the old JWT API, where the nats-server is one of those applications.
Affected versions
JWT library
- all versions prior to 1.1.0
- fixed after nats-io/jwt PR 103 landed (2020-10-06)
NATS Server
- Version 2 prior to 2.1.9
- 2.0.0 through and including 2.1.8 are vulnerable.
- fixed with nats-io/nats-server PRs 1632, 1635, 1645
Impact
Time-based credential expiry did not work.
Workaround
Have credentials which only expire after fixes can be deployed.
Solution
Upgrade the JWT dependency in any application using it.
Upgrade the NATS server if using NATS Accounts.
- Record
GHSA-4w5x-x539-ppf5- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-798
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2020-26892
9.8
The JWT library in NATS nats-server before 2.1.9 has Incorrect Access Control because of how expired credentials are handled.
- Record
UBUNTU-CVE-2020-26892- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-2c64-vj8g-vwrq No score
Incorrect handling of credential expiry by /nats-io/nats-server
(This advisory is canonically https://advisories.nats.io/CVE/CVE-2020-26892.txt )
Problem Description
NATS nats-server through 2020-10-07 has Incorrect Access Control because of how expired credentials are handled.
The NATS accounts system has expiration timestamps on credentials; the https://github.com/nats-io/jwt library had an API which encouraged misuse and an IsRevoked() method which misused its own API.
A new IsClaimRevoked() method has correct handling and the nats-server has been updated to use this. The old IsRevoked() method now always returns true and other client code will have to be updated to avoid calling it.
The CVE identifier should cover any application using the old JWT API, where the nats-server is one of those applications.
Affected versions
JWT library
- all versions prior to 1.1.0
- fixed after nats-io/jwt PR 103 landed (2020-10-06)
NATS Server
- Version 2 prior to 2.1.9
- 2.0.0 through and including 2.1.8 are vulnerable.
- fixed with nats-io/nats-server PRs 1632, 1635, 1645
Impact
Time-based credential expiry did not work.
Workaround
Have credentials which only expire after fixes can be deployed.
Solution
Upgrade the JWT dependency in any application using it.
Upgrade the NATS server if using NATS Accounts.
- Record
GHSA-2c64-vj8g-vwrq- Weakness
- CWE-284
- Updated
- 2026-11-02
OSVGO-2022-0380 No score
Incorrect handling of credential expiry in github.com/nats-io/jwt
The AccountClaims.IsRevoked and Export.IsRevoked functions improperly validate expired credentials using the current system time rather than the issue time of the JWT to be tested.
These functions cannot be used properly. Newer versions of the jwt package provide an IsClaimRevoked method which performs correct validation. In these versions, the IsRevoked method always return true.
- Record
GO-2022-0380- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/nats-io/nats-server/v2Go |
before 2.1.9 | 2.1.9 |
github.com/nats-io/jwtGo |
before 1.1.0 | 1.1.0 |
golang-github-nats-io-jwtDebian:12 |
before 2.2.0-1 | 2.2.0-1 |
golang-github-nats-io-jwtDebian:13 |
before 2.2.0-1 | 2.2.0-1 |
golang-github-nats-io-jwtDebian:14 |
before 2.2.0-1 | 2.2.0-1 |
golang-github-nats-io-jwtUbuntu:20.04:LTS |
All versions, plus listed versions 0.0~git20181120.285cf2c-4 |
None known |
golang-github-nats-io-jwtUbuntu:22.04:LTS |
All versions, plus listed versions 0.0~git20181120.285cf2c-4.1 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2020-26892 is a critical vulnerability (CVSS 9.8) in Linuxfoundation Nats-server, published November 6, 2020. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 2.33%, the 83rd percentile. Fixed in github.com/nats-io/nats-server/v2 2.1.9.
References
github.com/nats-io/nats-server/commits/master
openwall.com/lists/oss-security/2020/11/02/2
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/VT67XCLIIBYRT762SVFBYFFTQFVSM3SI
github.com/nats-io/nats-server/security/advisories/GHSA-2c64-vj8g-vwrq
github.com/nats-io/jwt/commit/e11ce317263cef69619fc1ca743b195d02aa1d8a
advisories.nats.io/CVE/CVE-2020-26892.txt
Show 13 moreShow less
github.com/advisories/GHSA-2c64-vj8g-vwrq
github.com/nats-io/jwt/security/advisories/GHSA-4w5x-x539-ppf5
nvd.nist.gov/vuln/detail/CVE-2020-26892
github.com/nats-io/nats-server/commit/1e08b67f08e18cd844dce833a265aaa72500a12f
pkg.go.dev/vuln/GO-2022-0380
lists.fedoraproject.org/archives/list/[email protected]/message/VT67XCLIIBYRT762SVFBYFFTQFVSM3SI
github.com/advisories/GHSA-4w5x-x539-ppf5
security-tracker.debian.org/tracker/CVE-2020-26892
github.com/nats-io/nats-server
github.com/nats-io/jwt
ubuntu.com/security/CVE-2020-26892
cve.org/CVERecord?id=CVE-2020-26892
github.com/nats-io/jwt/pull/109