CVE-2026-33222 Overview
A significant authorization bypass vulnerability has been identified in NATS-Server, a high-performance messaging system designed for cloud and edge native deployments. This vulnerability affects the JetStream admin API restore functionality, allowing users with limited JetStream admin permissions to restore streams to arbitrary stream names, potentially impacting data that should have been protected by access controls.
The vulnerability stems from improper authorization checks (CWE-285) in the stream restore functionality. Users who have been granted permission to restore a specific stream can exploit this flaw to restore data to other stream names, effectively bypassing intended access restrictions and potentially corrupting or overwriting protected data.
Critical Impact
Authenticated users with limited JetStream restore permissions can bypass authorization controls and restore data to arbitrary stream names, potentially compromising data integrity across the messaging system.
Affected Products
- NATS-Server versions prior to 2.11.15
- NATS-Server versions prior to 2.12.6
- All NATS-Server deployments with JetStream enabled and user-configured restore permissions
Discovery Timeline
- 2026-03-25 - CVE-2026-33222 published to NVD
- 2026-03-26 - Last updated in NVD database
Technical Details for CVE-2026-33222
Vulnerability Analysis
This vulnerability is classified as an Improper Authorization issue (CWE-285) that affects the JetStream admin API within NATS-Server. The core problem lies in how the server validates stream restore operations. When a user initiates a restore operation through the JetStream API, the authorization mechanism fails to properly verify that the target stream name matches the stream for which the user has been granted restore permissions.
In properly configured NATS deployments, administrators can assign granular permissions to users, including specific JetStream restore capabilities limited to particular streams. However, due to this authorization flaw, a user with restore permissions for one stream can manipulate the restore request to target different stream names entirely. This breaks the intended security model and allows unauthorized data manipulation.
The vulnerability requires network access and high privileges (specifically JetStream admin API access with restore permissions), limiting the attack surface to authenticated internal actors or compromised accounts. However, the potential for high integrity impact makes this a serious concern for multi-tenant or security-sensitive NATS deployments.
Root Cause
The root cause of this vulnerability is improper authorization validation in the JetStream stream restore API handler. The server correctly authenticates the user and verifies they have some level of restore permission, but fails to validate that the requested target stream name matches the scope of their authorized permissions.
This represents a classic broken access control pattern where the authorization check is performed at too coarse a granularity. The permission system allows administrators to configure fine-grained stream-level restore permissions, but the runtime enforcement does not honor these restrictions during the actual restore operation.
Attack Vector
The attack requires an authenticated user with at least limited JetStream admin API access, specifically restore permissions for at least one stream. The attacker can then craft a malicious restore request that specifies a different target stream name than the one they are authorized to access.
The attack scenario involves initiating a JetStream restore operation through the NATS admin API. The attacker provides valid authentication credentials and a restore request payload. Instead of targeting the stream they have permission to restore, they specify a different stream name in the request parameters. The server fails to validate this mismatch and processes the restore, potentially overwriting or corrupting data in the unauthorized target stream.
This vulnerability enables horizontal privilege escalation within the JetStream subsystem, allowing users to impact data streams outside their authorized scope.
Detection Methods for CVE-2026-33222
Indicators of Compromise
- Unexpected stream restore operations logged for streams that should not be accessible to the initiating user
- JetStream audit logs showing restore operations where the user's configured permissions do not include the target stream
- Data integrity issues or unexpected modifications in protected streams
- Unusual patterns of restore API calls from users with limited JetStream permissions
Detection Strategies
- Review JetStream admin API access logs for restore operations and cross-reference with user permission configurations
- Implement monitoring for stream restore operations that target streams outside of user-authorized scopes
- Audit user permissions against actual API activity to identify potential exploitation attempts
- Deploy SentinelOne Singularity platform to monitor NATS-Server processes for anomalous API behavior patterns
Monitoring Recommendations
- Enable comprehensive JetStream audit logging to capture all restore operations with full request details
- Implement alerting on restore API calls to sensitive or protected streams
- Monitor for unusual volumes of restore operations from individual user accounts
- Track data integrity checksums for critical streams to detect unauthorized modifications
How to Mitigate CVE-2026-33222
Immediate Actions Required
- Upgrade NATS-Server to version 2.11.15 or 2.12.6 depending on your release track immediately
- Review and audit all users with JetStream admin API restore permissions
- Temporarily remove JetStream restore permissions from users until patches are applied
- Enable enhanced logging for JetStream operations to detect potential exploitation attempts
Patch Information
The NATS team has released security patches in versions 2.11.15 and 2.12.6 that address this authorization bypass vulnerability. Organizations should upgrade to the appropriate patched version based on their current deployment track.
For detailed patch information and upgrade instructions, refer to the NATS Security Advisory and the GitHub Security Advisory (GHSA-9983-vrx2-fg9c).
Workarounds
- Temporarily remove JetStream restore permissions from all non-essential users until patches can be applied
- Implement network-level access controls to restrict JetStream admin API access to trusted management systems
- Use a separate NATS deployment or isolated accounts for users requiring restore functionality
- Monitor all restore operations manually and investigate any targeting unexpected streams
# Configuration example: Temporarily disable restore permissions
# In your NATS server authorization configuration, remove or comment out
# restore permissions for non-essential users until patching is complete
# Example nats-server.conf permission adjustment:
authorization {
users = [
{ user: "limited_user", password: "secure_password",
permissions: {
publish: ["stream.limited.>"]
subscribe: ["stream.limited.>"]
# REMOVE jetstream restore permissions temporarily
# jetstream: { restore: ["stream.limited"] }
}
}
]
}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

