Gestione dei Falsi Positivi

Librerie utilizzate solo a scopo di test

Le librerie terza parte utilizzate solamente nelle testsuite interne del prodotto, che non insistono negli archivi binari rilasciati, non vengono considerate tra i check di vulnerabilità. Il motivo risiede nel fatto che alcune batterie di test richiedono versioni storiche di librerie, alcune delle quali possiedono anche vulnerabilità.

In OWASP Dependency-Check, le librerie di test sono marcate con lo scope “test” e vengono automaticamente escluse dalla verifica. In OSV-Scanner, le directory contenenti dipendenze di solo test sono escluse tramite il parametro osv.scanner.exclude (per default: testsuite).

Esempio di dipendenza di test:

<dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.4</version>
        <exclusions>
                <exclusion>
                        <groupId>*</groupId>
                        <artifactId>*</artifactId>
                </exclusion>
        </exclusions>
        <scope>test</scope>
</dependency>

Falsi Positivi in OWASP Dependency-Check

Nell’utilizzo del plugin vengono aggiunte le configurazioni che permettono di registrare dei falsi positivi rispetto al progetto, individuati nella Introduzione. Di seguito il frammento del file mvn/dependencies/pom.xml che evidenza come venga utilizzato il plugin owasp configurato con i suppressionFiles:

<plugin>
        <groupId>org.owasp</groupId>
        <artifactId>dependency-check-maven</artifactId>
        <version>7.3.2</version>
        <executions>
            <execution>
                <id>check owasp</id>
                <phase>verify</phase>
                <configuration>
                    <autoUpdate>true</autoUpdate>
                    <failBuildOnAnyVulnerability>false</failBuildOnAnyVulnerability>
                    <outputDirectory>../../dependency-check-result</outputDirectory>
                    <format>ALL</format>
                    <suppressionFiles>
                        <suppressionFile>${owasp.falsePositives.dir}/xercesImpl.xml</suppressionFile>
                        <suppressionFile>${owasp.falsePositives.dir}/CVE-2022-45688.xml</suppressionFile>
                        ...
                    </suppressionFiles>
                </configuration>
                <goals>
                    <goal>aggregate</goal>
                </goals>
            </execution>
        </executions>
</plugin>

Ogni falso positivo registrato viene descritto nel registro dei falsi positivi disponibile in Falsi Positivi.

Falsi Positivi in OSV-Scanner

I falsi positivi per OSV-Scanner vengono registrati in file TOML nella directory mvn/dependencies/osv/falsePositives/, con un file per ogni tema o libreria. Il formato è il seguente:

# Motivazione dettagliata del falso positivo

[[IgnoredVulns]]
id = "CVE-XXXX-XXXXX"
reason = "Descrizione sintetica del motivo"

Lo script di integrazione Maven effettua automaticamente il merge di tutti i file TOML presenti nella directory e li passa al parametro --config di OSV-Scanner. Il campo id accetta sia identificativi CVE che GHSA (GitHub Security Advisory); OSV-Scanner filtra automaticamente anche gli alias associati.