.. _releaseProcessGovWay_thirdPartyDynamicAnalysis:
Third Party Dependency Analysis
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ogni libreria terza parte utilizzata da GovWay viene sottoposta a verifica di possibile presenza di vulnerabilità di sicurezza note tramite due tool complementari:
- `OWASP Dependency-Check `_: utilizza il matching CPE per associare le librerie alle vulnerabilità note. La sua configurazione può essere consultata nel file `mvn/dependencies/pom.xml `_.
- `OSV-Scanner `_ (Google): utilizza il matching per coordinate Maven (groupId:artifactId:version), più preciso del CPE per l'ecosistema Java. La sua configurazione può essere consultata nel file `mvn/dependencies/pom.xml `_ e nello script `mvn/dependencies/osv/osv-scanner.sh `_.
Il duplice controllo è necessario per massimizzare la copertura: i due tool utilizzano database e metodi di matching differenti, e ciascuno rileva vulnerabilità che l'altro potrebbe non individuare.
**OWASP Dependency-Check** è configurato per utilizzare le seguenti basi dati di vulnerabilità note:
- `National Vulnerability Database `_;
- `RetireJS `_;
- `CISA Known Exploited Vulnerabilities Catalog `_;
- `Github Advisory Database (via NPM Audit API) `_.
**OSV-Scanner** utilizza il database `OSV `_ che aggrega vulnerabilità da più fonti ecosystem-native:
- `GitHub Advisory Database `_;
- Maven Advisory;
- e altre fonti aggregate dalla piattaforma OSV.
L'analisi viene effettuata in automatico ad ogni commit sul `branch 3.4.x dei sorgenti del progetto `_, come descritto nella sezione :ref:`releaseProcessGovWay_thirdPartyDynamicAnalysis_ci`.
La verifica può essere attivata anche manualmente, effettuando il checkout dei `sorgenti del progetto GovWay `_ come descritto nella sezione :ref:`releaseProcessGovWay_thirdPartyDynamicAnalysis_maven`.
Nel caso in cui il processo di verifica, descritto nella sezione :ref:`releaseProcessGovWay_thirdPartyDynamicAnalysis_ci`, rilevasse una vulnerabilità, viene avviata una gestione della vulnerabilità come descritto in :ref:`vulnerabilityManagement`.
Altrimenti, se a valle dell'analisi della vulnerabilità rilevata, si riscontrasse un falso positivo (:ref:`vulnerabilityManagement_skip_registry`), questa verrebbe registrata come tale nella configurazione di entrambi i tool, in modo che successive verifiche non ne segnalino più la presenza. Maggiori dettagli sulla modalità di registrazione dei falsi positivi vengono forniti nella sezione :ref:`releaseProcessGovWay_thirdPartyDynamicAnalysis_skip`.
Oltre alla verifica delle vulnerabilità, il processo di build produce un **SBOM** (Software Bill of Materials) in formati CycloneDX e SPDX, come descritto nella sezione :ref:`releaseProcessGovWay_thirdPartyDynamicAnalysis_sbom`. L'SBOM documenta formalmente tutte le dipendenze del progetto.
.. 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:
::
...
....
....
*
*
.. toctree::
:maxdepth: 2
ci_jenkins
maven
skip
sbom