Введение

Комплексный анализ исходного кода программного обеспечения.

Аудит программного кода — это всесторонний анализ исходного кода в рамках программного проекта, направленный на выявление ошибок, уязвимостей в системе безопасности или нарушений стандартов кодирования. Он является неотъемлемой частью парадигмы защитного программирования, которая стремится к сокращению числа ошибок до выпуска программного обеспечения. Исходный код на C и C++ чаще всего подвергается аудиту, поскольку многие языки более высокого уровня, такие как Python, содержат меньше потенциально уязвимых функций (например, функций, не осуществляющих проверку границ).

Руководящие принципы

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

Зависимость от требований

Если установить низкий порог, большинство инструментов аудита программного обеспечения обнаруживают множество уязвимостей, особенно если код ранее не проходил аудит. Однако реальная значимость этих предупреждений также зависит от способа использования приложения. Библиотека, которая может быть связана с вредоносным кодом (и должна быть устойчива к нему), предъявляет очень строгие требования, например, клонирование всех возвращаемых структур данных, поскольку ожидаются преднамеренные попытки взлома системы. Программа, которая может подвергаться только вредоносным входным данным (например, серверная часть веб-сервера), в первую очередь должна обеспечивать защиту от этих данных (переполнение буфера, SQL-инъекции и т.п.). Подобные атаки маловероятны для программы, используемой исключительно внутри организации авторизованными пользователями в защищенной инфраструктуре.