align / code /bugfind /bench /items /kernel_items.jsonl
viai957's picture
Add files using upload-large-folder tool
4951e76 verified
Raw History Blame Contribute Delete
28.8 kB
{"item_id": "ker-bcrypt_split", "kernel": "bcrypt_split", "advisory": "RUSTSEC-2026-0199", "crate": "bcrypt", "pre_version": "0.19.1", "post_version": "0.19.2", "advisory_url": "https://github.com/Keats/rust-bcrypt/pull/103", "title": "Panic in `bcrypt::verify` on non-ASCII hash input", "source_file": "src/lib.rs", "function": "split_hash_salt_len", "signature": "pub fn split_hash_salt_len(hash: &[u8]) -> Result<usize, u8>", "spec_doc": "Validates a bcrypt hash string and returns the salt length (22). A valid hash is exactly 60 ASCII bytes; every other input must give Err, never panic.", "bug_class": "panic", "fidelity": "model_of_std", "extraction_note": "src/lib.rs split_hash: &str slicing at a non-char-boundary on non-ASCII 60-byte input", "witness_args": "&[b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', 0xA3, b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a']", "labels": {"buggy": "bcrypt@0.19.1", "reference": "bcrypt@0.19.2"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "7d53f927725503b07907dc448e7c98313079394b1cd3febf577d94019e94ac69", "post_lean_sha256": "a9dae044f2c50150b97d1f91c9d02d9fd3c36c9a050b08f825c490bc066643d0", "witness_pre": "PANIC", "witness_post": "Err(2)", "discriminating": true, "kept": true}
{"item_id": "ker-bytes_reserve", "kernel": "bytes_reserve", "advisory": "RUSTSEC-2026-0007", "crate": "bytes", "pre_version": "1.11.0", "post_version": "1.11.1", "advisory_url": "https://github.com/tokio-rs/bytes/commit/d0293b0e35838123c51ca5dfdf468ecafee4398f", "title": "Integer overflow in `BytesMut::reserve`", "source_file": "src/bytes_mut.rs", "function": "reserve_fits", "signature": "pub fn reserve_fits(v_capacity: usize, new_cap: usize, offset: usize) -> bool", "spec_doc": "Decides whether a Vec-backed buffer with capacity v_capacity can serve a reserve request of new_cap bytes when the live window starts at offset; must be true iff v_capacity >= new_cap + offset in exact arithmetic.", "bug_class": "overflow", "fidelity": "verbatim_logic", "extraction_note": "src/bytes_mut.rs reserve_inner: new_cap + offset overflow", "witness_args": "10usize, usize::MAX, 1usize", "labels": {"buggy": "bytes@1.11.0", "reference": "bytes@1.11.1"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "7e96b2fcef4037173d24e1a5c00af53f14e932464e0e989d8ad824499cf6b4b1", "post_lean_sha256": "f0ffe2dc35ef8cfdedb1dd161c6c58dfc016c5f122fd204845b4ff02dfaccd26", "witness_pre": "PANIC", "witness_post": "false", "discriminating": true, "kept": true}
{"item_id": "ker-claxon_rice", "kernel": "claxon_rice", "advisory": "RUSTSEC-2018-0004", "crate": "claxon", "pre_version": "0.3.1", "post_version": "0.3.2", "advisory_url": "https://github.com/ruuda/claxon/commit/8f28ec275e412dd3af4f3cda460605512faf332c", "title": "Malicious input could cause uninitialized memory to be exposed", "source_file": "src/subframe.rs", "function": "rice_layout", "signature": "pub fn rice_layout(block_size: u16, order: u32, n_warm_up: u16) -> Result<u32, u8>", "spec_doc": "Computes how many residual samples a FLAC Rice-coded subframe's 2^order partitions cover (order is a 4-bit field, so order > 15 is rejected with Err). On Ok(n), n must equal block_size (the partitions fill the block); otherwise return Err.", "bug_class": "logic", "fidelity": "verbatim_logic", "extraction_note": "src/subframe.rs decode_residual: block size not a multiple of 2^order left buffer tail uninitialised", "witness_args": "10u16, 2u32, 0u16", "labels": {"buggy": "claxon@0.3.1", "reference": "claxon@0.3.2"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "cdaba15895178577f58dd2225e2a1cb69a2d97026a1e048f89d8214e0712dfef", "post_lean_sha256": "1f7189a114350b6cc5d051c07bc9635e432a9acdfe4fc9261f6d8474a7e411f7", "witness_pre": "Ok(8)", "witness_post": "Err(2)", "discriminating": true, "kept": true}
{"item_id": "ker-ecdh_scalar", "kernel": "ecdh_scalar", "advisory": "RUSTSEC-2026-0023", "crate": "libcrux-ecdh", "pre_version": "0.0.5", "post_version": "0.0.6", "advisory_url": "https://github.com/cryspen/libcrux/pull/1301", "title": "X25519 secret validation did not check buffer length or clamping", "source_file": "src/ecdh.rs", "function": "validate_x25519_scalar", "signature": "pub fn validate_x25519_scalar(s: &[u8]) -> bool", "spec_doc": "Validates an X25519 secret scalar: must be exactly 32 bytes, not all zero, and clamped (low 3 bits of byte 0 clear, top bit of byte 31 clear, second-highest bit of byte 31 set).", "bug_class": "logic", "fidelity": "verbatim_logic", "extraction_note": "src/ecdh.rs validate_scalar: only checked all-zero", "witness_args": "&[1u8, 2, 3]", "labels": {"buggy": "libcrux-ecdh@0.0.5", "reference": "libcrux-ecdh@0.0.6"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "b722ec6b0e7c0cf6e0019198cff7de3ebe78a6013913cce2e51d7c74ba9f4048", "post_lean_sha256": "d1a6b256dc6cce87bca1afc47c15ab10724e4b5a676dba3774703b0f4b326fd1", "witness_pre": "true", "witness_post": "false", "discriminating": true, "kept": true}
{"item_id": "ker-evm_memset", "kernel": "evm_memset", "advisory": "RUSTSEC-2021-0066", "crate": "evm-core", "pre_version": "0.21.0", "post_version": "0.21.1", "advisory_url": "https://github.com/rust-blockchain/evm", "title": "Denial of service on EVM execution due to memory over-allocation", "source_file": "src/memory.rs", "function": "memory_set_len", "signature": "pub fn memory_set_len(cur_len: usize, offset: usize, value_len: usize, target_size: Option<usize>, limit: usize) -> Result<usize, u8>", "spec_doc": "New length of EVM memory after writing value (value_len bytes) at offset, zero-padded to target_size (default value_len). Err if offset+target_size exceeds limit. Writing an empty value must not grow memory.", "bug_class": "dos_loop_or_recursion", "fidelity": "verbatim_logic", "extraction_note": "src/memory.rs Memory::set: empty value with large target_size over-allocates", "witness_args": "0usize, 0usize, 0usize, Some(1000usize), 1048576usize", "labels": {"buggy": "evm-core@0.21.0", "reference": "evm-core@0.21.1"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "d853c43e6b0bf2aa130f9144b9d98e3023723b905a77edc81058f14e23028cbd", "post_lean_sha256": "6cd5f64bfcceeaf8268969610d802f26a9dcfac33bd25388b0a94929773204ee", "witness_pre": "Ok(1000)", "witness_post": "Ok(0)", "discriminating": true, "kept": true}
{"item_id": "ker-exif_discard", "kernel": "exif_discard", "advisory": "RUSTSEC-2021-0143", "crate": "kamadak-exif", "pre_version": "0.5.2", "post_version": "0.5.3", "advisory_url": "https://github.com/kamadak/exif-rs/commit/1b05eab57e484cd7d576d4357b9cda7fdc57df8c", "title": "kamadak-exif DoS with untrusted PNG data", "source_file": "src/util.rs", "function": "discard_exact", "signature": "pub fn discard_exact(avail: usize, len: usize) -> Result<usize, u8>", "spec_doc": "Models skipping len bytes of a reader that has only avail bytes: returns Ok(number of read rounds) when the reader had enough data, Err when it hits EOF early. Must terminate on every input.", "bug_class": "dos_loop_or_recursion", "fidelity": "verbatim_logic", "extraction_note": "src/util.rs discard_exact: spins forever at EOF (consume_len == 0)", "witness_args": "3usize, 10usize", "labels": {"buggy": "kamadak-exif@0.5.2", "reference": "kamadak-exif@0.5.3"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "c96464a9a2cc0fb97e16ab7b265fc0e661459f2abc94eec2e8701d1459ba8c67", "post_lean_sha256": "529e5e3afdf5ff1b27f120a50df8e6d6d63744b50d7145d2662ad59d56562854", "witness_pre": "HANG", "witness_post": "Err(1)", "discriminating": true, "kept": true}
{"item_id": "ker-matrix_power", "kernel": "matrix_power", "advisory": "RUSTSEC-2025-0065", "crate": "matrix-sdk-base", "pre_version": "0.14.0", "post_version": "0.14.1", "advisory_url": "https://github.com/matrix-org/matrix-rust-sdk/pull/5635", "title": "matrix-sdk-base: Panic in the `RoomMember::normalized_power_level()` method", "source_file": "src/room/members.rs", "function": "normalize_power_level", "signature": "pub fn normalize_power_level(power_level: i64, max_power_level: i64) -> i64", "spec_doc": "Scales a Matrix user power level (|power_level| < 2^53) to the range 0..=100 relative to max_power_level > 0.", "bug_class": "panic", "fidelity": "verbatim_logic", "extraction_note": "src/room/members.rs normalized_power_level: expect() on out-of-range Int when max_power_level is small", "witness_args": "9007199254740991i64, 1i64", "labels": {"buggy": "matrix-sdk-base@0.14.0", "reference": "matrix-sdk-base@0.14.1"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "5d5368f9f867a54b16589188c6adddbd82a663b7239985d2edc3845dded3a6e0", "post_lean_sha256": "5e5444c8e2f6e675cdd33a7aceee308866a3eaa40bfe6537a7b889f02239d125", "witness_pre": "PANIC", "witness_post": "100", "discriminating": true, "kept": true}
{"item_id": "ker-mldsa_hint", "kernel": "mldsa_hint", "advisory": "RUSTSEC-2026-0076", "crate": "libcrux-ml-dsa", "pre_version": "0.0.7", "post_version": "0.0.8", "advisory_url": "https://github.com/cryspen/libcrux/pull/1348", "title": "Panic in Signature Hint Decoding During Verification", "source_file": "src/encoding/signature.rs", "function": "hint_weight", "signature": "pub fn hint_weight(hint: &[u8], max_ones: usize, rows: usize) -> Option<usize>", "spec_doc": "Decodes the ML-DSA signature hint encoding: hint[..max_ones] are positions, hint[max_ones..max_ones+rows] are cumulative counts that must be non-decreasing and at most max_ones. Returns the sum of the hint bytes it consumed, or None for a malformed encoding. Must never panic on any input of length >= max_ones+rows.", "bug_class": "panic", "fidelity": "verbatim_logic", "extraction_note": "src/ml_dsa_generic.rs / encoding/signature.rs deserialize hint: checked previous instead of current against max_ones", "witness_args": "&[0u8, 0, 200], 2usize, 1usize", "labels": {"buggy": "libcrux-ml-dsa@0.0.7", "reference": "libcrux-ml-dsa@0.0.8"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "369de5ded1473ad360569f6bab10c6c0be5ee8f8015dcd8b06efa823e49f1539", "post_lean_sha256": "f6bcf49adef14b0ce4fd2e1751cd3294ea2749d0d1e7c96066fdc2fea6f33d14", "witness_pre": "PANIC", "witness_post": "None", "discriminating": true, "kept": true}
{"item_id": "ker-mldsa_norm", "kernel": "mldsa_norm", "advisory": "RUSTSEC-2026-0076", "crate": "libcrux-ml-dsa", "pre_version": "0.0.7", "post_version": "0.0.8", "advisory_url": "https://github.com/cryspen/libcrux/pull/1348", "title": "Panic in Signature Hint Decoding During Verification", "source_file": "src/ml_dsa_generic.rs", "function": "response_bound", "signature": "pub fn response_bound(gamma1_exponent: u32, beta: i32) -> i32", "spec_doc": "ML-DSA verification bound for the signer response: gamma1 - beta where gamma1 = 2^gamma1_exponent.", "bug_class": "logic", "fidelity": "verbatim_logic", "extraction_note": "src/ml_dsa_generic.rs verify: (2 << GAMMA1_EXPONENT) - BETA instead of (1 << ...) - BETA", "witness_args": "17u32, 78i32", "labels": {"buggy": "libcrux-ml-dsa@0.0.7", "reference": "libcrux-ml-dsa@0.0.8"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "b3aee20eb8775621568ec83f0b152929c78119ff61b7cc3154c4eb473c6c36cf", "post_lean_sha256": "43c47039869cf45f1f80300523602ae4633d7f8c8c1e0b9eebc4a237b47a1f61", "witness_pre": "262066", "witness_post": "130994", "discriminating": true, "kept": true}
{"item_id": "ker-nanoid_mask", "kernel": "nanoid_mask", "advisory": "RUSTSEC-2024-0343", "crate": "nano-id", "pre_version": "0.3.3", "post_version": "0.4.0", "advisory_url": null, "title": "Reduced entropy due to inadequate character set usage", "source_file": "src/lib.rs", "function": "alphabet_mask", "signature": "pub fn alphabet_mask(len: usize) -> usize", "spec_doc": "Bit mask used to index an alphabet of len symbols (len >= 2) from a random byte: the smallest all-ones value m with m >= len - 1, i.e. next_power_of_two(len) - 1.", "bug_class": "logic", "fidelity": "verbatim_logic", "extraction_note": "src/lib.rs MASK = $len - 1 is not a bit mask for non-power-of-two alphabets (biased/short alphabet)", "witness_args": "62usize", "labels": {"buggy": "nano-id@0.3.3", "reference": "nano-id@0.4.0"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "77f18cc6dec2889cb0be86e91faded65fb3020c33ddb75cad2695aa6a4d3e139", "post_lean_sha256": "87d440ff0746922e2532a2f00e718d79c58adec9f02783f532eede1096fdb740", "witness_pre": "61", "witness_post": "63", "discriminating": true, "kept": true}
{"item_id": "ker-nostr_iv", "kernel": "nostr_iv", "advisory": "RUSTSEC-2026-0219", "crate": "nostr", "pre_version": "0.44.5", "post_version": "0.44.6", "advisory_url": "https://github.com/nostrdevkit/nostr/commit/b24619346f666d08ef7fefe27f033b8bc871697f", "title": "Remote Denial of Service via malformed NIP-04 IV", "source_file": "src/nips/nip04.rs", "function": "load_iv", "signature": "pub fn load_iv(iv: &[u8]) -> Result<[u8; 16], u8>", "spec_doc": "Loads a NIP-04 AES-CBC initialisation vector from untrusted bytes; must return Err unless the input is exactly 16 bytes, and must never panic.", "bug_class": "panic", "fidelity": "model_of_std", "extraction_note": "src/nips/nip04.rs decrypt: iv.as_slice().into() panics on wrong length", "witness_args": "&[1u8, 2, 3]", "labels": {"buggy": "nostr@0.44.5", "reference": "nostr@0.44.6"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "d2a795acc975354b04b5e30e15a356353bda1fc461f2b814cf3b730780a9675d", "post_lean_sha256": "72b7f8d389dcab073d3ac0be3fd1b18dd366ce160083f09643bd79b1437278a1", "witness_pre": "PANIC", "witness_post": "Err(1)", "discriminating": true, "kept": true}
{"item_id": "ker-odoh_split", "kernel": "odoh_split", "advisory": "RUSTSEC-2023-0095", "crate": "odoh-rs", "pre_version": "1.0.1", "post_version": "1.0.2", "advisory_url": "https://github.com/cloudflare/odoh-rs/pull/28", "title": "Invalid Slice Split Results in Server Panic", "source_file": "src/protocol.rs", "function": "encrypted_payload_len", "signature": "pub fn encrypted_payload_len(msg: &[u8], key_size: usize) -> Result<usize, u8>", "spec_doc": "Splits an encrypted ODoH query into an encapsulated key (first key_size bytes) and ciphertext (the rest); returns the ciphertext length, or Err if the message is shorter than key_size. Must not panic on any input.", "bug_class": "panic", "fidelity": "model_of_std", "extraction_note": "src/protocol.rs decrypt_query: split_at(key_size) without length check", "witness_args": "&[1u8, 2, 3], 32usize", "labels": {"buggy": "odoh-rs@1.0.1", "reference": "odoh-rs@1.0.2"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "ac94ea295289c87699352a11aa6bc83ee4a8b231ba8bc39842bd38fb69fe1a38", "post_lean_sha256": "4de24b5c9da44807587a71885ea633e86de8b62af2afa54441231eeb4f01676e", "witness_pre": "PANIC", "witness_post": "Err(1)", "discriminating": true, "kept": true}
{"item_id": "ker-phone_ctx", "kernel": "phone_ctx", "advisory": "RUSTSEC-2023-0082", "crate": "phonenumber", "pre_version": "0.2.4+8.11.3", "post_version": "0.2.5+8.11.3", "advisory_url": "https://github.com/whisperfish/rust-phonenumber/commit/2dd44be94539c051b4dee55d1d9d349bd7bedde6", "title": "phonenumber: panic on parsing crafted RF3966 phonenumber inputs ", "source_file": "src/parser/rfc3966.rs", "function": "context_prefix_skip", "signature": "pub fn context_prefix_skip(s: &[u8]) -> usize", "spec_doc": "Returns how many leading bytes of an RFC3966 phone-context value to skip: 1 if it starts with '+', otherwise 0. Must not panic on empty input.", "bug_class": "panic", "fidelity": "verbatim_logic", "extraction_note": "src/parser/rfc3966.rs: s.as_bytes()[0] on empty phone-context", "witness_args": "&[]", "labels": {"buggy": "phonenumber@0.2.4+8.11.3", "reference": "phonenumber@0.2.5+8.11.3"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "60b03cf485ff638f22e2345cc07a9c4fd7c95b89cdc485300af2a821dcb567bd", "post_lean_sha256": "14a0680b2a1b983868ebfd1b490faeab2f9f4bf091bdbc3b01176d7be1fb4ae1", "witness_pre": "PANIC", "witness_post": "0", "discriminating": true, "kept": true}
{"item_id": "ker-poly1305_key", "kernel": "poly1305_key", "advisory": "RUSTSEC-2026-0073", "crate": "libcrux-poly1305", "pre_version": "0.0.4", "post_version": "0.0.5", "advisory_url": "https://github.com/cryspen/libcrux/pull/1351", "title": "Panic in Standalone MAC Operations", "source_file": "src/lib.rs", "function": "key_len_ok", "signature": "pub fn key_len_ok(key: &[u8]) -> bool", "spec_doc": "Poly1305 one-time keys are r (16 bytes) followed by s (16 bytes): a key is acceptable iff it is exactly 32 bytes.", "bug_class": "logic", "fidelity": "verbatim_logic", "extraction_note": "src/lib.rs KEY_LEN = 16 (standalone mac rejected/panicked on real 32-byte keys)", "witness_args": "&[0u8; 32]", "labels": {"buggy": "libcrux-poly1305@0.0.4", "reference": "libcrux-poly1305@0.0.5"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "ba6fdb350c0200f1b43cced2a87f6f4ad6352c7a646c6587373950fdcb35c94c", "post_lean_sha256": "0b0a4c77ac465168c2da89b6a933d83773deeb3d9f358ef0c5ae5fbb2f41ebde", "witness_pre": "false", "witness_post": "true", "discriminating": true, "kept": true}
{"item_id": "ker-ring_ctr", "kernel": "ring_ctr", "advisory": "RUSTSEC-2025-0009", "crate": "ring", "pre_version": "0.17.11", "post_version": "0.17.12", "advisory_url": "https://github.com/briansmith/ring/blob/main/RELEASES.md#version-01712-2025-03-05", "title": "Some AES functions may panic when overflow checking is enabled.", "source_file": "src/aead/aes.rs", "function": "increment_by", "signature": "pub fn increment_by(old_value: u32, increment_by: u32) -> u32", "spec_doc": "Increments a 32-bit big-endian AES-GCM block counter, wrapping modulo 2^32.", "bug_class": "overflow", "fidelity": "verbatim_logic", "extraction_note": "src/aead/aes.rs increment_by_less_safe: + panics with overflow checks", "witness_args": "4294967295u32, 1u32", "labels": {"buggy": "ring@0.17.11", "reference": "ring@0.17.12"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "b554eb737dc075edf7b2082cfeea1e6b753e88f6b7efce128f68ac7abab266e8", "post_lean_sha256": "d2b224067bcf3c02a0e85c12ea97a00d53388eb99b58ecd88a330617f40d8711", "witness_pre": "PANIC", "witness_post": "0", "discriminating": true, "kept": true}
{"item_id": "ker-stack_insert", "kernel": "stack_insert", "advisory": "RUSTSEC-2020-0042", "crate": "stack", "pre_version": "0.3.0", "post_version": "0.3.1", "advisory_url": "https://github.com/arcnmx/stack-rs/issues/4", "title": "Missing check in ArrayVec leads to out-of-bounds write.", "source_file": "src/vector.rs", "function": "insert_shift_len", "signature": "pub fn insert_shift_len(len: usize, index: usize) -> Result<usize, u8>", "spec_doc": "Number of elements to shift when inserting at index into a vector of length len; Err if index > len.", "bug_class": "panic", "fidelity": "model_of_std", "extraction_note": "src/vector.rs insert: missing index <= len assert; copy length len - index wrapped (release) -> OOB write", "witness_args": "3usize, 5usize", "labels": {"buggy": "stack@0.3.0", "reference": "stack@0.3.1"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "f49c341180a895e92e930e5a5fe2717f3d24acd62cf82b97cb738e3230f14e2f", "post_lean_sha256": "1b16c2fa9bbc4eea6282a0886308917418820adfb93839468c85d5f67e2b1aa7", "witness_pre": "Ok(18446744073709551614)", "witness_post": "Err(1)", "discriminating": true, "kept": true}
{"item_id": "ker-tar_pax", "kernel": "tar_pax", "advisory": "RUSTSEC-2026-0145", "crate": "astral-tokio-tar", "pre_version": "0.6.1", "post_version": "0.6.2", "advisory_url": "https://github.com/astral-sh/tokio-tar/pull/82", "title": "PAX Header Desynchronization in astral-tokio-tar", "source_file": "src/archive.rs", "function": "apply_pax", "signature": "pub fn apply_pax(entry_type: u8, has_pax: bool) -> bool", "spec_doc": "PAX extended-header data describes the next file entry. Returns whether pending PAX data must be applied to a header of the given type byte: only for real entries, never for GNU long-name 'L', long-link 'K', PAX local 'x' or global 'g' headers.", "bug_class": "logic", "fidelity": "verbatim_logic", "extraction_note": "src/archive.rs: PAX data applied to extension headers (desynchronisation)", "witness_args": "b'L', true", "labels": {"buggy": "astral-tokio-tar@0.6.1", "reference": "astral-tokio-tar@0.6.2"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "82e7ef8d01c7e3f93ef8f93102d323947a0abe2dc49e5d053d2bf885ca7bb8c9", "post_lean_sha256": "301bca5019525ab0aa07d847b9523d4302b32aaea5a0784678691452db6386fd", "witness_pre": "true", "witness_post": "false", "discriminating": true, "kept": true}
{"item_id": "ker-tinyhttp_hdr", "kernel": "tinyhttp_hdr", "advisory": "RUSTSEC-2020-0031", "crate": "tiny_http", "pre_version": "0.6.2", "post_version": "0.6.3", "advisory_url": "https://github.com/tiny-http/tiny-http/issues/173", "title": "HTTP Request smuggling through malformed Transfer Encoding headers", "source_file": "src/common.rs", "function": "header_field_ok", "signature": "pub fn header_field_ok(s: &[u8]) -> bool", "spec_doc": "A header field name is valid iff it is ASCII and contains no whitespace (no trimming: ' Transfer-Encoding' and 'Transfer-Encoding ' are invalid).", "bug_class": "logic", "fidelity": "verbatim_logic", "extraction_note": "src/common.rs HeaderField::from_str: trimmed whitespace (request smuggling)", "witness_args": "b\"Transfer-Encoding \"", "labels": {"buggy": "tiny_http@0.6.2", "reference": "tiny_http@0.6.3"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "cf98ac9dd721cc7955340dc00ca57e1a680d875dd70e958be2592c635a52531e", "post_lean_sha256": "d5790424f20d4118c7484ff00d33c36b395c29a780889dbaaa3736cf5a276ce3", "witness_pre": "true", "witness_post": "false", "discriminating": true, "kept": true}
{"item_id": "ker-toodee_drain", "kernel": "toodee_drain", "advisory": "RUSTSEC-2025-0062", "crate": "toodee", "pre_version": "0.5.0", "post_version": "0.6.0", "advisory_url": "https://github.com/antonmarsden/toodee/issues/26", "title": "Heap Buffer Overflow in the DrainCol Destructor", "source_file": "src/toodee.rs", "function": "drain_col_copy_len", "signature": "pub fn drain_col_copy_len(orig_cols: usize, col: usize) -> usize", "spec_doc": "When removing column col from a row of orig_cols cells, the number of cells to shift left: those strictly after col (orig_cols - col - 1).", "bug_class": "overflow", "fidelity": "verbatim_logic", "extraction_note": "src/toodee.rs DrainCol::drop: ptr::copy length off by one (heap overflow)", "witness_args": "5usize, 2usize", "labels": {"buggy": "toodee@0.5.0", "reference": "toodee@0.6.0"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "177f2dd0ea0c671940d625ad9a1b50cb362afa3394dd21c8388fb6fb53f1fe89", "post_lean_sha256": "37c476e752dccb574108426345b76c7fafd33920bc8a4021d9ccab72c334076b", "witness_pre": "3", "witness_post": "2", "discriminating": true, "kept": true}
{"item_id": "ker-tract_len", "kernel": "tract_len", "advisory": "RUSTSEC-2026-0217", "crate": "tract-nnef", "pre_version": "0.21.15", "post_version": "0.21.16", "advisory_url": "https://github.com/sonos/tract/commit/34c7df2c9bd2a36583e09b52f3e6319bf23102e8", "title": "Integer overflow in tract-nnef NNEF tensor parser leads to out-of-bounds read on model load", "source_file": "src/tensors.rs", "function": "tensor_len_ok", "signature": "pub fn tensor_len_ok(dims: &[usize], bits_per_item: usize, data_size_bytes: usize) -> bool", "spec_doc": "NNEF tensor header consistency: true iff prod(dims) * (bits_per_item / 8) == data_size_bytes in exact arithmetic (false if the product does not fit usize).", "bug_class": "overflow", "fidelity": "verbatim_logic", "extraction_note": "src/tensors.rs read_tensor: unchecked shape product", "witness_args": "&[4294967296usize, 4294967296], 8usize, 0usize", "labels": {"buggy": "tract-nnef@0.21.15", "reference": "tract-nnef@0.21.16"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "63477f85f9b3b7df5b1a724968985b2502a33e7c6fbd3737cba4e348bec40059", "post_lean_sha256": "37591104ba05a5128d5dde81dcafe9a12a3882a409f9aab0d7d52b6be4b4a0c0", "witness_pre": "PANIC", "witness_post": "false", "discriminating": true, "kept": true}
{"item_id": "ker-transpose_dims", "kernel": "transpose_dims", "advisory": "RUSTSEC-2023-0080", "crate": "transpose", "pre_version": "0.2.2", "post_version": "0.2.3", "advisory_url": "https://github.com/ejmahler/transpose/issues/11", "title": "Buffer overflow due to integer overflow in `transpose`", "source_file": "src/lib.rs", "function": "dims_match", "signature": "pub fn dims_match(width: usize, height: usize, len: usize) -> bool", "spec_doc": "True iff width * height == len in exact arithmetic (false when the product does not fit usize).", "bug_class": "overflow", "fidelity": "verbatim_logic", "extraction_note": "src/lib.rs transpose: assert_eq!(w*h, len) wraps in release -> buffer overflow", "witness_args": "4294967296usize, 4294967296usize, 0usize", "labels": {"buggy": "transpose@0.2.2", "reference": "transpose@0.2.3"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "17e06c374eed67fb6362fb4cf7fe66ee4f61912bba8afdb4119cd68e89757588", "post_lean_sha256": "f407c338d6bccc7635d18bedd7de51595dd214296a9fc30866ac897ecd8aa49f", "witness_pre": "PANIC", "witness_post": "false", "discriminating": true, "kept": true}
{"item_id": "ker-trustdns_ptr", "kernel": "trustdns_ptr", "advisory": "RUSTSEC-2018-0007", "crate": "trust-dns-proto", "pre_version": "0.4.2", "post_version": "0.4.3", "advisory_url": null, "title": "Stack overflow when parsing malicious DNS packet", "source_file": "src/rr/domain/name.rs", "function": "pointer_ok", "signature": "pub fn pointer_ok(location: usize, pointer_location: usize, name_start: usize) -> bool", "spec_doc": "A DNS name-compression pointer is acceptable iff its target lies strictly before the start of the name currently being parsed (so pointer chains cannot loop).", "bug_class": "dos_loop_or_recursion", "fidelity": "verbatim_logic", "extraction_note": "src/rr/domain/name.rs Name::read: pointer compared with current label instead of name start (self-referential name)", "witness_args": "0usize, 2usize, 0usize", "labels": {"buggy": "trust-dns-proto@0.4.2", "reference": "trust-dns-proto@0.4.3"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "d796b9b7a74e878ea4a98203892f1631ba8a7ca948b2df03fe1a2d6193d954c9", "post_lean_sha256": "dab0b1a20e96463fd38383d69b684d5cf07699fe2988d8ed0f32300ce5eafdf9", "witness_pre": "true", "witness_post": "false", "discriminating": true, "kept": true}
{"item_id": "ker-versionize_fam", "kernel": "versionize_fam", "advisory": "RUSTSEC-2023-0030", "crate": "versionize", "pre_version": "0.1.9", "post_version": "0.1.10", "advisory_url": "https://github.com/firecracker-microvm/versionize/pull/53", "title": "`Versionize::deserialize` implementation for `FamStructWrapper<T>` is lacking bound checks, potentially leading to out of bounds memory accesses ", "source_file": "src/primitives.rs", "function": "fam_entry", "signature": "pub fn fam_entry(entries: &[u32], header_len: usize, i: usize) -> Result<u32, u8>", "spec_doc": "Reads entry i (< header_len) of a deserialised flexible-array struct whose header declares header_len entries; Err if the header length disagrees with the actual number of entries, never panic.", "bug_class": "panic", "fidelity": "model_of_std", "extraction_note": "src/primitives.rs FamStructWrapper::deserialize: header length not checked against entries", "witness_args": "&[7u32, 8], 5usize, 3usize", "labels": {"buggy": "versionize@0.1.9", "reference": "versionize@0.1.10"}, "kind": "kernel", "pre_translated": true, "post_translated": true, "pre_lean_sha256": "3cff1a14db289fd5fe269b7cc9f226c934e0a288f303afcee251f6906eb577e7", "post_lean_sha256": "9b567f5bdf7efdc3b4b87d5db97c5f32560530074b9d8fe09b17bd4569d8cfda", "witness_pre": "PANIC", "witness_post": "Err(1)", "discriminating": true, "kept": true}