Как работает программное обеспечение Fortify?

Fortify - это SCA, используемый для поиска уязвимостей в программном коде. Мне было просто интересно, как это программное обеспечение работает внутри. Я знаю, что вам нужно настроить набор правил, по которым будет выполняться код. Но как именно он может найти уязвимости в коде.

У кого-нибудь есть мысли по этому поводу?

Заранее спасибо.

4 ответа

Решение

HP Fortify SCA имеет 6 анализаторов: поток данных, поток управления, семантический, структурный, конфигурационный и буферный. Каждый анализатор обнаруживает различные типы уязвимостей.

Поток данных Этот анализатор обнаруживает потенциальные уязвимости, которые включают в себя испорченные данные (вводимые пользователем данные), которые могут быть потенциально опасны. Анализатор потока данных использует глобальный межпроцедурный анализ распространения заражения для обнаружения потока данных между источником (местом ввода данных пользователем) и приемником (опасный вызов функции или операция). Например, анализатор потока данных обнаруживает, копируется ли контролируемая пользователем входная строка неограниченной длины в буфер статического размера, и определяет, используется ли контролируемая пользователем строка для построения текста запроса SQL.

Поток управления Этот анализатор обнаруживает потенциально опасные последовательности операций. Анализируя пути потока управления в программе, анализатор потока управления определяет, выполняется ли набор операций в определенном порядке. Например, анализатор потока управления обнаруживает проблемы времени проверки / использования и неинициализированных переменных и проверяет, правильно ли сконфигурированы утилиты, такие как программы чтения XML, перед использованием.

Структурный Это обнаруживает потенциально опасные недостатки в структуре или определении программы. Например, структурный анализатор обнаруживает присвоение переменных-членов в сервлетах Java, определяет использование средств ведения журнала, которые не объявлены как static final, и помечает экземпляры мертвого кода, которые никогда не будут выполнены из-за предиката, который всегда ложен.

Семантический Этот анализатор обнаруживает потенциально опасное использование функций и API на внутрипроцедурном уровне. В основном умный GREP.

Конфигурация. Этот анализатор ищет ошибки, недостатки и нарушения политики в файлах конфигурации развертывания приложения.

Буфер Этот анализатор обнаруживает уязвимости переполнения буфера, которые включают запись или чтение большего количества данных, чем может вместить буфер.

У @LaJmOn очень хороший ответ, но на совершенно другом уровне абстракции я могу ответить на вопрос по-другому:

  1. Ваш исходный код переведен в промежуточную модель, которая оптимизирована для анализа SCA.

  2. Некоторые типы кода требуют нескольких этапов перевода. Например, файл C# должен быть сначала скомпилирован в отладочный файл.DLL или.EXE, а затем этот двоичный файл.NET, разобранный на промежуточный язык Microsoft (MSIL) утилитой.NET SDK ildasm.exe. Принимая во внимание, что другие файлы, такие как файл Java или файл ASP, переводятся за один проход соответствующим переводчиком Fortify SCA для этого языка.

  3. SCA загружает модель в память и загружает анализаторы. Каждый анализатор загружает правила и применяет эти роли к функциям в модели вашей программы скоординированным образом.

  4. Совпадения записываются в файл FPR с информацией о совпадении уязвимостей, рекомендациями по безопасности, исходным кодом, перекрестными ссылками на исходные данные и информацией о переходах по коду, спецификацией фильтрации пользователей, любыми пользовательскими правилами и цифровыми подписями.

Также добавление к комментарию @Doug Held выше... Начиная с Fortify 16.20, SCA теперь напрямую поддерживает сканирование исходного кода.Net C#/ASP/VB - больше не требует предварительной компиляции.

Да - Fortify SCA поддерживает сканирование Objective-C и Swift для iOS и около 20 других языков и многочисленных фреймворков. Смотрите больше в Fortify SCA Data Sheet:

https://www.hpe.com/h20195/V2/GetPDF.aspx/4AA5-6055ENW.pdf

Вы также можете использовать Fortify SCA через SaaS в Fortify on Demand, чтобы эксперты проводили сканирование и проверяли результаты для вас:

http://www8.hp.com/us/en/software-solutions/application-security-testing/index.html

Другие вопросы по тегам