1.4 KiB
crypto2 0.9.5 security fix
Multikey.Keys.check now counts distinct authorized signer keys. Earlier versions
could count repeated copies of one allowed key toward an N-of-M threshold.
A serialized SealedBox containing repeated copies of a valid seal could therefore
pass threshold authorization without the required distinct signers. Signature
verification itself was not forged. Policies built with someOf or allOf,
including these thresholds inside nested expressions, were affected.
Upgrade consumers to 0.9.5. Wire formats and public APIs are unchanged. Repeated seals remain readable but cannot supply extra votes. Boolean expression semantics (including intentionally overlapping branches) are unchanged.
Regression coverage includes exhaustive subsets for one through four required keys, duplicate and unauthorized signers, nested policies, and serialized seal repetition with valid distinct-signature controls.
Release qualification: all 64 JVM tests and all 64 Linux x64 native tests pass.
The JavaScript/Node suite cannot complete: 61 of 64 tests fail at the existing
libsodium loader (_sodium_init is not a function). An unchanged-source signing
test reproduces that same failure; this release does not fix the JS loader.
All 12 configured publications were uploaded to Maven Local and the private Maven
repository; SHA-256 comparison of 53 downloaded release files matched Maven Local.