Supply Chain Security
Узнать большеФайлы динамически подключаемых библиотек (DLL) используются практически любыми Windows-приложениями. Благодаря им удается значительно разгрузить ОЗУ компьютера при работе программного обеспечения: все необходимые функции/коды не загружаются в память сразу, а используются только по необходимости.
Как и через любые другие файлы, через динамически подключаемые библиотеки могут быть реализованы различные виды угроз. Поэтому вопросам, имеющим отношение к DLL и проверке исходного кода, нужно уделять должное внимание. Также следует учитывать, что одна библиотека может использоваться разными программами. А значит, вероятность возникновения инцидентов информационной безопасности, связанных с DLL, возрастает.
Какие угрозы и как они могут реализоваться через файлы DLL
В большинстве случаев для реализации угроз через подключаемые библиотеки осуществляется атака – угон DLL (DLL Hijacking). Она заключается в подмене легитимного файла поддельным. Для этого злоумышленниками могут воспользоваться разными механизмами. В ряде случаев поддельный файл помещается в ту же папку, что и легитимный. При следующем обращении программы он запускается. Еще один популярный вариант распространения зловредов – через архивы или папки, куда помещается DLL с вредоносным кодом и какой-то файл (HTML-документ, exe и так далее), при открытии которого запускается библиотека и выполняются записанные в ней скрипты. Также для реализации угрозы часто используется механизм приоритизации путей к библиотекам относительно выполняемой программы (файла) в операционной системе. Поддельный DLL-файл помещается в папку с наивысшим приоритетом, в результате чего становится возможным выполнение вредоносного кода.
Обнаружить угон DLL можно разными способами. Неплохо с этим справляются инструменты статического анализа безопасности (SAST). Они анализируют исходный код программ, ссылки на подключаемые файлы и библиотеки и по ряду признаков могут выявлять предпосылки к угону DLL. К таким признакам относятся:
-
Загрузка DLL из удаленных источников. Разработчики в большинстве случаев используют локально размещенные файлы динамически подключаемых библиотек. Ссылки из исходного кода на удаленные источники могут говорить о проблемах безопасности.
-
Подключение файлов DLL-библиотек из WebDAV. Здесь все по аналогии с предыдущим пунктом. Специалисты по информационной безопасности рекомендуют избегать этого варианта использования DLL.
-
Применение в программах относительных ссылок на файлы динамически подключаемых библиотек. В таком случае риск угона увеличивается. Лучшее решение – абсолютные ссылки, которые усложняют использование нелегитимных файлов.
Если угон реализован. Какие угрозы распространяются через DLL
Динамически подключаемые библиотеки содержат исполняемый код. Следовательно, через них могут быть реализованы различные виды угроз и атак, как и через EXE либо другие типы файлов. Часто через них распространяются:
-
Троянские программы. С их помощью злоумышленникам пересылается конфиденциальная информация, сохраненная в памяти паролей, а также другие данные.
-
Вымогатели. Полностью или частично блокируют доступ к компьютеру, при этом жертве предлагается разблокировка за выкуп.
-
Вирусы-шпионы. Через DLL могут распространяться различные виды шпионов. Они считывают нажатия клавиш на клавиатуре, отслеживают историю посещений сайтов в интернете либо другие действия пользователей.
-
Руткиты. Вредоносы, характеризующиеся комплексным действием: могут содержать черты разных вирусов.
-
Ботнеты. Подключают зараженные устройства к сетям ботов, которые могут использоваться для разных целей, например для совершения DDoS-атак на IT-инфраструктуры.
Особенности анализа DLL и проверки исходного кода
Так как в DLL-файлах содержится не исходный код, а скомпилированный, просто так открыть в редакторе (либо в IDE) DLL-библиотеку и проанализировать ее не получится. Современные SAST-инструменты для статического анализа разрабатываются с учетом этого момента. В частности, в нашем продукте Solar appScreener для работы с файлами динамически подключаемых библиотек используются эффективные технологии бинарного анализа: декомпиляции и деобфускации. С их помощью можно получить исходный код, который после этого анализируется. Декомпозировать и анализировать с помощью SAST можно библиотеки, содержащие код практически на любом языке программирования. Например, наше решение поддерживает более 30 ЯП, среди которых С#, C/C++, Objective C, JavaScript, Ruby, Python, Kotlin и проч.
SAST-анализатор при проверке безопасности DLL анализирует синтаксис и находит в декомпилированном коде конструкции, которые могут быть источниками угроз. С помощью таких инструментов выявляются различные проблемы, которые реализуются при использовании зараженных DLL. Они находят уязвимости:
-
связанные с аутентификацией пользователей в анализируемых программах и в операционных системах;
-
реализуемые в процессе использования программами памяти;
-
возникающие при использовании сеансов, cookies, сессий;
-
реализуемые посредствам инъекций;
-
связанные с запросами/ответами.
Проверка безопасности DLL с помощью SAST-решений может проводиться на любом этапе жизненного цикла программного обеспечения (разработка, тестирование, эксплуатация и так далее). При их использовании не требуется дополнительно других инструментов. Не возникает проблем и с анализом результатом проверки – они предоставляются в удобной для восприятия форме, с которой может работать даже специалист, не имеющий опыта в разработке (например, офицер информационной безопасности или системный администратор). Внедрить такой инструмент можно практически в любую IT-инфраструктуру. При этом менять ее не потребуется.