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.

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.

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

