5 results · Feed
-
High 7.5
KVStoreInterpreter::verify_signature_legacy answers true for every token and every key
`KVStoreInterpreter::verify_signature_legacy(&PushDrop, &PublicKey)`, public and deprecated since 0.2.0 (the crate's first release), read neither argument and answered `true`. A KVStore token signed by nobody, a signed token checked against a key other than i…
-
Critical 9.1
Shamir backup recovery accepts a share at x = 0, so a supplied share can substitute the recovered private key
`KeyShares::from_backup_format` (the Shamir backup share reader, public since 0.2.0, the crate's first release) accepted a share whose x coordinate is 0, and `KeyShares::recover_private_key` interpolates the shares at x = 0 to recover the key. At an x of 0 th…
-
Medium 5.3
Transaction::from_json holds an input txid that is not 64 hex digits and writes the input as spending the zero txid
`Transaction::from_json`, for a document with no `hex` member, held each input's `txid` member as given. An input `txid` that is not 64 hex digits (`"zz"`, `""`, 63 or 65 digits, characters that are not hex digits) answered `Ok`: `source_txid` and `to_json` g…
-
Medium 5.3
Signature::from_der reads a signature with bytes after it, a wrong sequence length or an unneeded zero as the signature
`Signature::from_der` read a DER-encoded ECDSA signature leniently. It read as the signature: the signature followed by other bytes; a sequence length shorter than its contents, or longer with bytes after them (a length byte with its high bit set among them);…
-
Medium 5.3
Transaction readers accept trailing bytes, so a parsed transaction can carry another transaction id
`Transaction::from_binary` and `Transaction::from_hex` read one transaction from the front of their input, did not check that the input ended there, and kept the whole input as the transaction's cached serialization: `to_binary`, `to_hex` and `id()` then answ…