Vulnerability RUSTSEC-2026-0498

Medium Risk
MEDIUM RISK
CVSS Score: 5.3
Score Range: 4.0–6.9
Medium severity vulnerabilities (CVSS 4.0–6.9). Important issues that meaningfully reduce security confidence.
1 day ago
November 10, 2026 at 12:00 PM UTC
Transaction readers accept trailing bytes, so a parsed transaction can carry another transaction id
>=0.0.0-0 <0.8.5, >=0.9.0-beta.1 <0.9.0-beta.7.0
>=0.0.0-0 <0.8.5, >=0.9.0-beta.1 <0.9.0-beta.7.0

Summary

Transaction readers accept trailing bytes, so a parsed transaction can carry another transaction id

Details

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 answered for bytes that are not the transaction's. Transaction::from_json, given a hex field, reads it through from_hex and answers the same. from_ef, from_hex_ef and parse_script_offsets also read a prefix.

An application that takes bytes or hex from outside, parses them with these readers and then uses id() or the serialization could be given one transaction under another identity: the same parsed fields, a different id. An application that passes them only bytes it produced or has already checked is not affected.

0.8.5 refuses a byte after the transaction; Transaction::from_reader reads from the front of a longer buffer. Where upgrading is not possible, parse with Transaction::from_binary, call tx.invalidate_caches() (public from 0.3.16) and require tx.to_binary() == bytes.

Impacted packages

Timeline

Published
1 day ago
November 10, 2026 at 12:00 PM UTC
Last Modified
1 hour ago
November 12, 2026 at 08:11 AM UTC