
Uma ferramenta de varredura de segurança/vulnerabilidade/risco de projetos.
Existem opções mais modernas disponíveis para você e seu projeto. Se desejar assumir a manutenção do projeto, sinta-se à vontade para entrar em contato comigo. Você encontrará formas de me contatar na minha página pessoal.
.
.
.
.
.
.
O scanner-cli do Hawkeye é uma ferramenta de segurança de projeto, vulnerabilidade e destaque de risco geral. Ele é destinado a ser integrado em seus hooks de pré-commit e em suas pipelines.
O scanner-cli do Hawkeye assume que sua estrutura de diretórios mantém os arquivos da toolchain no nível superior. Basicamente, é isso que se resume a:
package.json no nível superiorGemfile no nível superiorrequirements.txt no nível superiorcomposer.lock no nível superiorbuild (gradle) ou target (maven) e incluirão arquivos .java e .jarbuild (gradle) ou target (maven) e incluirão arquivos .kt e .jartarget (sbt com plugins sbt-native-packager ou sbt-assembly) e incluirão
arquivos .scala e .jar. Confira este repositório para uma demonstração em execução.Cargo.toml no nível superiorIsso não é exaustivo, pois às vezes as ferramentas exigem que outros arquivos existam. Para entender como os módulos decidem se podem lidar com um projeto, consulte a seção Como funciona e a pasta módulos.
A imagem docker é de longe a maneira mais fácil de usar o scanner. Observe que a raiz do seu projeto (ex.: $PWD) precisa ser montada em /target.
docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest
Se você está usando o scanner para escrever um JSON (através das flags de CLI -j e --json e da configuração json no .hawkeyerc), certifique-se de que ele usa o UID e GID corretos via docker run -u $(id -u):$(id -g). Caso contrário, isso pode deixar arquivos indeletáveis, por exemplo, ao executar no Jenkins.
A build docker também é a maneira recomendada de executar o scanner em suas pipelines de CI. Este é um exemplo de execução do Hawkeye em um de seus projetos no 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>
Você pode instalar e executar o hawkeye em um projeto Node.js através de
npm install --save-dev @hawkeyesec/scanner-cli
npx hawkeye scan
Este método é recomendado em um projeto Node.js, onde as outras toolchains (ex.: python, ruby) não são necessárias.
Com este método, também é recomendado invocar o scanner em um hook de pré-commit do git (ex.: através do pacote pre-commit) para falhar o commit se forem encontrados problemas.
Você pode configurar o scanner através dos arquivos .hawkeyerc e .hawkeyeignore na raiz do seu projeto.
O arquivo .hawkeyerc é um arquivo JSON que permite configurar ...
{
"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
}
O arquivo .hawkeyeignore é uma coleção de expressões regulares que correspondem a caminhos e códigos de erro do módulo para excluir da verificação, e é equivalente a usar a flag --exclude. Linhas começando com # são consideradas comentários.
Por favor, observe que quaisquer caracteres especiais reservados em expressões regulares (-[]{}()*+?.,^$|#\s) precisam ser escapados quando usados como literal!
Observe também que os códigos de erro do módulo geralmente não são exibidos, pois não são principalmente relevantes para o usuário. Se você quiser excluir um determinado falso positivo, pode exibir os códigos de erro do módulo com a flag --show-code ou a propriedade showCode no .hawkeyerc.
^test/
# isto é um comentário
^README.md
Use hawkeye modules para listar os módulos disponíveis e seu status.
> 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
Use hawkeye scan para iniciar uma varredura:
> npx hawkeye scan --help
[info] Version: v1.3.0
Usage: hawkeye-scan [options]