Австралийский исследователь Сильвио Кезаре (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 GNU/Linux, как один из самых больших репозиториев открытого ПО, было выявлено 420 приложений, в которых присутствует код, скопированный из других проектов.
Источник