Получить консультацию по Solar appScreener

Файлы динамически подключаемых библиотек (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-инфраструктуру. При этом менять ее не потребуется.

ДРУГИЕ СТАТЬИ ПРОДУКТА

Еще больше о наших возможностях

Zero Day уязвимость: что такое уязвимость нулевого дня

Zero Day уязвимость: что такое уязвимость нулевого дня

Узнать больше
White Box-тестирование: что это такое, и когда применяется

White Box-тестирование: что это такое, и когда применяется

Узнать больше
Cross Site Scripting: что такое XSS-атаки и как от них защититься

Cross Site Scripting: что такое XSS-атаки и как от них защититься

Узнать больше