The vulnerability is caused by a series of missing bounds checks in the parsing logic of the sequoia-openpgp crate. An attacker can craft malicious OpenPGP packets that, when parsed, cause out-of-bounds array access. In Rust, this leads to a panic, which can be used to cause a denial of service in applications using this library.
The fixes were applied in several releases (1.1.1, 1.8.1, 1.16.0), each addressing different parser vulnerabilities. The patches consistently show a pattern of replacing direct array indexing and unsafe slicing with safe alternatives like get() and explicit length checks.
The vulnerable functions are primarily from_bytes or new methods on various packet types, which are responsible for deserializing the packet data. These functions are the entry points for the malicious input to trigger the vulnerability. Any application that parses untrusted OpenPGP data is susceptible to this denial-of-service attack.