Skip to content

Commit 7c3ff6f

Browse files
authored
Report unsoundness in Solana/spl-token-swap (#2173)
* Report unsoundness in Solana/spl-token-swap * fix error format
1 parent ec9ce28 commit 7c3ff6f

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
```toml
2+
[advisory]
3+
id = "RUSTSEC-0000-0000"
4+
package = "spl-token-swap"
5+
date = "2024-12-19"
6+
url = "https://github.com/solana-labs/solana-program-library/issues/5243"
7+
references = []
8+
categories = []
9+
keywords = ["align"]
10+
informational = "unsound"
11+
12+
[versions]
13+
patched = []
14+
15+
[affected]
16+
functions = {"spl_token_swap::instruction::unpack" = ["<= 3.0.0"]}
17+
```
18+
19+
# Unsound usages of `u8` type casting
20+
The library provides a safe public API `unpack` to cast `u8` array to arbitrary types, which can cause to undefined behaviors. The length check of array can only prevent out-of-bound access on the return type. However, it can't prevent misaligned pointer when casting `u8` pointer to a type aligned to larger bytes. For example, if we assign `u16` to `T`, **misaligned raw pointer dereference** could happen and cause to panic. Even if we pass the type aligned to same byte as `u8` (e.g., `bool`), it could construct a illegal type since `bool` can only have 0 or 1 as bit patterns, which is also an undefined behavior. The further exploits of the bug here are still not clear, so we would report this issue as unsound.
21+
22+
The details of PoC to reproduce undefined behavior are provided in the [issue](https://github.com/solana-labs/solana-program-library/issues/5243).

0 commit comments

Comments
 (0)