Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
flawfinder — инструмент статического анализа для поиска уязвимостей в исходном коде на C/C++ | Kitploit
Инструменты/GitHubGitHub/david-a-wheeler/flawfinder
Статический анализСтатический анализ кода (SAST)Анализ уязвимостейАнализ КодаDevSecOpsТоп в Анализ Кода №15Топ в Статический анализ кода (SAST) №12
GitHubdavid-a-wheeler/flawfinder

flawfinder

инструмент статического анализа для поиска уязвимостей в исходном коде на C/C++

58085533 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Репозиторий
Поделиться

О программе

Это "flawfinder" от David A. Wheeler.

Flawfinder — это простая программа, которая сканирует исходный код на C/C++ и сообщает о потенциальных уязвимостях безопасности. Она может быть полезным инструментом для проверки программного обеспечения на уязвимости, а также может служить простым введением в инструменты статического анализа исходного кода в целом. Она спроектирована так, чтобы её было легко установить и использовать. Flawfinder поддерживает Common Weakness Enumeration (CWE) и официально совместим с CWE. Он поддерживает различные форматы вывода, включая SARIF, SonarQube и HTML.

Flawfinder можно использовать вместе с инструментами анализа кода на основе ИИ. Вывод Flawfinder можно использовать для быстрого определения тех участков кода, которые заслуживают более пристального внимания, а затем ИИ может изучить их более детально.

Для получения дополнительной информации посетите веб-сайт проекта.

Платформы

Flawfinder предназначен для использования в системах Unix/Linux/POSIX (включая Cygwin, системы на базе Linux, MacOS и различные BSD) в качестве инструмента командной строки. Он требует Python (мы тестируем с Python 3; Python 2.7 должен работать, но это всё реже проверяется).

Установка

Если вы просто хотите использовать его, вы можете установить flawfinder с помощью "pip" от Python или через менеджер пакетов вашей системы (flawfinder имеет пакеты для многих систем). Он также поддерживает простую установку по обычным правилам исходной установки make install. В файле INSTALL.md приведены более подробные инструкции по установке. Вам не обязательно устанавливать его для запуска, но так проще всего.

Использование

Чтобы запустить flawfinder, просто укажите ему список исходных файлов или каталогов для проверки. Например, для проверки всех файлов в "src/" и рекурсивно вниз:

root@kitploit:~
flawfinder src/

Для проверки всех файлов в текущем каталоге и рекурсивно вниз:

root@kitploit:~
flawfinder ./

Совпадениям (находкам) присваивается уровень риска от 0 (очень низкий риск) до 5 (высокий риск). По умолчанию показываются находки с уровнем риска 1 и выше. Вы можете показать только совпадения с уровнем риска 4 и выше в текущем каталоге и ниже следующим образом:

root@kitploit:~
flawfinder --minlevel 4 ./

Страница руководства (flawfinder.1 или flawfinder.pdf) описывает, как использовать flawfinder (включая его различные опции) и связанную информацию (например, как он поддерживает CWE). Например, опция --html генерирует вывод в формате HTML. Опция --help выводит краткий список опций.

Ошибки кодировки символов

Flawfinder должен правильно интерпретировать кодировку символов вашего исходного кода. В подавляющем большинстве случаев это не проблема, особенно если исходный код правильно закодирован в UTF-8, а ваша система настроена на использование UTF-8 (самая распространённая ситуация).

Однако возможно, что flawfinder остановится, если возникнет проблема с кодировкой символов, и вы используете Python3. Обычный симптом — сообщения об ошибках следующего вида: Error: encoding error in FILENAME 'ENCODING' codec can't decode byte ... in position ...: invalid start byte

К сожалению, Python3 не предоставляет полезных встроенных средств для решения этой проблемы. Поэтому решить её без использования внешних библиотек (которых мы стараемся избегать) нетривиально.

Если у вас возникла эта проблема, обратитесь к странице руководства flawfinder, где приведён набор различных решений. Одно из самых простых — просто преобразовать исходный код и системную конфигурацию в UTF-8. Вы можете преобразовать исходный код в UTF-8 с помощью таких инструментов, как системная утилита iconv или программа на Python cvt2utf; установить cvt2utf можно с помощью pip install cvt2utf.

Под капотом

Если говорить более технически, flawfinder использует лексическое сканирование для поиска токенов (таких как имена функций), которые указывают на возможные уязвимости, оценивает их уровень риска (например, по тексту вызовов функций) и сообщает результаты. Flawfinder не использует и не имеет доступа к большей части информации о потоке управления, потоке данных, типах данных, пространствах имён и областях видимости. Таким образом, flawfinder неизбежно будет выдавать много ложных срабатываний на уязвимости и не сможет сообщить о многих уязвимостях. С другой стороны, flawfinder может находить уязвимости в программах, которые невозможно собрать или слинковать. Flawfinder также не так сильно путается в большинстве макроопределений и других особенностях, с которыми более сложные инструменты испытывают трудности.

Flawfinder GitHub Action

Для тех, кто использует GitHub, доступно GitHub Action.

Использование

См. action.yml

Создайте файл .yml в каталоге .github/workflows со следующим содержимым:

Базовый пример:

root@kitploit:~
- name: flawfinder_scan
  uses: david-a-wheeler/[email protected]
  with:
    arguments: '--sarif ./'
    output: 'flawfinder_results.sarif'

Вы можете добавить множество других дополнений к аргументам. Например, --error-level=4 приведёт к возврату ошибки, если flawfinder обнаружит уязвимость уровня 4 или выше. Обратите внимание на номер версии после символа @; вы можете выбрать другую версию.

Вы можете найти имя действия и строку версии в Marketplace, нажав кнопку "Use latest/xxx version".

Входные параметры:

  • arguments: Аргументы команды Flawfinder
  • output: Имя файла вывода Flawfinder. Может быть загружен в GitHub.

Интеграция с SonarQube

Flawfinder интегрируется с плагином cxx от SonarQube. Добавьте правила Flawfinder в SonarQube в разделе "Administration > CXX External Analyers > Other Rule Definitions", запустив Flawfinder один раз со следующими параметрами.

root@kitploit:~
flawfinder --listrules --sonar [...]

Затем в вашем CI/CD запустите Flawfinder следующим образом, чтобы сгенерировать вывод, понятный SonarQube.

root@kitploit:~
flawfinder -CDQ --sonar [...]

Вы можете перенаправить вывод в файл, который затем можно загрузить в SonarQube через опцию sonar.cxx.other.reportPaths.

Вклад

Мы приветствуем вклад! Для получения дополнительной информации о том, как внести вклад, обратитесь к файлу CONTRIBUTING.md.

Лицензия

Flawfinder выпущен под лицензией GNU GPL версии 2 или более поздней (GPL-2.0+). См. файл COPYING для получения информации о лицензии.

Скачать инструмент