Updates

Misspecified asm! operand types in opt-in ARMv8 backend caused unsoundness

keccak disclosed a low-severity unsoundness today in its opt-in ARMv8 assembly backend after an asm! block misspecified operand types for operands used as pointers and then mutated.

Jamie Taylor2 min read
Published
Listen to this article0:00 min
Share this article:
Misspecified asm! operand types in opt-in ARMv8 backend caused unsoundness
AI-generated illustration

The keccak crate disclosed a low-severity unsoundness in its opt-in ARMv8 assembly backend, revealed today, February 19, 2026, that can trigger undefined behavior when the crate's off-by-default asm feature is enabled. The root cause is an asm! block that misspecified operand types for operands that are used as pointers and subsequently mutated, producing unsoundness on ARMv8 targets when that feature is active.

The problem lives in the crate's optional assembly backend, which is only compiled when the off-by-default asm feature is turned on in a project's Cargo.toml. Because the assembly path is opt-in, most Rust projects that depend on keccak without explicitly enabling the asm feature are unaffected; projects targeting ARMv8 and enabling the asm feature are the ones exposed to the issue disclosed on February 19, 2026.

Technically, the failure is in the inline assembly macro usage: an asm! block provided operand types that did not match how those operands were treated at runtime, and those operands were used as pointers and then mutated. That mismatch of operand types against pointer mutation on ARMv8 is what creates the unsoundness labeled low severity by the keccak maintainers in the disclosure.

AI-generated illustration
AI-generated illustration

If your codebase targets ARMv8 and you explicitly enable keccak's asm feature, verify your Cargo.toml and build configuration now. Check whether keccak appears with features = ["asm"] or a similar feature flag in your dependency graph, and consider disabling the asm feature until the crate publishes a corrective update. Verify direct usage of the off-by-default asm feature rather than assuming the crate's default build picks it up.

The disclosure underscores the narrow but real risk that opt-in, architecture-specific assembly paths can introduce unsound behavior even in Rust code. Follow the keccak crate's repository for a patch and a fixed release, and inspect any downstream crates that enable the asm feature in CI builds that target ARMv8. Do you have keccak builds in your CI that enable the asm feature on ARMv8 targets? If so, audit those pipelines and pin or disable the feature until a fix appears.

Know something we missed? Have a correction or additional information?

Submit a Tip
Your Topic
Today's stories
Updated daily by AI

Name any topic. Get daily articles.

You pick the subject, AI does the rest.

Start Now - Free

Ready in 2 minutes

Discussion

More Rust Programming News