
Инструмент сканирования безопасности/уязвимостей/рисков проекта
Существуют более современные варианты для вас и вашего проекта. Если вы хотите взять на себя поддержку проекта, пожалуйста, свяжитесь со мной. Вы найдете способы связаться со мной на моей личной странице.
.
.
.
.
.
.
Hawkeye scanner-cli — это инструмент для выявления проблем безопасности, уязвимостей и общих рисков в проекте. Он предназначен для интеграции в ваши pre-commit хуки и пайплайны.
Hawkeye scanner-cli предполагает, что структура вашего каталога такова, что файлы инструментария находятся на верхнем уровне. Примерно это сводится к следующему:
package.json на верхнем уровнеGemfile на верхнем уровнеrequirements.txt на верхнем уровнеcomposer.lock на верхнем уровнеbuild (gradle) или target (maven) и содержать файлы .java и .jarbuild (gradle) или target (maven) и содержать файлы .kt и .jartarget (sbt с плагинами sbt-native-packager или sbt-assembly) и содержать файлы .scala и .jar. Пример работающего демо можно найти в этом репозитории.Cargo.toml на верхнем уровнеЭто не исчерпывающий список, так как иногда инструментам требуются дополнительные файлы. Чтобы понять, как модули принимают решение о том, могут ли они обработать проект, пожалуйста, ознакомьтесь с разделом Как это работает и папкой модули.
Docker-образ — это самый простой способ использования сканера. Обратите внимание, что корень вашего проекта (например, $PWD) должен быть смонтирован в /target.
docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest
Если вы используете сканер для записи JSON (с помощью флагов CLI -j и --json и настройки json в .hawkeyerc), убедитесь, что он использует правильные UID и GID с помощью docker run -u $(id -u):$(id -g). В противном случае это может привести к появлению неудаляемых файлов, например, при запуске в Jenkins.
Сборка Docker также является рекомендуемым способом запуска сканера в ваших CI-пайплайнах. Вот пример запуска Hawkeye против одного из ваших проектов в GoCD:
<pipeline name="security-scan">
<stage name="Hawkeye" cleanWorkingDir="true">
<jobs>
<job name="scan">
<tasks>
<exec command="docker">
<arg>pull</arg>
<arg>hawkeyesec/scanner-cli</arg>
<runif status="passed" />
</exec>
<exec command="bash">
<arg>-c</arg>
<arg>docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest</arg>
<runif status="passed" />
</exec>
</tasks>
</job>
</jobs>
</stage>
</pipeline>
Вы можете установить и запустить hawkeye в Node.js проекте с помощью
npm install --save-dev @hawkeyesec/scanner-cli
npx hawkeye scan
Этот метод рекомендуется в Node.js проектах, где другие инструментальные цепочки (например, python, ruby) не требуются.
При использовании этого метода также рекомендуется вызывать сканер в git pre-commit хуке (например, с помощью пакета pre-commit), чтобы отклонить коммит при обнаружении проблем.
Вы можете настроить сканер с помощью файлов .hawkeyerc и .hawkeyeignore в корне вашего проекта.
Файл .hawkeyerc — это JSON-файл, который позволяет настроить ...
{
"all": true|false,
"staged": true|false,
"modules": ["files-ccnumber", "java-owasp", "java-find-secbugs"],
"sumo": "http://your.sumologic.foobar/collector",
"http": "http://your.logger.foobar/collector",
"json": "log/results.json",
"failOn": "low"|"medium"|"high"|"critical",
"showCode": true|false
}
Файл .hawkeyeignore — это набор регулярных выражений, соответствующих путям и кодам ошибок модулей, которые следует исключить из сканирования. Он эквивалентен использованию флага --exclude. Строки, начинающиеся с #, считаются комментариями.
Обратите внимание, что любые специальные символы, зарезервированные в регулярных выражениях (-[]{}()*+?.,^$|#\s), должны быть экранированы при использовании в качестве литералов!
Также обратите внимание, что коды ошибок модулей обычно не отображаются, так как они не являются первостепенно важными для пользователя. Если вы хотите исключить определенное ложное срабатывание, вы можете отобразить коды ошибок модулей с помощью флага --show-code или свойства showCode в файле .hawkeyerc.
^test/
# это комментарий
^README.md
Используйте hawkeye modules, чтобы вывести список доступных модулей и их статус.
> npx hawkeye modules
[info] Version: v1.4.0
[info] Module Status
[info] Enabled: files-ccnumber
[info] Scans for suspicious file contents that are likely to contain credit card numbers
[info] Enabled: files-contents
[info] Scans for suspicious file contents that are likely to contain secrets
[info] Disabled: files-entropy
[info] Scans files for strings with high entropy that are likely to contain passwords
[info] Enabled: files-secrets
[info] Scans for suspicious filenames that are likely to contain secrets
[info] Enabled: java-find-secbugs
[info] Finds common security issues in Java code with findsecbugs
[info] Enabled: java-owasp
[info] Scans Java projects for gradle/maven dependencies with known vulnerabilities with the OWASP dependency checker
[info] Enabled: node-npmaudit
[info] Checks node projects for dependencies with known vulnerabilities
[info] Enabled: node-npmoutdated
[info] Checks node projects for outdated npm modules
[info] Enabled: node-yarnaudit
[info] Checks yarn projects for dependencies with known vulnerabilities
[info] Enabled: node-yarnoutdated
[info] Checks node projects for outdated yarn modules
[info] Enabled: php-security-checker
[info] Checks whether the composer.lock contains dependencies with known vulnerabilities using security-checker
[info] Enabled: python-bandit
[info] Scans for common security issues in Python code with bandit.
[info] Enabled: python-piprot
[info] Scans python dependencies for out of date packages
[info] Enabled: python-safety
[info] Checks python dependencies for known security vulnerabilities with the safety tool.
[info] Enabled: ruby-brakeman
[info] Statically analyzes Rails code for security issues with Brakeman.
[info] Enabled: ruby-bundler-scan
[info] Scan for Ruby gems with known vulnerabilities using bundler
Используйте hawkeye scan, чтобы запустить сканирование:
> npx hawkeye scan --help
[info] Version: v1.3.0
Usage: hawkeye-scan [options]