Анализ или как его еще называют аудит исходного кода программного обеспечения представляет собой процедуры специального тестирования ПО с целью выявления в нем непреднамеренных программных ошибок и уязвимостей (ошибок безопасности). Сегодня Аудит исходного кода это действенный способ выявлять текущие проблемы (синтаксические, логические ошибки) и уязвимости (специфические ошибки приводящие к компроментации ПО), а так же предсказывать появление скрытых или маловероятных ошибок и непредвиденного поведения.
Аудит исходного кода является частью парадигмы Secure SDLC (Secure Software Development Life Cycle). Оценка потенциальных ошибок, допускаемых разработчиками поможет скорректировать процесс создания ПО и добиться реализации «Trusted Computing». Основные языки программирования для проверки С, С++, Java, Python
Анализ исходного кода состоит из:
- Просмотр критичных участков кода экспертом (code review)
- Статический анализ кода с помощью анализаторов (static code analysis)
В процесса анализа исходный код проверяется на основные классы указанных уязвимостей:
- переполнение, чтение и запись вне буфера,
- выход вычислений за пределы определенного диапазона при преобразовании переменных числового типа,
- формирование отрицательного значения длины строк байт или количества элементов массива,
- некорректное приведение типов,
- отсутствие инициализации данных,
- утечка, нехватка, использование освобожденной памяти,
- ошибки определения времени и синхронизации,
- ошибки блокировок в много поточных средах и др.