test: update module github.com/nats-io/nats-server/v2 to v2.11.12 [security]#76
Open
renovate[bot] wants to merge 1 commit intomainfrom
Open
Conversation
Contributor
Author
ℹ Artifact update noticeFile name: go.modIn order to perform the update(s) described in the table above, Renovate ran the
Details:
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #76 +/- ##
=======================================
Coverage 54.81% 54.81%
=======================================
Files 25 25
Lines 1609 1609
=======================================
Hits 882 882
Misses 630 630
Partials 97 97 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
3cb83fd to
1dd0113
Compare
1dd0113 to
35725fc
Compare
35725fc to
69e2624
Compare
Contributor
Author
ℹ️ Artifact update noticeFile name: go.modIn order to perform the update(s) described in the table above, Renovate ran the
Details:
|
69e2624 to
2765e0c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v2.10.17→v2.11.12GitHub Vulnerability Alerts
CVE-2025-30215
Advisory
The management of JetStream assets happens with messages in the
$JS.subject namespace in the system account; this is partially exposed into regular accounts to allow account holders to manage their assets.Some of the JS API requests were missing access controls, allowing any user with JS management permissions in any account to perform certain administrative actions on any JS asset in any other account. At least one of the unprotected APIs allows for data destruction. None of the affected APIs allow disclosing stream contents.
Affected versions
NATS Server:
Original Report
(Lightly edited to confirm some supposition and in the summary to use past tense)
Summary
nats-server did not include authorization checks on 4 separate admin-level JetStream APIs: account purge, server remove, account stream move, and account stream cancel-move.
In all cases, APIs are not properly restricted to system-account users. Instead, any authorized user can execute the APIs, including across account boundaries, as long as the current user merely has permission to publish on
$JS.>.Only the first seems to be of highest severity. All are included in this single report as they seem likely to have the same underlying root cause.
Reproduction of the
ACCOUNT.PURGEcase is below. The others are like it.Details & Impact
Issue 1:
$JS.API.ACCOUNT.PURGE.*Any user may perform an account purge of any other account (including their own).
Risk: total destruction of Jetstream configuration and data.
Issue 2:
$JS.API.SERVER.REMOVEAny user may remove servers from Jetstream clusters.
Risk: Loss of data redundancy, reduction of service quality.
Issue 3:
$JS.API.ACCOUNT.STREAM.MOVE.*.*andCANCEL_MOVEAny user may cause streams to be moved between servers.
Risk: loss of control of data provenance, reduced service quality during move, enumeration of account and/or stream names.
Similarly for
$JS.API.ACCOUNT.STREAM.CANCEL_MOVE.*.*Mitigations
It appears that users without permission to publish on
$JS.API.ACCOUNT.>or$JS.API.SERVER.>are unable to execute the above APIs.Unfortunately, in many configurations, an 'admin' user for a single account will be given permissions for
$JS.>(or simply>), which allows the improper access to the system APIs above.Scope of impact
Issues 1 and 3 both cross boundaries between accounts, violating promised account isolation. All 3 allow system level access to non-system account users.
While I cannot speak to what authz configurations are actually found in the wild, per the discussion in Mitigations above, it seems likely that at least some configurations are vulnerable.
Additional notes
It appears that
$JS.API.META.LEADER.STEPDOWNdoes properly restrict to system account users. As such, this may be a pattern for how to properly authorize these other APIs.PoC
Environment
Tested with:
nats-server 2.10.26 (installed via homebrew)
nats cli 0.1.6 (installed via homebrew)
macOS 13.7.4
Reproduction steps
CVE-2026-27571
Impact
The WebSockets handling of NATS messages handles compressed messages via the WebSockets negotiated compression. The implementation bound the memory size of a NATS message but did not independently bound the memory consumption of the memory stream when constructing a NATS message which might then fail validation for size reasons.
An attacker can use a compression bomb to cause excessive memory consumption, often resulting in the operating system terminating the server process.
The use of compression is negotiated before authentication, so this does not require valid NATS credentials to exploit.
The fix was to bounds the decompression to fail once the message was too large, instead of continuing on.
Patches
This was released in nats-server without being highlighted as a security issue. It should have been, this was an oversight. Per the NATS security policy, because this does not require a valid user, it is CVE-worthy.
This was fixed in the v2.11 series with v2.11.12 and in the v2.12 series with v2.12.3.
Workarounds
This only affects deployments which use WebSockets and which expose the network port to untrusted end-points.
References
This was reported to the NATS maintainers by Pavel Kohout of Aisle Research (www.aisle.com).
Release Notes
nats-io/nats-server (github.com/nats-io/nats-server/v2)
v2.11.12Compare Source
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
Dependencies
Added
General
ping_internalin thewebsocketblock (#7614)Monitoring
tls_cert_not_afterto thevarzmonitoring endpoint for showing when TLS certificates are due to expire (#7709)Improved
JetStream
MQTT
Fixed
General
JetStream
AsyncFlushis enabled after a process pause (#7594)corrupt record stateerror (#7627)no idx presentcache errors (#7634)$JS.>namespace (#7720)cluster_trafficin config mode has been fixed (#7723)MQTT
$MQTT.subscriptions are now handled implicitly, with the exception ofdenyACLs which still permit restriction (#7637)Complete Changes
v2.11.11Compare Source
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
Dependencies
070ab1a(#7539)Added
JetStream
meta_compactandmeta_compact_size, advanced JetStream config options to control how many log entries must be present in the metalayer log before snapshotting and compaction takes place (#7484, #7521)write_timeoutoption for clients, routes, gateways and leafnodes which controls the behaviour on reaching thewrite_deadline, values can bedefault,retryorclose(#7513)Monitoring
/jszendpoint (#7524)/jszendpoint can now show direct consumers with thedirect-consumers?trueflag (#7543)Improved
General
JetStream
max_bytesandmax_msgslimits (#7455)>for both republish source and destination (#7515)Monitoring
jszmonitoring endpoint can now report leader counts (#7429)Fixed
General
JetStream
sync_alwaysfor writing TTL and scheduling state files (#7385)Complete Changes
v2.11.10Compare Source
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
Dependencies
Improved
General
accstatszresponses if empty (#7300)JetStream
opt_start_timeon consumers orstart_timeon message get requests, now use a binary search for improved lookup performance (#7357)Fixed
General
SIGTERMsignal immediately after startup (#7367)JetStream
stream.Aandstream.*.A, fixing some consumer or message get filters (#7349)Complete Changes
v2.11.9Compare Source
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
Dependencies
Improved
JetStream
raftzendpoint now reports the cluster traffic account (#7186)leader_since(#7189)system_accountandtraffic_account(#7193)jszmonitoring endpoint now returnssystem_accountandtraffic_account(#7193)Fixed
General
default_sentinelJWT from a scoped signing key instead of requiring it to solely be a bearer token for auth callout (#7217)JetStream
Nats-TTLheader will now be correct if the subject delete marker TTL overwrites it (#7177)cluster_trafficstate for an account is now restored correctly when enabling JetStream at startup (#7191)Tests
Complete Changes
v2.11.8Compare Source
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
Dependencies
Added
General
Fixed
General
JetStream
index.dbfile when truncating so that it is not inconsistent if the truncate operation is interrupted (#7162)Tests
Complete Changes
v2.11.7Compare Source
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
Dependencies
Added
General
SubjectMatchesFilterfunction is now available as an exported function for embedded use (#7051)leafzmonitoring endpoint now includes the connection ID (#7063)Improved
JetStream
Nats-TTLheader are now scanned and processed (#7117)Fixed
General
default_sentinelJWT is a bearer token for auth callout (7074)$SYS.REQ.USER.INFOendpoint should now only be answered by the local server, fixing cases where the endpoint may sometimes return without full connection details (#7089)JetStream
no_waitorexpiresbehaviour has been fixed with replicated consumers (#7046)index.db, the deleted blocks are now correctly marked as lost data and the index is rebuilt (#7123)max_bytesreservations (#7131)Tests
Complete Changes
v2.11.6Compare Source
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
Improved
JetStream
Fixed
General
subszmonitoring endpoint now returns the correcttotalfor subscription details, aligning behaviour with other endpoints for pagination (#7009)JetStream
reserved_memoryandreserved_storagestatistics will no longer underflow when no limits are set (#7024)Complete Changes
v2.11.5Compare Source
Changelog
Refer to the 2.11 Upgrade Guide for backwards compatibility notes with 2.10.x.
Go Version
Dependencies
Improved
General
connzmonitoring endpoint now includes leafnode connections (#6949)accstatszmonitoring endpoint now contains leafnode, route and gateway connection stats (#6967)JetStream
new consumer leaderon clustered setups, reducing log noise when watchers etc are in use (#7003)Fixed
General
JetStream
AllowMsgTTLsetting on a stream will now take effect correctly (#6922)Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.