Skip to content

Nil dereference in NATS JWT causing DoS of nats-server

High severity GitHub Reviewed Published Mar 24, 2021 in nats-io/nats-server • Updated Aug 30, 2023

Package

gomod github.com/nats-io/jwt (Go)

Affected versions

< 1.1.0

Patched versions

1.1.0
gomod github.com/nats-io/nats-server/v2 (Go)
< 2.1.9
2.1.9

Description

(This advisory is canonically https://advisories.nats.io/CVE/CVE-2020-26521.txt)

Problem Description

The NATS account system has an Operator trusted by the servers, which signs Accounts, and each Account can then create and sign Users within their account. The Operator should be able to safely issue Accounts to other entities which it does not fully trust.

A malicious Account could create and sign a User JWT with a state not created by the normal tooling, such that decoding by the NATS JWT library (written in Go) would attempt a nil dereference, aborting execution.

The NATS Server is known to be impacted by this.

Affected versions

JWT library

  • all versions prior to 1.1.0

NATS Server

  • Version 2 prior to 2.1.9

Impact

JWT library

  • Programs would nil dereference and panic, aborting execution by default.

NATS server

  • Denial of Service caused by process termination

Workaround

If your NATS servers do not trust any accounts which are managed by untrusted entities, then malformed User credentials are unlikely to be encountered.

Solution

Upgrade the JWT dependency in any application using it.

Upgrade the NATS server if using NATS Accounts.

References

@philpennock philpennock published to nats-io/nats-server Mar 24, 2021
Reviewed May 20, 2021
Published to the GitHub Advisory Database May 21, 2021
Last updated Aug 30, 2023

Severity

High
7.5
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Weaknesses

CVE ID

No known CVE

GHSA ID

GHSA-hmm9-r2m2-qg9w

Source code

No known source code
Checking history
See something to contribute? Suggest improvements for this vulnerability.