PUDA Explained: Understanding Use-After-Free-Style Bugs
Ясное объяснение ошибок памяти типа PUDA (Premature Use / Dangling Access), причины их возникновения, а также методы обнаружения и предотвращения.
Ошибки повреждения памяти остаются одним из самых распространённых классов уязвимостей в системном ПО, и понимание их механики необходимо для всех, кто работает в области исследования уязвимостей, безопасного кодирования или смягчения эксплойтов. "PUDA" — термин, используемый неформально в некоторых сообществах информационной безопасности для описания Premature Use of Dangling Access — категории ошибок, когда программа обращается к памяти (указатель, дескриптор или ссылка на объект) после того, как эта память была освобождена, переназначена или иным образом инвалидирована. Это тесно связано с проблемами use-after-free (UAF) и dangling pointer и часто используется как взаимозаменяемый термин. Встретите ли вы термин PUDA в writeup CTF, в исследовательской статье или во внутреннем трекере ошибок, основная концепция остаётся одной и той же: устаревшая ссылка используется так, как будто она всё ещё действительна.
Что вызывает PUDA
В основе PUDA-ошибки лежит несоответствие между фактическим временем жизни объекта и временем жизни, которое предполагает код, обращающийся к нему. Распространённые причины включают:
- Missing null-out after free: указатель освобождается, но не устанавливается в
NULL, оставляя его dangling и потенциально переиспользуемым по ошибке. - Race conditions: в многопоточном коде один поток освобождает объект, в то время как другой поток всё ещё держит и использует ссылку на него (классический сценарий, близкий к TOCTOU).
- Callback and event-driven logic: объект уничтожается во время callback, но вызывающий код продолжает работать с ним после возврата из callback.
- Reference counting errors: счётчик ссылок объекта уменьшается некорректно, что вызывает его освобождение, в то время как он всё ещё
Написано с помощью ИИ, проверено и опубликовано Михалом Пильхом (CISSP), Korra Studio.
Это одна заметка из базы знаний Korra Studio — платформа сочетает каждую тему с наставничеством один на один.
Начать бесплатноarrow_forward