Инструментарий для выявления скрытых уязвимостей, возникающих из-за использования стороннего кода

Австралийский исследователь Сильвио Кезаре (Silvio Cesare) представил проект Clonewise, в рамках которого подготовлен инструментарий для выявления общих частей в исходных текстах различных программ и автоматического анализа такого кода на предмет наличия известных уязвимостей. Clonewise помогает решить проблему с возникновением скрытых уязвимостей, которые остаются неисправленными на протяжении длительного времени.

Код анализатора написан на языке С++ и распространяется под лицензией GPLv3. Дополнительно подготовлен GUI-интерфейс на языке Java для управления процессом и визуализации идентичных блоков кода в различных пакетах. Поддерживается работа с репозиториями, использующими пакеты в формате RPM и DEB (для загрузки задействованы yumdownloader и apt-get). При анализе и сопоставлении данных активно используется математический аппарат теории графов. При анализе учитывается как пересечение имен файлов, так и их содержимое (для блоков кода рассчитываются хэши, которые затем сравниваются).

Типичной является ситуация, когда разработчики интегрируют в свой код часть функциональности другого открытого продукта или библиотеки. В случае, если в исходном продукте или библиотеке будет найдена уязвимость, как правило она касается и кода, заимствованного другими проектами. Но так как библиотека используется не через динамическое связывание, а путем копирования кода, такие уязвимости остаются незамеченными. Clonewise связывает CVE-идентификатор уязвимости с блоком кода, вызывающим появлением проблемы, и пытается найти данный код в репозиториях с исходными текстами пакетов различных дистрибутивов.

Например, опасная уязвимость в библиотеке libpng была устранена в браузере Firefox, в поставку которого входили файлы из данной библиотеки, только спустя три месяца. После анализа утилитой Clonewise свежих репозиториев Debian и Fedora было выявлено пять пактов, в которых проявляется уязвимость в libpng, исправленная ещё в начале апреля. В начале года отмечена серия уязвимостей в популярных программах просмотра PDF, таких как Evince и Xpdf, что также было связано с заимствованием кода. Подобные случаи не исключаются и для других популярных проектов, в которых регулярно находят уязвимости, таких как bzip2, libzip, libxml2 и FFmpeg.

Около 90% выявленных утилитой проблем являются ложными срабатываниями. Используя GUI-интерфейс ложные срабатывания отсеиваются в считанные секунды, достаточно пробежаться по списку беглым взглядом. Несмотря на высокий процент ложных срабатываний, в процессе разработки Clonewise в стандартном репозитории Fedora Linux было выявлено 30 ранее на замеченных уязвимостей. Что касается степени заимствования кода, то исследовав репозиторий Debian Linux, как один из самых больших репозиториев открытого ПО, было выявлено 420 приложений, в которых присутствует код, скопированный из других проектов.

©  OpenNet