Add advisory for azure_core: authorization header written to logs - #3183
Add advisory for azure_core: authorization header written to logs#3183mspiegel wants to merge 2 commits into
Conversation
Legacy `azure_core` (0.1.1 through 0.21.0) writes the value of the outgoing `authorization` header to application logs. In 0.21.0 the hand-written `Debug for Headers` added by Azure/azure-sdk-for-rust#1699 has its redaction condition inverted, emitting the credential and redacting every other header; in earlier versions no redaction exists at all. The transport policy logs the whole request at debug level from 0.4.0 onward, and the retry policy logs it at trace level throughout. Reported to MSRC (VULN-211331), declined under the Microsoft Security Servicing Criteria as legacy-only. Disclosed as Azure/azure-sdk-for-rust#5074 and closed as not planned by a maintainer on 2026-08-26; the finding was not disputed and no fix will ship. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Please use the pull request template. If you are not one of the maintainers, one of the maintainers should sign off on publishing an advisory; if you are, it would be good to see some kind of evidence/proof that you are. |
|
Done — the PR description now follows the template, and I've also corrected the advisory's On sign-off: I'm not a maintainer of azure-sdk-for-rust — I'm the reporter. The upstream maintainers were asked via issue #5074; they confirmed the legacy branch is unsupported, said no fix will ship, closed it as not planned, and didn't dispute the finding or object to an advisory. It was also reported to MSRC (VULN-211331), which declined it as out of servicing scope for the same reason. So there's no upstream fix or upstream-filed advisory coming — happy to provide anything further you need to review it. |
Affected crate(s)
azure_core(6,582,265 recent downloads per crates.io) — and transitivelythe legacy client crates that depend on it (
azure_identity,azure_storage,azure_storage_blobs, the generatedazure_mgmt_*crates)Links to upstream issue(s) or PR(s)
(2026-08-15); a maintainer replied 2026-08-26 and closed it as not planned:
the
legacybranch is unsupported, no fix will ship, users should move toazure_core>= 1.0.0. The technical finding was not disputed.to redact the header (0.21.0), whose condition is inverted.
Microsoft Security Servicing Criteria definition of a vulnerability because
the affected code exists only on the unsupported
legacybranch. Thetechnical finding was not disputed there either.
Severity
Credential exposure via logs (CWE-532). With debug-level logging enabled (or
trace, for the retry-policy path present across the whole range), the legacy
SDK writes the outgoing
authorizationheader value to application logs. Theleaked value is a live credential — an Entra ID bearer token, Storage
SharedKey signature, or SAS token — replayable by anyone with log read access
until it expires. In 0.21.0 the redaction added by upstream PR #1699 is
inverted:
authorizationis printed in the clear while every other headershows
[redacted], giving log auditors false evidence that sanitizationworks. Earlier versions redact nothing.
Affected: 0.1.1, and 0.2.1 through 0.21.0. Patched: >= 0.22.0 (the rewritten
SDK, which contains neither the affected code nor any request logging).
0.2.0 is unaffected — despite the version number it predates 0.1.1 and the
policy pipeline, logs no requests, and has been yanked. The range was
verified by inspecting every published legacy version.
Checklist
RUSTSEC-0000-0000as the IDdatefield is set to the public disclosure date#5074 asked them to confirm the behavior so an advisory could be filed;
they confirmed no fix is planned and did not object
rustsec-admin lintpasses. Several legacy client crates have no release onthe new SDK, so this advisory exists to alert their users and point at the
supported one.