Аудит сетевого стека NetBSD выявил уязвимости в BSD-системах
Как сообщает opennet.ru организация The NetBSD Foundation оплатила проведение аудита безопасности сетевого стека, работа по выполнению которого после пяти месяцев работы находится на заключительном этапе. В кодовую базу NetBSD внесены сотни исправлений, направленных на улучшение качества кода и устранение выявленных в ходе аудита проблем, в том числе удаленно эксплуатируемых уязвимостей. Опубликован первый отчет о выявленных уязвимостях, большинство из которых не специфичны для NetBSD и проявляются в других BSD-системах.
Например, в реализациях IPsec из NetBSD, FreeBSD и OpenBSD выявлено несколько уязвимостей (CVE-2018-6916, CVE-2018-6918), позволяющих инициировать переполнение буфера при обработке специально отправленных сетевых пакетов и вызвать крах ядра. Переполнение буфера также выявлено в стеке IPv6 NetBSD и других BSD-систем - через отправку специально оформленного пакета IPv6 можно вызвать перезапись 1 байта за пределом буфера, но манипулируя вложенными фрагментами теоретически можно добиться перезаписи целых областей.
В реализации IPv6 Multicast из NetBSD и FreeBSD выявлена возможность создания ситуации обращения к уже освобожденным блокам памяти (use-after-free) при обработке определенных пакетов (обработчик Pim6 при некоторых условиях возвращал флаг IPPROTO_NONE вместо IPPROTO_DONE, что приводило к двойному освобождению буфера). Проблема позволяет удаленно вызвать крах ядра, в случае сборки с поддержкой Multicast. Идентичная ошибка найдена в обработчике EtherIP из OpenBSD, который доступен в конфигурации по умолчанию..
Из специфичных для NetBSD проблем отмечаются уязвимости в пакетных фильтрах PF и NPF, вызванные целочисленным переполнением в обработчике TCP-SYN и коде для разбора пакетов IPv6 с опциями большого размера. Уязвимости могут быть использованы для инициирования отказа в обслуживании через отправку определенных сетевых пакетов.
Из не связанных с уязвимостями изменений, внесенных в кодовую базу NetBSD в ходе аудита, отмечается проведение работы по усилению защищенности mbuf API, добавлению дополнительных проверок KASSERT, упрощению кода обработки пакетов, проверке соответствия логики работы требованиям RFC, чистке кода IPsec (удалено более 1000 строк, повышена производительность и надежность).