Maven ist eine tolle Erfindung. Abhängigkeiten und Versionen deklarieren und den Rest erledigt der Mechanismus ganz im Hintergrund. Im Laufe des Projekt-Lebens lassen sich neue Abhängigkeiten ganz einfach per zusätzlichem XML Eintrag hinzufügen; logisch das man dabei in aller Regel die neueste Version der Bibliothek nimmt die in der verwendeten Architektur möglich ist. Aber Moment… die bestehenden Abhängigkeiten, die teilweise schon Jahre alt sind, sollte man die vielleicht nicht auch mal anheben? Selbst wenn wir keine Features vermissen, kritische Fehler wollen wir doch in unseren Abhängigkeiten und damit in unserer Anwendung nicht dulden…
Eine regelmäßige Kontrolle der Versionen unserer Bibliotheken macht natürlich aus Sicherheitsaspekten Sinn. Dafür sollten wir uns natürlich etwas Hilfe holen, ein Beispiel dafür
OWASP Dependency Check
Eine Organisation die sich um die Analyse und vor allem Protokollierung von Sicherheitslücken in Software kümmert. Passend dazu werden Plugins für Ant, Maven und Jenkins geboten. Die Integration zum Beispiel in Maven ist relativ einfach:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>5.2.4</version>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
natürlich lässt sich hier noch eine ganze Menge mehr einstellen ( Doku ). Mit einem entsprechenden Maven-Aufruf
mvn org.owasp:dependency-check-maven:check
Generiert unser Plugin nun ein ansehnliches HTML-Protokoll, auf dessen Basis wir prüfen und entscheiden können, ob die Portierung unserer Bibliotheken notwendig ist:
Das passende Jenkins-Plugin lässt sich darüber hinaus auch mit entsprechenden Schwellwerten versehen um z.B. im NightlyBuild Fehler / Warnung auszugeben und den viel beschäftigten Entwickler auf Handlungsbedarf aufmerksam zu machen 😉