From 973cf3fc85d615f73885fc48318084344b1b1f1d Mon Sep 17 00:00:00 2001 From: tooson9010-spec Date: Tue, 11 Aug 2026 13:12:42 +0900 Subject: [PATCH 1/2] Create RUSTSEC-0000-0000.md Add advisory for sp-sized-chunks panic-safety unsoundness --- crates/sp-sized-chunks/RUSTSEC-0000-0000.md | 35 +++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 crates/sp-sized-chunks/RUSTSEC-0000-0000.md diff --git a/crates/sp-sized-chunks/RUSTSEC-0000-0000.md b/crates/sp-sized-chunks/RUSTSEC-0000-0000.md new file mode 100644 index 000000000..334547c79 --- /dev/null +++ b/crates/sp-sized-chunks/RUSTSEC-0000-0000.md @@ -0,0 +1,35 @@ +```toml +[advisory] +id = "RUSTSEC-0000-0000" +package = "sp-sized-chunks" +date = "2026-08-04" +categories = ["memory-corruption"] +keywords = ["panic-safety", "memory-safety", "use-after-free", "double-free"] +informational = "unsound" + +[versions] +patched = [] +unaffected = [] +``` + +# Panic-safety unsoundness in `Chunk` and `InlineArray` (use-after-free / double-free) + +Several methods in `sp-sized-chunks` drop elements before updating the container's length/boundary metadata. If an element's `Drop` panics during the drop, the metadata update is skipped, so the container still treats the already-dropped elements as live. When the container is later dropped, its own `Drop` re-visits those slots and drops the freed elements again — a use-after-free / double-free reachable from safe Rust. + +`sp-sized-chunks` is a fork of `sized-chunks` (companion advisory filed separately) and carries the same bug. + +## Affected methods + +- `Chunk::clear`, `Chunk::drop_left`, `Chunk::drop_right` +- `InlineArray::clear` + +## Impact + +- **CWE-415 (Double Free):** the same allocation is freed twice (e.g. an element holding `Box`). +- **CWE-416 (Use-After-Free):** an element reads its own freed allocation during `Drop` (e.g. `String`) — confirmed under AddressSanitizer. + +All are reachable from safe Rust via `catch_unwind` with element types whose `Drop` can panic. + +## Status + +The repository is archived and the crate is still on 0.1.0 with no fix. Affected users should avoid these methods with element types whose `Drop` can panic, or migrate away from the crate. From bb7c0012185d8d52e78a519b9ef506420ea400a7 Mon Sep 17 00:00:00 2001 From: tooson9010-spec Date: Wed, 12 Aug 2026 10:05:13 +0900 Subject: [PATCH 2/2] Update RUSTSEC-0000-0000.md update affected functions and fix date --- crates/sp-sized-chunks/RUSTSEC-0000-0000.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/crates/sp-sized-chunks/RUSTSEC-0000-0000.md b/crates/sp-sized-chunks/RUSTSEC-0000-0000.md index 334547c79..30e65caf1 100644 --- a/crates/sp-sized-chunks/RUSTSEC-0000-0000.md +++ b/crates/sp-sized-chunks/RUSTSEC-0000-0000.md @@ -2,26 +2,27 @@ [advisory] id = "RUSTSEC-0000-0000" package = "sp-sized-chunks" -date = "2026-08-04" +date = "2026-08-11" categories = ["memory-corruption"] keywords = ["panic-safety", "memory-safety", "use-after-free", "double-free"] informational = "unsound" +[affected] +[affected.functions] +"sp_sized_chunks::Chunk::clear" = ["<= 0.1.0"] +"sp_sized_chunks::Chunk::drop_left" = ["<= 0.1.0"] +"sp_sized_chunks::Chunk::drop_right" = ["<= 0.1.0"] +"sp_sized_chunks::InlineArray::clear" = ["<= 0.1.0"] + [versions] patched = [] -unaffected = [] ``` # Panic-safety unsoundness in `Chunk` and `InlineArray` (use-after-free / double-free) Several methods in `sp-sized-chunks` drop elements before updating the container's length/boundary metadata. If an element's `Drop` panics during the drop, the metadata update is skipped, so the container still treats the already-dropped elements as live. When the container is later dropped, its own `Drop` re-visits those slots and drops the freed elements again — a use-after-free / double-free reachable from safe Rust. -`sp-sized-chunks` is a fork of `sized-chunks` (companion advisory filed separately) and carries the same bug. - -## Affected methods - -- `Chunk::clear`, `Chunk::drop_left`, `Chunk::drop_right` -- `InlineArray::clear` +`sp-sized-chunks` is a fork of `sized-chunks` (companion advisory filed separately) and carries the same bug. The repository is archived and the crate is still on 0.1.0 with no fix available. ## Impact @@ -29,7 +30,3 @@ Several methods in `sp-sized-chunks` drop elements before updating the container - **CWE-416 (Use-After-Free):** an element reads its own freed allocation during `Drop` (e.g. `String`) — confirmed under AddressSanitizer. All are reachable from safe Rust via `catch_unwind` with element types whose `Drop` can panic. - -## Status - -The repository is archived and the crate is still on 0.1.0 with no fix. Affected users should avoid these methods with element types whose `Drop` can panic, or migrate away from the crate.