Skip to content

Add advisory for azure_core: authorization header written to logs - #3183

Open
mspiegel wants to merge 2 commits into
rustsec:mainfrom
mspiegel:azure_core-authorization-header-logging
Open

Add advisory for azure_core: authorization header written to logs#3183
mspiegel wants to merge 2 commits into
rustsec:mainfrom
mspiegel:azure_core-authorization-header-logging

Conversation

@mspiegel

@mspiegel mspiegel commented Aug 30, 2026

Copy link
Copy Markdown

Affected crate(s)

  • azure_core (6,582,265 recent downloads per crates.io) — and transitively
    the legacy client crates that depend on it (azure_identity,
    azure_storage, azure_storage_blobs, the generated azure_mgmt_* crates)

Links to upstream issue(s) or PR(s)

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 authorization header value to application logs. The
leaked 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: authorization is printed in the clear while every other header
shows [redacted], giving log auditors false evidence that sanitization
works. 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

  • Advisory filename(s) starts with RUSTSEC-0000-0000 as the ID
  • date field is set to the public disclosure date
  • Contains a concise and descriptive title after advisory metadata
  • Asked maintainer(s) if publishing an advisory is appropriate — issue
    #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 lint passes. Several legacy client crates have no release on
the new SDK, so this advisory exists to alert their users and point at the
supported one.

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>
@djc

djc commented Aug 30, 2026

Copy link
Copy Markdown
Member

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.

@mspiegel

Copy link
Copy Markdown
Author

Done — the PR description now follows the template, and I've also corrected the advisory's date field to the public disclosure date (2026-08-15, when Azure/azure-sdk-for-rust#5074 was opened) rather than the filing date.

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.

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.

2 participants