Delphi – язык программирования, который благодаря высокой скорости компиляции, развитой системе компонентов, удобному визуальному конструктору программ подходит для создания прикладного программного обеспечения под любые операционные системы и платформы и необходимого для решения сложных научно-технических, а также экономических задач. С его использованием разрабатываются информационные системы и программы учета различных видов активов, программное обеспечение для управления технологическими процессами, файловые менеджеры, программы для коммуникации и так далее.

Учитывая специфику программ, для которых преимущественно применяется этот язык программирования, можно судить о серьезности последствий появления уязвимостей в них. Тест безопасности приложений на Delphi поможет заранее выявить все потенциальные проблемы. Анализ полученных результатов позволит разработчикам вовремя внести исправления в код и повысить безопасность разрабатываемых программ. Проводить тестирование следует как разработчикам программного обеспечения, так и компаниям, эксплуатирующим его. Обе категории экспертов могут реализовать данную проверку безопасности ПО с помощью специальных инструментальных средств – анализаторов исходного кода Delphi.

Типовые проблемы и уязвимости приложений, написанных на «Делфи»

Как любой язык программирования, поддерживающий непосредственный доступ к памяти устройства, «Делфи» не является стопроцентно устойчивым к уязвимостям, связанным с этим доступом. К уязвимостям в приложениях на Delphi могут приводить ошибки при работе с динамической памятью, такие как переполнение буфера и чтение за его пределами, неинициализированные переменные и указатели, переполнение стека.

Тесты безопасности Delphi также выявляют в программах уязвимости, связанные с использованием win32 API. Это происходит главным образом благодаря «дырам» в методах, позволяющим злоумышленникам запускать удаленное выполнение кода. В таком случае последствия реализации возможных угроз варьируют от кражи конфиденциальной информации через программу до получения полного контроля над системой.

Анализаторы исходного кода часто находят в программах на Delphi уязвимости, связанные с вводимыми пользователями или получаемыми от внешних источников (через API или иными способами) данными. В этом случае угрозы реализуются злоумышленниками через исполнение стороннего кода, что становится возможным из-за недостатков механизмов проверки пользовательских и получаемых данных.

Так же как написанное на других языках, программное обеспечение на Delphi может быть подвержено угрозам, реализуемым через эксплойты. Нередки ситуации, когда злоумышленники эксплуатируют уязвимости подключаемых компонентов, сторонних библиотек, используемых при разработке программ.

Способы организации тестов безопасности Delphi

При тестировании безопасности программ, написанных на «Делфи», применяются те же подходы, что и в случае с другими языками программирования. Для проверки программного обеспечения используются методы:

  • Динамический анализ (DAST). Он же метод черного ящика. Сводится к тестированию запущенной программы (исполняемого кода). Анализатор «прощупывает» интерфейсы приложений на потенциальные ошибки, способные привести к эксплуатации уязвимостей.

  • Статический анализ (SAST). Он же метод белого ящика. Код приложения анализируется без запуска (без исполнения кода). Анализатор сканирует его и находит участки, которые можно характеризовать как ошибки или небезопасные конфигурации, способные привести к эксплуатации уязвимостей. При этом анализируется весь код программы, включая подключаемые библиотеки, а также другие сторонние компоненты.

  • Интерактивное тестирование (IAST). Метод, совмещающий в себе динамический и статический анализ.

Проверка безопасности Delphi-приложений для конечных пользователей

Методы DAST и IAST требуют наличия определенной инфраструктуры для развертывания тестовых сред. Кроме того, для их реализации необходимо привлечение экспертов с навыками по тестированию на проникновение. Поэтому при создании анализатора исходного кода Solar appScreener мы опирались на метод SAST. Благодаря этому нам удалось создать инструмент для проверки программного обеспечения на уязвимость, который могут использовать для проверки программ конечные пользователи – компании, а также государственные учреждения, не имеющие в штате собственной мощной команды, занимающейся тестированием на проникновение.

Анализатор исходного кода поддерживает Delphi и еще более 36 языков программирования. С его помощью обнаруживаются признаки большинства типовых уязвимостей, характерных для приложений, разработанных на «Делфи». Например, такие:

  • Выходы за границы массивов и другие уязвимости, связанные с памятью.

  • Неправильное использование функций. SAST-анализатор может обнаруживать факты неверного применения стандартных функций из состава различных библиотек, а также пользовательских функций.

  • Проблемы, связанные с утечками памяти, которые могут использоваться злоумышленниками для реализации угроз.

  • Слабые места в обработке пользовательских, а также получаемых из сторонних источников данных.

  • Использование неинициализированных переменных, висячих указателей.

  • Угрозы в подключаемых компонентах, библиотеках. Статический анализатор проверяет не только исходный код самого Delphi-приложения, но и все сторонние элементы, на которые из него ссылаются.

Тесты безопасности Delphi можно проводить с помощью SAST-анализатора, использующего при выполнении проверок кода библиотеки правил / шаблоны, которые постоянно обновляются. Кроме того, для повышения эффективности проверки пользователи могут добавлять свои правила. Статический анализ позволяет покрыть практически 100% кодовой базы. При разработке Solar appScreener у пользователей не возникает проблем с интерпретацией полученных при проверке приложения результатов. В нашей программе они представляются в удобной форме, с которой может работать даже специалист, далекий от разработки. Наше решение ориентировано на сотрудников, связанных именно с информационной безопасностью, которые могут вовсе не иметь бэкграунда разработчика.