Ogni libreria terza parte utilizzata da GovWay viene sottoposta a verifica di possibile presenza di vulnerabilità di sicurezza note tramite il tool OWASP Dependency-Check. la cui configurazione può essere consultata nel file mvn/dependencies/pom.xml.
Il tool è configurato per utilizzare le seguenti base dati di vulnerabilità note:
- National Vulnerability Database;
- Github Advisory Database (via NPM Audit API);
- RetireJS;
- Sonatype OSS Index;
- CISA Known Exploited Vulnerabilities Catalog.
L'analisi viene effettuata in automatico ad ogni commit sul master dei sorgenti del progetto, come descritto nella sezione releaseProcessGovWay_thirdPartyDynamicAnalysis_ci
.
La verifica può essere attivata anche manualmente, effettuando il checkout dei sorgenti del progetto GovWay come descritto nella sezione releaseProcessGovWay_thirdPartyDynamicAnalysis_maven
.
Nel caso in cui il processo di verifica, descritto nella sezione releaseProcessGovWay_thirdPartyDynamicAnalysis_ci
, rilevasse una vulnerabilità, viene avviata una gestione della vulnerabilità come descritto in vulnerabilityManagement
.
Altrimenti, se a valle dell'analisi della vulnerabilità rilevata, si riscontrasse un falso positivo (vulnerabilityManagement_skip_registry
), questa verrebbe registrata come tale nella configurazione del tool OWASP Dependency-Check, in modo che successive verifiche non ne segnalino più la presenza. Maggiori dettagli sulla modalità di registrazione dei falsi positivi nel tool OWASP Dependency-Check vengono forniti nella sezione releaseProcessGovWay_thirdPartyDynamicAnalysis_skip
.
Note
Per evitare che il progetto erediti possibili vulnerabilità da software terze parti non utilizzati, tutte e sole le librerie terza parte utilizzate nel progetto govway sono definite puntualmente nei file mvn/dependencies/*/pom.xml.
Per ognuna di tali librerie, maven è configurato per il download puntuale del solo archivio jar interessato, escludendo esplicitamente il download ricorsivo degli archivi jar indicati come dipendenze, utilizzando l'elemento 'exclusions', come mostrato di seguito:
<dependency>
<groupId>...</groupId>
<artifactId>....</artifactId>
<version>....</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
ci_jenkins maven skip