В borrow checker Rust нашли 11-летнюю дыру, пропускающую чтение освобождённой памяти
В трекере rust-lang зарегистрирован issue #164250: ошибка в borrow checker позволяет короткоживущей ссылке обойти границу T: 'static через присваивание поля после создания структуры и прочитать освобождённую память стека. Проблема воспроизводится на стабильной и nightly-версиях, часть вариантов компилируется с 1.4 и 1.18.0 (2017). Severity понижен с P-critical до P-high, так как эксплойт требует намеренно вредоносной реализации Drop.
- Issue #164250: ссылка обходит границу T: 'static и читается после освобождения стека
- Воспроизводится на stable и nightly, варианты компилируются с 1.4 и 1.18.0 (2017)
- Severity понижен с P-critical до P-high: нужен намеренно вредоносный Drop
- PR #164277 — исправление уже в работе
Читать дальше
Софт