Skip to content

Mark RUSTSEC-2026-0273 as patched in manzana 0.3.0 - #3193

Merged
djc merged 1 commit into
rustsec:mainfrom
noahgift:manzana-patched-0.3.0
Sep 9, 2026
Merged

Mark RUSTSEC-2026-0273 as patched in manzana 0.3.0#3193
djc merged 1 commit into
rustsec:mainfrom
noahgift:manzana-patched-0.3.0

Conversation

@noahgift

@noahgift noahgift commented Sep 1, 2026

Copy link
Copy Markdown

manzana 0.3.0 is published and fixes this advisory. I am the maintainer of manzana.

patched = [">= 0.3.0"]

Fixed by removing the cryptography rather than implementing it. The secure_enclave module and the Security-framework FFI are deleted. 0.3.0 exports no key, signature or signer type, makes no Security framework call, and declares no cryptography dependency. Users wanting Secure Enclave or Keychain access are pointed at security-framework.

Implementing it properly needs an Apple Developer account and a code-signed binary with a Team ID; without one SecKeyCreateRandomKey returns errSecInteractionNotAllowed. Publishing cryptography that cannot be executed end-to-end is how this happened in the first place.

0.1.0 and 0.2.0 remain yanked.

Also dropping arch = ["aarch64"]

The affected code was not aarch64-specific, and the narrower constraint under-reported who was exposed.

SecureEnclaveSigner::is_available() was #[cfg(target_os = "macos")] true — a compile-time constant with no runtime probe — so it returned true on x86_64 macOS hosts with no Secure Enclave at all, and sign()/verify() "succeeded" there exactly as they did on Apple Silicon. Intel Mac users were equally affected and, with arch = ["aarch64"] set, were not warned by cargo audit.

os = ["macos"] is kept.

Note

Auditing for the reported defect turned up the same fabricate-a-plausible-value pattern outside the module this advisory names — neural_engine::infer() returning Tensor::zeros(input.shape), capabilities() returning one chip's published figures on every chip, metal::dispatch() returning Ok(()) having dispatched nothing. All removed in the same release; every operation that cannot reach hardware now returns Err(Error::Unimplemented). Mentioned only for context — none of it changes the scope of this advisory, which is about the Secure Enclave signer.

Repository: https://github.com/paiml/manzana
Report: paiml/manzana#3

@djc djc left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the updates!

Comment thread crates/manzana/RUSTSEC-2026-0273.md Outdated

There are currently (as of `2026-04-07`) no versions of the crate that contain either a real implementation, or a warning about the stubbed cryptography.

## Resolution

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think any of the added advisory contents are useful here. You can explain this stuff in the 0.3.0 release notes.

@noahgift

noahgift commented Sep 4, 2026

Copy link
Copy Markdown
Author

@djc friendly ping on this one when you have a moment. It marks RUSTSEC-2026-0273 as patched in manzana 0.3.0.

Status since the advisory was assigned:

Happy to adjust the entry if you would prefer a different shape (for example unaffected vs patched).

@djc

djc commented Sep 4, 2026

Copy link
Copy Markdown
Member

I already added review feedback:

#3193 (comment)

manzana 0.3.0 fixes this by REMOVING the cryptography rather than
implementing it: the secure_enclave module and the Security-framework FFI
are deleted, the crate exports no key/signature/signer type, makes no
Security framework call, and declares no cryptography dependency. Users
wanting Secure Enclave or Keychain access are pointed at security-framework.

0.1.0 and 0.2.0 remain yanked.

Also drops arch = ["aarch64"] from [affected]. The affected code was not
aarch64-specific: is_available() was a compile-time
#[cfg(target_os = "macos")] true with no runtime probe, so it returned true
on x86_64 macOS hosts with no Secure Enclave, and sign()/verify() fabricated
there exactly as on Apple Silicon. The narrower constraint meant cargo audit
did not warn Intel Mac users who were equally affected.

I am the maintainer of manzana.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UEZBKZ9aLfXqppSVvBfwC2
@noahgift
noahgift force-pushed the manzana-patched-0.3.0 branch from 82bdda2 to 579a0e5 Compare September 9, 2026 07:46
@noahgift

noahgift commented Sep 9, 2026

Copy link
Copy Markdown
Author

Done — dropped the added prose; the diff is now just the two metadata lines (patched = [">= 0.3.0"], and removing arch = ["aarch64"]). The rationale lives in the commit message and the 0.3.0 release notes instead.

The arch removal I kept, since it changes who gets warned rather than just describing the fix: is_available() was a compile-time #[cfg(target_os = "macos")] true with no runtime probe, so Intel Macs with no Secure Enclave were equally affected but excluded by the aarch64 constraint. Happy to drop that hunk too if you would rather keep this PR to the patched bump alone.

@djc
djc merged commit d502590 into rustsec:main Sep 9, 2026
1 check passed
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