Automatische Überprüfung auf Sicherheitslücken im Java Code auf Basis der Internationalen National Vulnerability Database (NVD)

Erstellt am 25. Oktober 2017 von It_berater

Sicherheit in Java-Projekten. Datenlecks in Java-Code entdecken. Reports mit bekannten Sicherheitslecks können leicht erstellt werden. Hier mal ein Beispiel Report im HTML Format:

Grundlage bildet die National Vulnerability Database (NVD) Datenbank für Sicherheitslücken, die vom National Institute of Standards and Technology (NIST) gepflegt wird. Wie können solche Reports erstellt werden?

Einfach in der Maven pom.xml das folgende Plugin DependencyCheck ergänzen:

<!-- https://jeremylong.github.io/DependencyCheck/dependency-check-maven/index.html -->
			 <plugin>
              <groupId>org.owasp</groupId>
              <artifactId>dependency-check-maven</artifactId>
              <version>3.0.1</version>
              <executions>
                  <execution>
                      <goals>
                          <goal>check</goal>
                      </goals>
                  </execution>
              </executions>
            </plugin>

Dann ein mvn install oder auch direkt ein mvn org.owasp:dependency-check-maven:1.4.0:aggregate ausführen, hier ein Auszug:

[INFO] --- dependency-check-maven:3.0.1:check (default) @ de.wenzlaff.umgebung ---
[INFO] Checking for updates
[INFO] starting getUpdatesNeeded() ...
[INFO] Download Started for NVD CVE - Modified
[INFO] Download Complete for NVD CVE - Modified  (7283 ms)
[INFO] Processing Started for NVD CVE - Modified
[INFO] Processing Complete for NVD CVE - Modified  (5306 ms)
[INFO] Begin database maintenance.
[INFO] End database maintenance.
[INFO] Check for updates complete (18259 ms)
[INFO] Analysis Started
[INFO] Finished Archive Analyzer (0 seconds)
[INFO] Finished File Name Analyzer (0 seconds)
[INFO] Finished Jar Analyzer (0 seconds)
[INFO] Finished Central Analyzer (3 seconds)
[INFO] Finished Dependency Merging Analyzer (0 seconds)
[INFO] Finished Version Filter Analyzer (0 seconds)
[INFO] Finished Hint Analyzer (0 seconds)
[INFO] Created CPE Index (1 seconds)
[INFO] Finished CPE Analyzer (1 seconds)
[INFO] Finished False Positive Analyzer (0 seconds)
[INFO] Finished Cpe Suppression Analyzer (0 seconds)
[INFO] Finished NVD CVE Analyzer (0 seconds)
[INFO] Finished Vulnerability Suppression Analyzer (0 seconds)
[INFO] Finished Dependency Bundling Analyzer (0 seconds)
[INFO] Analysis Complete (5 seconds)
[WARNING] 

One or more dependencies were identified with known vulnerabilities in RestUmgebung:

jackson-dataformat-xml-2.4.4.jar (cpe:/a:fasterxml:jackson:2.4.4, com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.4.4) : CVE-2016-7051, CVE-2016-3720

See the dependency-check report for more details.

[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ de.wenzlaff.umgebung ---
[INFO] Installing /Users/../target/de.wenzlaff.umgebung-1.0-SNAPSHOT.jar to /Users/../.m2/repository/de/wenzlaff/umgebung/de.wenzlaff.umgebung/1.0-SNAPSHOT/de.wenzlaff.umgebung-1.0-SNAPSHOT.jar
[INFO] Installing /Users/.../TWRestUmgebung/pom.xml to /Users/thomaswenzlaff/.m2/repository/de/wenzlaff/umgebung/de.wenzlaff.umgebung/1.0-SNAPSHOT/de.wenzlaff.umgebung-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 36.106 s
[INFO] Finished at: 2017-10-24T23:27:58+02:00
[INFO] Final Memory: 34M/577M
[INFO] ------------------------------------------------------------------------

Beim ersten mal kann es schon ein paar Minuten dauern, da die ganze DB in das lokale .m Repo geladen werden muss. Beim zweiten mal geht es dannn schneller, da nur noch ein update gefahren wird. Und schon liegt der HTML-Report (wie oben) im target Verzeichnis und kann mit einem Browser geöffnet und analysiert werden.

Ähnliche Artikel:

  1. Wie können alle transitiven Abhängigkeiten eines Projektes mit Maven angezeigt werden?
  2. Standalone RESTful Server und Client mit dem Restlet Framework
  3. Anzahl der Flugzeuge mit 3 Zeilen Java Code ausgeben via REST API mit Jersey und JDom 2.0