Найденная уязвимость показала важность постоянного мониторинга вносимого кода

28/07/2009 09:55

Не каждый день эксплоит для ядра Linux публикуется для общественного ознакомления. Но именно это произошло в начале июля, когда все желающие могли увидеть код, содержащий некоторые уязвимости, которые могли бы повлечь серьезные последствия для пользователей. Правда, за несколько недель до выхода, описываемые проблемы с безопасностью были устранены, и их публикация носила чисто информативный характер. Не прими разработчики должных мер, потенциальный эксплоит мог бы натворить много бед для пользователей Linux, но он был вовремя замечен и обезврежен. Первоначальная информация о дефектном коде поступила от вендора, занимающегося изучением проблем безопасности Coverity. Его автоматическая система обнаружения уязвимостей с 2004 года активно сканирует код ядра с целью повышения его качества и удаления багов. Обнаруженная уязвимость состояла из нескольких компонентов, одним из которых был указатель на несуществующий адрес (null pointer). Обычно такие дефекты ведут к краху системы и сканер Coverity специально настроен на их выявление. Данный дефект, помимо прочего, мог быть использован совместно с оптимизацией компилятора, что позволило бы злоумышленнику получить контроль над определенными блоками памяти. Об этом Coverity так же проинформировал разработчиков, и потенциально опасная оптимизация была отключена. По поручению Министерства национальной безопасности США Coverity с 2006 года начал многолетний проект по выявлению проблем в более чем 200 отобранных открытых проектах. В отчете в 2008 году было отмечено, что несуществующие ссылки составили 28% от всех выявленных уязвимостей. Интересно, что за прошедший период был отмечен полутрократный прирост новых дефектов, внесенных разработчиками после проведения первоначального сканирования. Таким образом, если в начале проекта Coverity вопрос необходимости повторного сканирования кода еще находил своих оппонентов, то теперь важность этой работы ни у кого не должна вызывать сомнений.
Подробности