Серьезная локальная уязвимость во FreeBSD

29/09/2011 09:17

В реализации UNIX-сокетов во всех поддерживаемых версиях FreeBSD (7.x, 8.x и 9.x) найдена серьезная уязвимость, позволяющая локальному пользователю поднять свои привилегии в системе (запустить код с правами root), выйти за пределы изолированного Jail-окружения и обойти различные механизмы ограничения доступа, сообщает opennet.ru. Обходных путей блокирования уязвимостей не существует. Для устранения уязвимости требуется установка бинарных обновлений или применение патча с последующей пересборкой ядра (патч подходит и для уже не поддерживаемой ветки FreeBSD 6.x, которая также подвержена уязвимости). Проблема присутствует в реализации Unix-сокетов, которые используют единые с сетевыми сокетами системные вызовы, но используют в качестве аргумента путь к локальному файлу, вместо IP-адреса и номера порта. Проблема вызвана тем, что при прикреплении Unix-сокета к определённой точке файловой системы с использованием системного вызова bind, не производится проверка размера файлового пути. В дальнейшем, при возвращении созданного адреса через другие системные вызовы, он копируется в буфер фиксированной длины. Манипулируя специально сформированным файловым путём при создании Unix-сокета, злоумышленник может инициировать переполнение буфера и выполнить собственный код на уровне ядра системы.
Подробности