[Security]: RUSTSEC-2026-0253: lru 0.12.5 in Cargo.lock is unsound (use-after-free via LruCache eviction)
- Ngôn ngữ chính
- Rust
- Star
- 2.3k
- Fork
- 231
- Merge trung bình
- 2 giờ 49 phút
- Pull request đã merge (30 ngày)
- 589
Mô tả
### Summary
`lru` 0.12.5 — the version locked in `Cargo.lock` on `main`, pulled in
by `ratatui 0.29` — is covered by RUSTSEC-2026-0253 (later advisories
reference RUSTSEC-2026-0002): `LruCache::pop` is not panic-safe, and an
eviction that panics can leave the cache in an inconsistent state,
leading to a use-after-free or double free. The advisory is fixed in
`lru` >= 0.18.2, which `ratatui 0.29` cannot satisfy because it pins
`lru ^0.12`.
### Affected dependency chain
- `ratatui 0.29.0` (locked in `Cargo.lock`, CLI TUI startup path)
- `-> lru 0.12.5` (locked; affected range)
### Reproduction (from a clean checkout)
1. `git clone` the repository and check out `main`.
2. Run `cargo audit` (or `cargo deny check advisories`).
3. Observed: `lru` flagged as unsound at 0.12.5 (RUSTSEC-2026-0253),
with the advisory requiring `lru >= 0.18.2`.
### Suggested fix
Upgrade `ratatui` from 0.29 to 0.30 (whose `ratatui-core` requires
`lru ^0.18`, resolving the advisory), relax the `bitflags` pin from
`=2.11.1` to `^2` as required by `ratatui-core 0.1.2`, and carry the
small `Backend` trait adaptation in the CLI startup loop. I have a patch
ready and will open a PR referencing this issue.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với Cargo.lock và các khai báo dependency đưa ratatui 0.29 vào, sau đó chạy cargo audit hoặc cargo deny check advisories từ một checkout sạch. Nâng cấp chuỗi dependency, kiểm tra vòng lặp khởi động CLI để thực hiện việc điều chỉnh Backend trait cần thiết, và xác nhận rằng advisory không còn được báo cáo तथा các bước kiểm tra của project đều thành công.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- rust
- Lĩnh vực
- cli, security
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 35/100