CVE-2026-42882: Critical s3-proxy Authentication Bypass
Critical CVSS (9.4) reachable over network.
TL;DR - CVE-2026-42882 is a critical unauthenticated authorization bypass in
oxyno-zeta/s3-proxybefore 5.0.0. - Attackers may read, write, or delete objects in protected S3 namespaces. - Upgrade to 5.0.0 or later and investigate suspicious encoded-slash and traversal requests.
CVE-2026-42882 affects the Go-based oxyno-zeta/s3-proxy project when deployed with path-based authorization rules. The s3-proxy vulnerability results from inconsistent URL-path handling between authorization checks and S3 object-key construction.
Are You Affected?
The vulnerable behavior exists in versions prior to 5.0.0. The available NVD information does not identify other products, vendors, or downstream distributions as affected.
| Field | Value |
|---|---|
| CVE | CVE-2026-42882 |
| Product | oxyno-zeta/s3-proxy |
| Affected versions | Versions before 5.0.0 |
| Fixed version | 5.0.0 and later |
| CVSS | 9.4, Critical |
| CVSS vector | Not included in the supplied NVD data; retrieve the current NVD vector before publishing a formal component-level severity statement |
| Attack vector | Network |
| Authentication required | None, according to the vulnerability description |
| Patch available | Yes |
| Primary impact | Unauthorized reads, writes, and deletes in protected S3 namespaces |
The vulnerable deployment pattern is a proxy that applies resource-path restrictions before constructing S3 object keys. An unauthenticated remote attacker can send specially formed paths that the authorization middleware and bucket handler interpret differently.
Exposure is especially significant where the proxy is internet-facing or where protected buckets contain sensitive, mutable, or operationally important data.
To determine whether you are affected:
- Identify every deployed
s3-proxybinary, container image, package, and source checkout. - Confirm the embedded project version.
- Check whether each deployment is running before or after version 5.0.0.
- Include custom-built binaries and pinned container images in the inventory.
- Review path-based authorization rules and exposed S3 namespaces.
Organizations reviewing access boundaries should also understand what least privilege means in IAM, particularly where proxy identities can access multiple buckets or prefixes.
The Fix, If You’re in a Hurry
Upgrade oxyno-zeta/s3-proxy to version 5.0.0 or later. The available vulnerability record identifies 5.0.0 as the fixed version.
After upgrading:
- Restart or redeploy every proxy instance.
- Confirm traffic is reaching the new binary rather than an old replica or sidecar.
- Refresh container image digests.
- Verify the running version on every instance.
- Test authorization against encoded slashes, traversal sequences, and protected prefixes.
- Record the deployed version as part of the change.
For a source checkout, a representative upgrade and verification sequence is:
git fetch --tags --force
git checkout v5.0.0
go build -o s3-proxy .
./s3-proxy --version
The exact build and startup options depend on your deployment process. If you use a container image, update the image reference to one built from 5.0.0 or later, refresh the image digest, and roll the deployment.
If an immediate upgrade is impossible, reduce exposure rather than treating a gateway rule as a complete fix. Restrict the proxy to trusted networks, require upstream authentication, limit access to sensitive buckets, and block suspicious requests containing encoded slashes or traversal sequences where operationally safe.
These are compensating controls, not a vulnerability fix. They may fail if another intermediary decodes or normalizes the request differently, and they can disrupt legitimate object names.
Analyst’s Take: Put version inventory and the 5.0.0 upgrade first. The bypass reaches protected S3 namespaces without authentication, while gateway rules can behave differently from the application and may disrupt legitimate object names.
Temporary Reverse-Proxy Controls
A temporary reverse-proxy rule should be tested carefully before enforcement. For example, an NGINX deployment might log and reject obvious traversal indicators:
map $request_uri $s3_proxy_suspicious_path {
default 0;
~*"%2f" 1;
~*"%2F" 1;
~*"\.\." 1;
}
server {
if ($s3_proxy_suspicious_path) {
return 403;
}
proxy_pass http://s3-proxy_backend;
}
This example is not a substitute for upgrading. URL normalization differs between components, and rejecting encoded slashes may affect legitimate object keys. Deploy such a rule in monitoring or staged mode first, then validate it against known application traffic.
How This Vulnerability Works
The flaw is an authorization and resource-resolution mismatch. The authentication middleware evaluates configured resource-path patterns against r.URL.RequestURI(), which preserves the percent-encoded request representation. The bucket handler, however, constructs S3 object keys from Go’s decoded r.URL.Path.
The authorization layer and storage layer can therefore process the same request as different paths. A sequence such as %2F may remain an encoded token during authorization but become / when the handler builds the S3 key.
The request can satisfy an allow rule for one apparent path while reaching a different, protected namespace during object processing.
A second contributing issue is glob semantics. The matching library permits * to match across path separators. Rules intended to constrain one path segment can consequently match a broader path than administrators expect. A path such as the following illustrates the relevant class of input:
/open/foo/drafts/../restricted/
Depending on the configured pattern and processing stage, the raw path may match an open route while later normalization changes the effective S3 key. Similar behavior can occur with ** patterns and dot-dot traversal.
The security boundary fails because authorization is not performed against the same canonical representation used to identify the S3 object. In a path-authorized proxy, canonicalization, matching, and backend key construction must agree on:
- Path separators
- Encoded characters
- Traversal elements
- Repeated separators
- Dot segments
- Normalization rules
Conceptual Processing Model
The affected processing model can be represented conceptually as:
// Authorization layer: encoded request representation.
authorized := matchesConfiguredRule(r.URL.RequestURI())
// Backend layer: decoded path representation.
objectKey := r.URL.Path
s3.GetObject(bucket, objectKey)
The exact upstream implementation should be reviewed in the fixed release and remediation commits. Defenders should not assume that a front-end normalization rule reproduces the application’s behavior.
After upgrading, test:
%2F%252F../- Encoded dot segments
- Repeated separators
- Paths containing mixed encoded and decoded characters
Severity, Explained
The reported CVSS score is 9.4, Critical. The supplied NVD material does not include the vector string, so the individual CVSS components should not be reconstructed or presented as authoritative. Before publishing a formal score breakdown, retrieve the current vector directly from the NVD record.
The practical severity is nevertheless clear. The issue is remotely reachable, requires no authentication according to the vulnerability description, and can cross a configured authorization boundary.
Successful exploitation may permit:
- Reading protected objects
- Writing attacker-controlled content
- Deleting objects
- Exposing customer or configuration data
- Tampering with CI/CD artifacts or backups
- Placing malicious content where downstream systems trust stored objects
Organizations should not downgrade risk solely because the proxy sits behind another service. A reverse proxy, WAF, or identity-aware gateway may reduce exposure, but the vulnerable authorization path remains reachable wherever requests can reach the affected application.
Risk is highest for:
- Internet-facing instances
- Administrative object stores
- CI/CD artifacts
- Backups
- Configuration data
- Buckets containing credentials
- Customer information
- Objects consumed by automated systems
Is It Being Exploited?
CVE-2026-42882 was not found in the CISA Known Exploited Vulnerabilities catalog in the checked data. Consequently, there is no CISA dateAdded, due date, required action, or ransomware-campaign designation available for this CVE.
KEV absence does not prove that exploitation has not happened. It means CISA has not included the vulnerability based on the checked catalog data.
The supplied NVD and upstream references describe practical exploitation techniques, including:
- Glob matching across path separators
- Encoded-slash handling
- Dot-dot traversal
- Differences between raw and decoded URL paths
Those details establish high technical exploitability, but they do not by themselves prove a public weaponized exploit or active campaign.
Assessment: Confirmed in-the-wild exploitation was not established from the supplied NVD, CISA KEV, and upstream references. The supplied material also does not establish a standalone public proof of concept.
Treat the issue as high priority regardless of current exploitation evidence. An unauthenticated authorization bypass affecting object reads, writes, and deletes can become attractive quickly once deployment details and path rules are understood.
Detecting CVE-2026-42882 in Your Environment
Start by locating all proxy instances and reviewing access logs for:
- Encoded slashes
- Traversal elements
- Unusual repeated separators
- Access to normally protected namespaces
- Successful unauthenticated requests
GET,PUT,POST, orDELETEoperations from unexpected clients
Correlate proxy logs with S3 access logs or CloudTrail data events where available. Look for object operations whose source address maps to the proxy but whose caller lacks the expected identity.
A suspicious request does not prove exploitation, because clients may legitimately use encoded object names. Confirmation requires correlating the request with authorization state and the resulting S3 operation.
Log Searches
A basic search across reverse-proxy or application logs can identify common indicators:
grep -Eai '%2f|%2F|%252f|%252F|\.\./|%2e%2e|%2E%2E' /var/log/s3-proxy/access.log
For JSON logs ingested into jq, a focused query might look like:
jq -r '
select(
((.request_uri // "") | test("(%2[fF]|%252[fF]|\\.\\./|%2[eE]%2[eE])"))
or
((.path // "") | test("\\.\\.|/"))
)
| [
(.timestamp // "-"),
(.remote_addr // "-"),
(.method // "-"),
(.request_uri // .path // "-"),
(.status // "-"),
(.user // "unauthenticated")
]
| @tsv
' /var/log/s3-proxy/access.json
Adapt field names to your logging format. A useful SIEM detection should combine path indicators with method, response status, authentication state, and protected-prefix access.
Generic detection logic:
(request_uri contains "%2F" OR request_uri contains "%2f"
OR request_uri contains "../" OR request_uri contains "%2e%2e")
AND method IN ("GET", "PUT", "POST", "DELETE")
AND authentication_state IN ("none", "anonymous", "unknown")
AND status IN (200, 201, 204)
Review the S3 side as well. Search for successful GetObject, PutObject, DeleteObject, or equivalent events from the proxy’s network identity that target protected prefixes and lack the expected principal.
Preserve the following before rotating or deleting evidence:
- Raw request logs
- S3 event records
- Object versions
- Timestamps
- Source addresses
- Authentication metadata
- Proxy and container identifiers
Response and Remediation Checklist
Use the following checklist when responding to a potentially affected deployment:
- Inventory: Find all
s3-proxybinaries, images, and source checkouts. - Version check: Identify instances running before 5.0.0.
- Containment: Restrict public access and sensitive bucket exposure where possible.
- Upgrade: Deploy version 5.0.0 or later.
- Verification: Confirm the running version on every instance.
- Configuration review: Audit path globs, especially
*and**. - Log review: Search for encoded slashes and traversal attempts.
- S3 review: Investigate unexpected reads, writes, and deletes.
- Credential review: Rotate credentials if unauthorized access is suspected.
- Data integrity: Check object versions, deletion markers, and unexpected uploads.
- Monitoring: Add detections for anonymous access to protected prefixes.
- Documentation: Record affected assets, actions taken, and evidence preserved.
Organizations managing cloud permissions may also benefit from reviewing cloud entitlement management concepts when assessing whether the proxy can reach more S3 data than its operational role requires.
References and Further Reading
The primary references for this issue are:
- NVD: CVE-2026-42882
- GitHub Security Advisory: GHSA-rfgq-wgg8-662p
- Upstream remediation commit
- Upstream remediation commit
- CISA Known Exploited Vulnerabilities Catalog
When validating the final production assessment, retrieve the current NVD record rather than relying on a cached score summary. Confirm the complete CVSS vector, affected-version metadata, and any newly added references.
Vulnerability records can change after initial publication, and the NVD record was last modified on 2026-10-26 according to the supplied research note.
Identify every s3-proxy deployment below 5.0.0, upgrade to 5.0.0 or later, verify the running version, and investigate protected-namespace activity associated with anonymous or unexpected requests. The lack of a current KEV listing lowers neither the technical impact nor the need for prompt remediation.
This article may contain affiliate links. We earn a commission on qualifying purchases at no extra cost to you.