Rust Borrow Checker Exposes 11-Year Soundness Hole
A newly filed Rust issue shows safe code bypassing lifetime requirements through covariant field assignment, allowing a Drop implementation to treat a short-lived reference as 'static and trigger use-after-free. Related variants reportedly compile as far back as Rust 1.4.
This is an exotic edge case, but it punctures Rust’s strongest safety promise: safe code can currently produce undefined behavior through a compiler type-system flaw.
- –The bug involves lifetime variance, generic type checking, and destructor behavior rather than ordinary borrowing.
- –AddressSanitizer reproduces a stack-use-after-scope without requiring `unsafe`.
- –The issue remains open and may require ecosystem-wide crater testing because tightening the checker could reject previously accepted code.
- –Real-world exposure is likely limited, but generic libraries with lifetime-sensitive `Drop` implementations deserve scrutiny.
DISCOVERED
1h ago
2026-10-13
PUBLISHED
3h ago
2026-10-13
RELEVANCE
AUTHOR
formerly_proven