The vulnerability is a regression bug in the ml-dsa crate, which allows for signature malleability in ML-DSA signature verification. The root cause is in the ml_dsa::hint::monotonic helper function, where a check for strictly increasing hint indices (<) was incorrectly changed to a non-strict check (<=) in commit b01c3b73dd08d0094e089aa234f78b6089ec1f38. This allows an attacker to create multiple valid signatures for the same message by duplicating hint indices, which violates the ML-DSA specification (FIPS 204).
The monotonic function is called by ml_dsa::hint::Hint::bit_unpack when parsing the signature. Therefore, bit_unpack is the function that directly processes the malformed signature component. An exploit would involve crafting a signature with repeated hint indices and submitting it for verification, which would pass through Hint::bit_unpack and be incorrectly validated by monotonic. The fix, implemented in commit 400961412be2e2ab787942cf30e0a9b66b37a54a, removes the monotonic function and replaces its calls inside bit_unpack with an inlined, correct check (<) for the hint indices.