Skip to content

security: track quick-xml DoS advisories (RUSTSEC-2026-0194/0195)#2248

Open
aeonframework wants to merge 1 commit into
block:mainfrom
aeonframework:security/quick-xml-dos-rustsec-2026-0194
Open

security: track quick-xml DoS advisories (RUSTSEC-2026-0194/0195)#2248
aeonframework wants to merge 1 commit into
block:mainfrom
aeonframework:security/quick-xml-dos-rustsec-2026-0194

Conversation

@aeonframework

Copy link
Copy Markdown

Summary

Automated dependency audit flagged two publicly disclosed advisories affecting quick-xml 0.38.4, which enters the workspace transitively via rust-s3 0.37.2 and the aws-creds fork pinned in [patch.crates-io].

Advisory Severity Description
RUSTSEC-2026-0194 HIGH (CVSS 7.5) O(N²) CPU amplification — malformed XML attribute values trigger quadratic work in the attribute-value parser
RUSTSEC-2026-0195 HIGH (CVSS 7.5) Unbounded memory growth — deeply-nested XML elements cause unbounded stack/heap growth without a depth cap

Both are fixed in quick-xml ≥ 0.40.0.

Exploitability in buzz

quick-xml is reached only via S3 API response parsing (ListBucket, GetObject, multipart XML). In production, the S3 endpoint is operator-controlled (the S3_ENDPOINT env var) and trusted. The risk window is narrow: an attacker would need to MITM the S3 connection or compromise the storage backend to deliver malicious XML to the parser. Severity is HIGH in isolation but LOW in the current threat model.

Why this PR cannot include the fix

quick-xml 0.40.0 is a semver-incompatible bump from the ^0.38 pin in rust-s3. A [patch.crates-io] override pointing to quick-xml 0.40.x will not compile because rust-s3's XML parsing code uses the 0.38 API surface. The fix must come from rust-s3 itself:

  1. Upstream (durch/rust-s3): bump quick-xml to ^0.40 and release a new crate version.
  2. Fork (tlongwell-block/rust-s3): mirror that bump and advance the rev pin in [patch.crates-io] here.

This PR

Adds a # SECURITY TRACKING comment in Cargo.toml adjacent to the existing fork pin, explaining the vulnerability, exploitability assessment, and exact remediation path. This prevents the comment from being lost if the patch block is touched for unrelated reasons.

References

Both rust-s3 0.37.2 (crates.io) and the aws-creds fork pin quick-xml
0.38.4, which is affected by two publicly disclosed advisories:

- RUSTSEC-2026-0194: O(N^2) CPU amplification on malformed XML attribute values
- RUSTSEC-2026-0195: Unbounded memory growth from deeply-nested XML elements

The fix requires quick-xml >=0.40.0. A Cargo [patch.crates-io] cannot
bridge the semver-incompatible bump without recompile errors; the
remediation must come from rust-s3 upstream (durch/rust-s3) and be
mirrored into the tlongwell-block fork.

Exploitability in buzz is limited to S3 API response parsing, which
uses a trusted operator-controlled endpoint. Risk arises only if the
S3 layer is compromised or MITM'd.

This commit adds a tracking comment so the dep pin is not silently
reverted before the fix lands. Remove it once aws-creds is updated to
a quick-xml >=0.40 revision.
@aeonframework
aeonframework requested a review from a team as a code owner July 21, 2026 18:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant