[JAVA] Umgang mit E / A-Ausnahme: Zurücksetzen der Verbindung im OWASP-Befehlszeilentool zur Abhängigkeitsprüfung

Wir haben die Aktionen zusammengefasst, die ausgeführt werden müssen, wenn beim Ausführen eines Tools namens OWASP-Abhängigkeitsprüfung ein Fehler auftritt (E / A-Ausnahme: Zurücksetzen der Verbindung).

Grob gesagt trat ein Fehler auf, weil das in der Umgebung verwendete JDK die von der Site, von der die Sicherheitsanfälligkeitsinformationen abgerufen wurden, angegebene Verschlüsselungssuite nicht unterstützen konnte. Die Lösung bestand darin, eine Bibliothek namens BouncyCastle hinzuzufügen, die eine API für die Verschlüsselung des JDK der Umgebung bereitstellt.

Ursprünglich arbeitete ich an der Zusammenarbeit zwischen Vuls und OWASP Dependency Check. https://vuls.io/docs/ja/usage-scan-non-os-packages.html#usage-integrate-with-owasp-dependency-check-to-automatic-update-when-the-libraries-are-updated-experimental

Debug-Trace-Auszug

ERROR - IO Exception: Connection reset
2018-03-08 10:28:05,137 org.owasp.dependencycheck.utils.Downloader:280
DEBUG - Exception details
java.net.SocketException: Connection reset
  at java.net.SocketInputStream.read(SocketInputStream.java:197)
  at java.net.SocketInputStream.read(SocketInputStream.java:122)
  at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
  at sun.security.ssl.InputRecord.read(InputRecord.java:480)
  at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:944)
  at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1342)
  at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1369)
  at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1353)
  at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
  at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
  at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
  at org.owasp.dependencycheck.utils.Downloader.getLastModified(Downloader.java:268)
  at org.owasp.dependencycheck.utils.Downloader.getLastModified(Downloader.java:235)
  at org.owasp.dependencycheck.data.update.NvdCveUpdater$TimestampRetriever.call(NvdCveUpdater.java:507)
  at org.owasp.dependencycheck.data.update.NvdCveUpdater$TimestampRetriever.call(NvdCveUpdater.java:480)
  at java.util.concurrent.FutureTask.run(FutureTask.java:262)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
  at java.lang.Thread.run(Thread.java:748)

In derselben Situation gab es ein Problem. https://github.com/jeremylong/DependencyCheck/issues/561

Es ist lang, aber immerhin https://github.com/jeremylong/DependencyCheck/issues/561#issuecomment-257045439 Es gab nicht genug Hüpfburg.

Es gibt auch einen Kommentar, dass es in Ordnung ist, weil das neueste OpenJDK enthalten ist. https://github.com/jeremylong/DependencyCheck/issues/561#issuecomment-267774165

Ursache

https://stackoverflow.com/questions/40305004/java-tls-connection-reset-using-some-jdks

Das Zurücksetzen der Verbindung wurde festgelegt, da das JDK die von nvd.nist.gov verwendete TLS-Kommunikationsverschlüsselungssuite, die die Informationen zur Sicherheitsanfälligkeit bereitstellte, nicht unterstützen konnte.

Bewältigung

Es ist in Ordnung, wenn das JDK die entsprechende Verschlüsselungssuite unterstützt.

Weise https://stackoverflow.com/questions/31971499/ecdhe-cipher-suites-not-supported-on-openjdk-8-installed-on-ec2-linux-machine

Füge Hüpfburg zu JDK hinzu

Japanisches Verfahren https://www.intra-mart.jp/document/library/sso/public/im_sso_setup_guide/texts/install/login_server_config/security_provider/index.html

Hinweis: Wo werden bcprov-jdkXX-YYY.jar und java.security unter Amazon Linux abgelegt?

$ type java
java is /usr/bin/java
$ ls -lha /usr/bin/java
lrwxrwxrwx 1 root root 22 August 13 2017/usr/bin/java -> /etc/alternatives/java*
$ ls -lha /etc/alternatives/java
lrwxrwxrwx 1 root root 46 13. August 2017/etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java*
$ cd /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/lib/ext # <-Bcprov hier-jdkXX-YYY.Stellen Sie das Glas auf
$ vim /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/lib/security/java.security # <- java.Sicherheitsstandort

Aktuelle Schritte

$ cd /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/lib/ext
$ sudo wget http://www.bouncycastle.org/download/bcprov-jdk15on-159.jar
$ sudo vim /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/lib/security/java.security
  #
  # List of providers and their preference orders (see above):
  #
  security.provider.1=sun.security.provider.Sun
  security.provider.2=sun.security.rsa.SunRsaSign
  security.provider.3=sun.security.ec.SunEC
  security.provider.4=com.sun.net.ssl.internal.ssl.Provider
  security.provider.5=com.sun.crypto.provider.SunJCE
  security.provider.6=sun.security.jgss.SunProvider
  security.provider.7=com.sun.security.sasl.Provider
  security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
  security.provider.9=sun.security.smartcardio.SunPCSC
+ security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
  # the NSS security provider was not enabled for this build; it can be enabled
  # if NSS (libnss3) is available on the machine. The nss.cfg file may need

Führe es nochmals aus

$ ./dependency-check/bin/dependency-check.sh -f XML -o ./result.xml -s /web/current/api/current --project dev-api -l ./owasp.log
[ERROR] Exception from bundle-audit process: java.io.IOException: Cannot run program "bundle-audit" (in directory "/tmp/dctemp668de20e-5168-4592-ada8-6b73ba425d34"): error=2,Es gibt keine solche Datei oder kein solches Verzeichnis. Disabling Ruby Bundle Audit Analyzer

Ich habe einen Fehler erhalten, aber der Fehler war, dass ich Ruby in der zu scannenden Umgebung verwendet habe und das Bundle-Audit nicht ausgeführt werden konnte.

https://rubygems.org/gems/bundler-audit

Inzwischen sollten Sie den Titelfehler behoben haben.

Installieren Sie Bundler-Audit

Darüber hinaus werden auch die Einstellungen für das Bundle-Audit beschrieben. Ist es einfach.

$ sudo gem install bundler-audit

Führe es nochmals aus

Ändern Sie das Ausgabeziel des Ergebnisses in /tmp/result.xml

$ ./dependency-check/bin/dependency-check.sh -f XML -o /tmp/result.xml -s /web/current/api/current --project dev-api -l ./owasp02.log

Es endete normal.

das ist alles.

Recommended Posts

Umgang mit E / A-Ausnahme: Zurücksetzen der Verbindung im OWASP-Befehlszeilentool zur Abhängigkeitsprüfung
Erstellen Sie eine Befehlszeilen-App mit maven