Repository navigation
v3.30.9: Replace yanked chacha20 with SSE2 fix - #102
Merged
Merged
Conversation
This was referenced Sep 12, 2026
puretensor
force-pushed
the
audit/chacha20-sse2-fix
branch
from
September 12, 2026 10:01
397b45f to
e5a0e58
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and authoritative evidence
The locked dependency graph includes
chacha20 0.10.0with its RNG feature throughrand 0.10.1, used byrmcpanduuid(includingr2d2_sqlite'suuid/fast-rngpath).RustCrypto yanked 0.10.0 and 0.10.1 because the SSE2 RNG/legacy backend used an SSE4.1 intrinsic without the required target feature. The smallest fixed compatible release is 0.10.2, with unchanged MSRV 1.85:
This is a conditional correctness/portability problem for generic source builds on x86 lacking SSE4.1. Published ptask x86 release builds require
x86-64-v3; aarch64 uses a different backend. No production crash, exploitation, or cryptographic confidentiality failure was demonstrated. Severity is low for the documented release targets, with a meaningful compatibility benefit for generic builds.Chosen update
Executed
cargo update -p chacha20 --precise 0.10.2. Only this external package's version/checksum changes. Parent dependency requirements already permit the patch release; no direct dependency or feature change is added. Workspace/internal requirements, workspace lock entries, and generated manpage version move together to 3.30.9.Evidence and validation
cargo tree --locked --offline -i chacha20 -e featuresconfirms the active RNG dependency path and the replacement version. The original cargo-deny run reported the yanked crate; the updated check no longer does. Its existing unusedBSD-2-Clauseallowance warning remains.We did not locally reproduce the upstream undefined behavior: local tests did not emulate an SSE2-only processor or run Miri. The upstream reproducer/fix and active dependency graph justify this update; passing local tests alone are not evidence that the old implementation was sound.
Validation on Rust 1.98.1, all exit 0:
Builds used a dedicated audit target directory and CPU fence; database tests used disposable stores.
The fixed dependency branch passed 406 workspace tests, 49 native-feature tests, 66 dashboard Python tests, 5 script tests, and 35 Node tests. Native-feature counts include existing tests that may return early if model assets are unavailable; no model-loaded coverage is claimed. Native tests overlap workspace tests. Local debug builds were run, not release or cross-target builds.
Compatibility and rollout
No schema, configuration, public API, runtime minimum, deployment or production infrastructure change. Rebuilds consume the fixed lockfile. Keep the existing deployment/merge process; no deployment was performed.
Independent branch from confirmed
mainata95a43b36c23b41532ee3fd7976e1185c8e9e204; no dependency on other audit PRs. Version metadata needs reconciliation when landing multiple independent audit branches. Other audit PRs intentionally retain their baseline dependency graph so this maintenance change stays focused.Remote CI is separate from the executed local checks and must be reviewed before merge. No overlapping open dependency-update PR was found.