Top-Logic verwendet etliche Fremd-Bibliotheken. Es ist viel zu aufwendig manuell zu prüfen, ob diese Sicherheitslücken haben. Daher soll das automatisiert werden. Anschließend müssen die dabei gefundenen Bibliotheken aktualisiert werden.
Umsetzung
Es gibt ein Maven Plugin, das für alle Abhängigkeiten prüft ob es bekannte Sicherheitslücken in den verwendeten Versionen gibt. Die Prüfung erfolgt rekursiv. Die Liste der bekannten Sicherheitslücken wird automatisch aktualisiert. Das Plugin selber muss dafür nicht jedes Mal aktualisiert werden. Angeboten wird das Maven Plugin vom "Open Web Application Security Project". Es steht unter der Apache 2 Lizenz. Links:
- [https://en.wikipedia.org/wiki/OWASP|OWASP]
- Seite]
- [https://jeremylong.github.io/DependencyCheck/dependency-check-maven/index.html|Dokumentation]
- Dokumentation]
Verwendung
- In tl-parent-all/pom.xml folgendes eintragen (unter <project><build><plugins>):
{{{#!xml <plugin> <groupId>org.owasp</groupId> <artifactId>dependency-check-maven</artifactId> <version>6.5.3</version> <configuration> <format>ALL</format> </configuration> </plugin> }}}
- Für alle Module ausführen: mvn dependency-check:check
- Die Berichte werden nach target/dependency-check-[...] geschrieben.
- Die gemeldeten Bibliotheken aktualisieren.
- Dafür sorgen, dass der Check automatisch regelmäßig ausgeführt wird und das Build bei Funden fehlschlägt: Jenkins-Target CheckDependencies
Suppression-File
In einem Suppression-File werden Sicherheitslücken eintragen, die aktuell (bis zu einem bestimmten Termin) nicht mehr erneut berichtet werden sollen. Dort sollten nur Unterdrückungen mit Ablaufdatum hinterlegt werden.
Dies unterstützt den folgenden Workflow: Eine neue Sicherheitslücke wird erkannt. Das Build schlägt mit einem Report fehl. Es wird ein Ticket für das Update dieser Bibliothek erstellt und eine Unterdrückung für diese Sicherheitslücke mit einem Ablaufdatum in das Suppression-File eingetragen. Das Build ist danach wieder grün. Wenn das Ticket nicht bis zu dem eingetragenen Ablaufdatum abgearbeitet ist, schlägt der Check erneut fehl und erinnert an das noch offene Sicherheitsproblem .Das Suppression-File wird in Trac gepflegt: DependencyCheckSuppressions
Details
Bei der Verwendung von <format>ALL</format> werden folgende Berichte erzeugt:
- dependency-check-junit.xml
- dependency-check-report.csv
- dependency-check-report.html
- dependency-check-report.json
- dependency-check-report.sarif
- dependency-check-report.xml
Die Datei dependency-check-junit.xml wird verwendet, um bei einer erkannten Sicherheitslücke einen Test fehlschlagen zu lassen und damit das Build als "unstable" zu markieren.
Die Datei dependency-check-report.html enthält einen detailierten Report, mit dem gegebenfalls auch eine Unterdrückung für das Suppression-File generiert werden kann.
Test
- In allen Anwendungen mvn dependency-check:check ausführen.
- Es dürfen keine Sicherheitslücken gemeldet werden.
- Prüfen, dass:
- der Jenkins diese Prüfung automatischen regelmäßig ausführt (Target CheckDependencies).
- das entsprechende Build bei Sicherheitslücken fehlschlägt
- wir darüber informiert werden.