
Uno strumento di scansione della sicurezza/vulnerabilità/rischio dei progetti.
Ci sono opzioni più moderne disponibili per te e il tuo progetto. Se desideri riprendere la manutenzione del progetto, sentiti libero di contattarmi. Troverai i modi per contattarmi sulla mia homepage personale.
.
.
.
.
.
.
Hawkeye scanner-cli è uno strumento per evidenziare la sicurezza del progetto, le vulnerabilità e i rischi generali. È pensato per essere integrato nei tuoi pre-commit hook e nelle tue pipeline.
Hawkeye scanner-cli presuppone che la struttura della directory sia tale da mantenere i file della toolchain al livello principale. In sintesi, ecco cosa si riduce a:
package.json al livello principaleGemfile al livello principalerequirements.txt al livello principalecomposer.lock al livello principalebuild (gradle) o target (maven) e includeranno file .java e .jarbuild (gradle) o target (maven) e includeranno file .kt e .jartarget (sbt con plugin sbt-native-packager o sbt-assembly) e includeranno file .scala e .jar. Consulta questo repository per una demo in esecuzione.Cargo.toml al livello principaleQuesto non è esaustivo poiché a volte gli strumenti richiedono ulteriori file per esistere. Per capire come i moduli decidono se possono gestire un progetto, consulta la sezione Come funziona e la cartella moduli.
L'immagine docker è di gran lunga il modo più semplice per utilizzare lo scanner. Nota che la root del progetto (es. $PWD) deve essere montata su /target.
docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest
Se stai usando lo scanner per scrivere un JSON (tramite i flag CLI -j e --json e l'impostazione json nel file .hawkeyerc), assicurati che utilizzi l'UID e GID corretti tramite docker run -u $(id -u):$(id -g). Altrimenti potresti ritrovarti con file non cancellabili, ad esempio durante l'esecuzione in Jenkins.
La build docker è anche il modo consigliato per eseguire lo scanner nelle tue pipeline CI. Questo è un esempio di esecuzione di Hawkeye su uno dei tuoi progetti in 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>
Puoi installare ed eseguire hawkeye in un progetto Node.js tramite
npm install --save-dev @hawkeyesec/scanner-cli
npx hawkeye scan
Questo metodo è consigliato in un progetto Node.js, dove non sono richieste altre toolchain (es. python, ruby).
Con questo metodo, si consiglia anche di invocare lo scanner in un git pre-commit hook (es. tramite il pacchetto pre-commit) per far fallire il commit se vengono trovati problemi.
Puoi configurare lo scanner tramite i file .hawkeyerc e .hawkeyeignore nella root del progetto.
Il file .hawkeyerc è un file JSON che ti permette di configurare ...
{
"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
}
Il file .hawkeyeignore è una raccolta di espressioni regolari che corrispondono a percorsi e codici di errore dei moduli da escludere dalla scansione, ed è equivalente all'uso del flag --exclude. Le righe che iniziano con # sono considerate commenti.
Nota che qualsiasi carattere speciale riservato nelle espressioni regolari (-[]{}()*+?.,^$|#\s) deve essere escapato quando usato come letterale!
Nota anche che i codici di errore dei moduli di solito non vengono mostrati, poiché non sono principalmente rilevanti per l'utente. Se desideri escludere un determinato falso positivo, puoi visualizzare i codici di errore dei moduli con il flag --show-code o la proprietà showCode nel file .hawkeyerc.
^test/
# questo è un commento
^README.md
Usa hawkeye modules per elencare i moduli disponibili e il loro stato.
> npx hawkeye modules
[info] Versione: v1.4.0
[info] Stato Moduli
[info] Abilitato: files-ccnumber
[info] Scansiona contenuti di file sospetti che probabilmente contengono numeri di carta di credito
[info] Abilitato: files-contents
[info] Scansiona contenuti di file sospetti che probabilmente contengono segreti
[info] Disabilitato: files-entropy
[info] Scansiona file per stringhe con alta entropia che probabilmente contengono password
[info] Abilitato: files-secrets
[info] Scansiona nomi di file sospetti che probabilmente contengono segreti
[info] Abilitato: java-find-secbugs
[info] Trova problemi di sicurezza comuni nel codice Java con findsecbugs
[info] Abilitato: java-owasp
[info] Scansiona progetti Java per dipendenze gradle/maven con vulnerabilità note utilizzando OWASP dependency checker
[info] Abilitato: node-npmaudit
[info] Verifica progetti node per dipendenze con vulnerabilità note
[info] Abilitato: node-npmoutdated
[info] Verifica progetti node per moduli npm obsoleti
[info] Abilitato: node-yarnaudit
[info] Verifica progetti yarn per dipendenze con vulnerabilità note
[info] Abilitato: node-yarnoutdated
[info] Verifica progetti node per moduli yarn obsoleti
[info] Abilitato: php-security-checker
[info] Verifica se composer.lock contiene dipendenze con vulnerabilità note utilizzando security-checker
[info] Abilitato: python-bandit
[info] Scansiona problemi di sicurezza comuni nel codice Python con bandit.
[info] Abilitato: python-piprot
[info] Scansiona dipendenze python per pacchetti obsoleti
[info] Abilitato: python-safety
[info] Verifica dipendenze python per vulnerabilità di sicurezza note con lo strumento safety.
[info] Abilitato: ruby-brakeman
[info] Analizza staticamente il codice Rails per problemi di sicurezza con Brakeman.
[info] Abilitato: ruby-bundler-scan
[info] Scansiona gemme Ruby con vulnerabilità note utilizzando bundler
Usa hawkeye scan per avviare una scansione:
> npx hawkeye scan --help
[info] Versione: v1.3.0
Utilizzo: hawkeye-scan [opzioni]