
Un outil de scan de sécurité/vulnérabilité/risque de projet
Il existe des options plus modernes pour vous et votre projet. Si vous souhaitez reprendre la maintenance du projet, n'hésitez pas à me contacter. Vous trouverez les moyens de me joindre sur ma page personnelle.
.
.
.
.
.
.
Le scanner-cli Hawkeye est un outil de mise en évidence des risques de sécurité, de vulnérabilité et de risques généraux d’un projet. Il est destiné à être intégré dans vos hooks pre-commit et vos pipelines.
Le scanner-cli Hawkeye suppose que la structure de votre répertoire est telle que les fichiers de la chaîne d'outils se trouvent au niveau supérieur. En gros, voici ce à quoi cela se résume :
package.json au niveau supérieurGemfile au niveau supérieurrequirements.txt au niveau supérieurcomposer.lock au niveau supérieurbuild (gradle) ou target (maven), et incluront des fichiers .java et .jarbuild (gradle) ou target (maven), et incluront des fichiers .kt et .jartarget (sbt avec les plugins sbt-native-packager ou sbt-assembly), et incluront des fichiers .scala et .jar. Consultez ce dépôt pour une démo fonctionnelle.Cargo.toml au niveau supérieurCette liste n'est pas exhaustive car parfois les outils nécessitent d'autres fichiers. Pour comprendre comment les modules décident s'ils peuvent traiter un projet, veuillez consulter la section Comment ça marche et le dossier modules.
L'image Docker est de loin le moyen le plus simple d'utiliser le scanner. Veuillez noter que votre racine de projet (par exemple $PWD) doit être montée dans /target.
docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest
Si vous utilisez le scanner pour écrire un JSON (via les drapeaux CLI -j et --json et le paramètre json dans .hawkeyerc), assurez-vous d'utiliser les UID et GID corrects via docker run -u $(id -u):$(id -g). Sinon, cela pourrait vous laisser avec des fichiers impossibles à supprimer, par exemple lors de l'exécution dans Jenkins.
La construction Docker est également le moyen recommandé d'exécuter le scanner dans vos pipelines CI. Voici un exemple d'exécution de Hawkeye sur l'un de vos projets dans 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>
Vous pouvez installer et exécuter hawkeye dans un projet Node.js via
npm install --save-dev @hawkeyesec/scanner-cli
npx hawkeye scan
Cette méthode est recommandée dans un projet Node.js, lorsque les autres chaînes d'outils (par exemple python, ruby) ne sont pas nécessaires.
Avec cette méthode, il est également recommandé d'invoquer le scanner dans un hook pre-commit git (par exemple via le package pre-commit) pour faire échouer le commit si des problèmes sont trouvés.
Vous pouvez configurer le scanner via les fichiers .hawkeyerc et .hawkeyeignore à la racine de votre projet.
Le fichier .hawkeyerc est un fichier JSON qui vous permet de configurer ...
{
"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
}
Le fichier .hawkeyeignore est une collection d'expressions régulières correspondant à des chemins et des codes d'erreur de module à exclure de l'analyse, et équivaut à utiliser le drapeau --exclude. Les lignes commençant par # sont considérées comme des commentaires.
Veuillez noter que tous les caractères spéciaux réservés dans les expressions régulières (-[]{}()*+?.,^$|#\s) doivent être échappés lorsqu'ils sont utilisés comme littéraux !
Veuillez également noter que les codes d'erreur des modules ne sont généralement pas affichés, car ils ne sont pas principalement pertinents pour l'utilisateur. Si vous souhaitez exclure un certain faux positif, vous pouvez afficher les codes d'erreur des modules avec le drapeau --show-code ou la propriété showCode dans .hawkeyerc.
^test/
# ceci est un commentaire
^README.md
Utilisez hawkeye modules pour lister les modules disponibles et leur état.
> 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
Utilisez hawkeye scan pour lancer une analyse :
> npx hawkeye scan --help
[info] Version: v1.3.0
Usage: hawkeye-scan [options]