Уязвимость в стандартной библиотеке языка Rust
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В стандартной библиотеке языка Rust выявлена уязвимость (CVE-2022-21658), связанная с состоянием гонки в функции std::fs::remove_dir_all(). В случае применения данной функции для удаления временных файлов в привилегированном приложении злоумышленник может добиться удаления произвольных системных файлов и каталогов, к удалению которых в обычных условиях у атакующего нет доступа.
Уязвимость вызвана некорректной реализацией проверки символических ссылок перед рекурсивным удалением каталогов. Вместо запрета следования по символическим ссылкам, функция remove_dir_all() вначале проверяет, является ли файл символической ссылкой. Если определена ссылка, то она удаляется как файл, а если каталог - то вызывается операция рекурсивного удаления содержимого. Проблема в том, что между проверкой и началом операции удаления имеется небольшая задержка.
В момент, когда проверка уже проведена, но операция перебора каталогов для удаления ещё не началась, атакующий может подменить каталог со временными файлами на символическую ссылку. В случае попадания в нужный момент функция remove_dir_all() обработает символическую ссылку как каталог и начнёт удаление содержимого на которое, указывает данная ссылка. Несмотря на то, что успех атаки зависит от точности выбранного времени замены каталога и попадание с первого раза в нужный момент маловероятно, в ходе экспериментов исследователям удалось добиться повторяемого успешного проведения атаки после выполнения эксплоита в течение нескольких секунд.
Уязвимости подвержены все версии Rust с 1.0.0 по 1.58.0 включительно. Проблема пока устранена в форме патча (исправление будет включено в выпуск 1.58.1, который ожидается в течение нескольких часов). Проследить за устранением уязвимости в дистрибутивах можно на данных страницах: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Всем пользователям программ на языке Rust, выполняемым с повышенными привилегиями и использующим функцию remove_dir_all, рекомендуется срочно обновить Rust до версии 1.58.1. Интересно, что выпущенный патч решает проблему не на всех системах, например, в ОС REDOX и версиях macOS до 10.10 (Yosemite) уязвимость не блокируется из-за отсутствия флага O_NOFOLLOW, отключающего следование по символическим ссылкам.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://blog.rust-lang.org/202...)
- OpenNews: GitHub добавил поддержку отслеживания уязвимостей в проектах на языке Rust
- OpenNews: Уязвимость в сетевых библиотеках языков Rust и Go, позволяющая обойти проверку IP-адресов
- OpenNews: Уязвимости в Please, альтернативе sudo, написанной на языке Rust
- OpenNews: Четвёртая редакция патчей для ядра Linux с поддержкой языка Rust
- OpenNews: Выпуск языка программирования Rust 1.58
Похожие новости:
- Четвёртая редакция патчей для ядра Linux с поддержкой языка Rust
- Проект Tor опубликовал Arti 0.0.3, реализацию клиента Tor на языке Rust
- Выпуск языка программирования Rust 1.58
- Третья редакция патчей для ядра Linux с поддержкой языка Rust
- Выпуск языка программирования Rust 1.57
- Проект elfshaker развивает систему контроля версий для ELF-файлов
- Модераторы сообщества Rust в знак протеста объявили об отставке
- Выпуск Stratis 3.0, инструментария для управления локальными хранилищами
- Релиз Tokio 1.13.0, платформы для создания асинхронных приложений на языке Rust
- Выпуск crabz 0.7, утилиты для многопоточного сжатия и распаковки, написанной на Rust
Теги для поиска: #_rust
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 24-Ноя 22:22
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В стандартной библиотеке языка Rust выявлена уязвимость (CVE-2022-21658), связанная с состоянием гонки в функции std::fs::remove_dir_all(). В случае применения данной функции для удаления временных файлов в привилегированном приложении злоумышленник может добиться удаления произвольных системных файлов и каталогов, к удалению которых в обычных условиях у атакующего нет доступа. Уязвимость вызвана некорректной реализацией проверки символических ссылок перед рекурсивным удалением каталогов. Вместо запрета следования по символическим ссылкам, функция remove_dir_all() вначале проверяет, является ли файл символической ссылкой. Если определена ссылка, то она удаляется как файл, а если каталог - то вызывается операция рекурсивного удаления содержимого. Проблема в том, что между проверкой и началом операции удаления имеется небольшая задержка. В момент, когда проверка уже проведена, но операция перебора каталогов для удаления ещё не началась, атакующий может подменить каталог со временными файлами на символическую ссылку. В случае попадания в нужный момент функция remove_dir_all() обработает символическую ссылку как каталог и начнёт удаление содержимого на которое, указывает данная ссылка. Несмотря на то, что успех атаки зависит от точности выбранного времени замены каталога и попадание с первого раза в нужный момент маловероятно, в ходе экспериментов исследователям удалось добиться повторяемого успешного проведения атаки после выполнения эксплоита в течение нескольких секунд. Уязвимости подвержены все версии Rust с 1.0.0 по 1.58.0 включительно. Проблема пока устранена в форме патча (исправление будет включено в выпуск 1.58.1, который ожидается в течение нескольких часов). Проследить за устранением уязвимости в дистрибутивах можно на данных страницах: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Всем пользователям программ на языке Rust, выполняемым с повышенными привилегиями и использующим функцию remove_dir_all, рекомендуется срочно обновить Rust до версии 1.58.1. Интересно, что выпущенный патч решает проблему не на всех системах, например, в ОС REDOX и версиях macOS до 10.10 (Yosemite) уязвимость не блокируется из-за отсутствия флага O_NOFOLLOW, отключающего следование по символическим ссылкам. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 24-Ноя 22:22
Часовой пояс: UTC + 5