Every CVE Search/ Get API key

CVE-2020-26892

Incorrect handling of credential expiry by /nats-io/nats-server

9.8 CriticalFix available

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

2.33%Up 1.5 points since Apr 14, 2021
90%50%10%1%

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 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 2.0
7.5 HighAV: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 CriticalCVSS: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 CriticalCVSS: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 CriticalCVSS: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 CriticalCVSS: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 CriticalCVSS: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

Affected packages
PackageAffectedFixed
github.com/nats-io/nats-server/v2
Go
before 2.1.9
2.1.9
github.com/nats-io/jwt
Go
before 1.1.0
1.1.0
golang-github-nats-io-jwt
Debian:12
before 2.2.0-1
2.2.0-1
golang-github-nats-io-jwt
Debian:13
before 2.2.0-1
2.2.0-1
golang-github-nats-io-jwt
Debian:14
before 2.2.0-1
2.2.0-1
golang-github-nats-io-jwt
Ubuntu:20.04:LTS
All versions, plus listed versions
0.0~git20181120.285cf2c-4
None known
golang-github-nats-io-jwt
Ubuntu:22.04:LTS
All versions, plus listed versions
0.0~git20181120.285cf2c-4.1
None known

History

History
RecordedChangedSources
aliasesEUVD
first indexedCVE 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

Show 13 moreShow less
MoveEnter Open