Ich habe einen sehr ungewöhnlichen Fehler im Zusammenhang mit dem verstärkten Scan. Es hat gestern Abend begonnen und ich habe mich sehr bemüht, es zu lösen, da es die Arbeit des gesamten Teams beeinflusst hat. Ich erhalte folgende Fehlermeldung in der Jenkins-Konsole.

Ich habe versucht, Fehler zu beheben, indem ich den Speicher und die Java-Heap-Größe mit dem folgenden Argument im Jenkins-Pipeline-Code erhöht habe, aber das hat auch nicht geholfen. fortifyMemory: '-Xmx6G -Xms2400M -Xss48M'.

Ich habe versucht, mehr Dateien mit auszuschließen sourceExclusions: 'src/main/resources/**/*.*, aber das hat auch nicht funktioniert.

Ich habe online festgestellt, dass möglicherweise die parallele Verarbeitung und das Ändern des Java-Versionstyps in 64-Bit-64 das Problem lösen könnte, konnte es jedoch in meiner Jenkins-Pipeline nicht ordnungsgemäß konfigurieren, da nicht viele Informationen verfügbar waren.

Bitte lassen Sie mich wissen, ob jemand weiß, wie diese beiden Flags in meinem Pipeline-Code unten übergeben werden, oder ob es dafür eine andere Lösung gibt.

stage('Fortify Scan') {
    agent {
        label 'docker-fortify-slave'
    }
    steps {
        unstash 'build'
        fortifyscanjava([
            useExternalDependencyDirectory: false,
            buildVersion: "${TAG_VAL}",
            fortifyCredentialsId: "fortify-credentials",

            fortifyJavaVersion: '1.8',

            sourceDirectory: "${env.WORKSPACE}/dist",
            sourceExclusions: '',
            criticalThreshold: 0,
            fortifyMemory: '-Xmx32G -Xms4800M -Xss196M',
            highThreshold: 0,
            mediumThreshold: 1000,
            lowThreshold: 1000,
            fortifyVersion: '17.20',
            failBuildAfterThresholdPassed: true,
            archiveReports: true,
            uploadScan: false,
            sourceAnalyzerArgs: '',
            onlyNewIssues: true,
            outputFormatHtml: true,
            additionalIssueFilters: 'analysis:!Not an Issue'
        ])
    }
}
3
10raw 19 Jän. 2019 im 18:41

3 Antworten

Beste Antwort

Fortify SCA beansprucht viel Speicher für das Scannen mittlerer bis großer Anwendungen.

Entfernen Sie in Ihrem Beispiel in Zeile 13 "fortifyMemory: '-Xmx1G -Xms600M -Xss24M -mt'".

Wenn möglich, erhöhen Sie Ihren Speicher um Zeile 17 auf "-Xmx16G" (oder was auch immer möglich ist). Werfen Sie im Grunde immer mehr Speicher auf das Problem, bis die Warnung / der Fehler "Nicht genügend Speicher" von Fortify verschwindet.

Ebenfalls...

Erklärung, was möglicherweise vor sich geht

Wenn Sie die Option '-mt' von SCA verstärken, möchten Sie den parallelen Analysemodus aktivieren, mit dem versucht werden soll, das Scannen Ihres Quellcodes zu beschleunigen, indem Sie mehrere Slave-Prozesse erstellen, um das Scannen zu unterstützen. Mit '-mt' erstellt Fortify automatisch 1 Slave-Prozess für jeden CPU-Kern auf Ihrem Host. Aufgrund Ihres '-Xmx1GB' weist Fortify jedem Prozess 1 GB Speicher zu. Der Fehler, den Sie sehen, kann also daran liegen, dass einem oder mehreren Slaves der Speicherplatz ausgeht.

Fazit:

Verwenden Sie für diesen ersten Scan nicht den parallelen Analysemodus. Deshalb entfernen wir in Ihrem Beispiel Zeile 13. Außerdem haben Sie die Einstellungen für die doppelte Speicherkonfiguration erneut in Zeile 17. Nachdem Sie einen Scan erfolgreich erstellt haben, versuchen Sie, die Speichermenge zurückzurufen, und versuchen Sie dann, mit dem parallelen Analysemodus zu spielen. Wenn Sie den parallelen Analysemodus verwenden, könnte eine Formel zur Ermittlung der Speicherzuweisung mit '-Xmx' wie folgt lauten: (- 2 GB) /

2
wtfacoconut 22 Jän. 2019 im 02:21

Vielleicht ist es in Ihrem Szenario besser, einen CloudScan zu verwenden.

https://www.microfocus.com/documentation/fortify-software-security-center/1820/CloudScan_Guide_18.20.pdf

"Die Übersetzungsphase, die prozessor- und zeitintensiv ist, wird auf der Build-Maschine abgeschlossen. Nach Abschluss der Übersetzung generiert CloudScan ein Paket, das dann in eine verteilte Cloud von Maschinen (Sensoren) zum Scannen verschoben wird. Zusätzlich zum Freigeben Mit diesem Prozess können Sie problemlos mehr Ressourcen in die Cloud einfügen und das System nach Bedarf erweitern, ohne den Erstellungsprozess unterbrechen zu müssen. Außerdem kann Fortify Software Security Center CloudScan anweisen, FPR-Dateien direkt auf dem Server auszugeben. "

0
Raphael Hagi 23 Apr. 2019 im 13:42

Während des Fortify-Scans kann ein System.OutOfMemoryException-Fehler auftreten.

Für .net-Dateien haben wir das Problem behoben, bei dem die in der Fortify-Scanphase verwendete Datei dotnet-translator.exe mit einem kleinen Tool namens 4gb_patch.exe gepatcht wurde. Das Tool patcht x86-ausführbare Dateien, damit sie auf x64-Plattformen 4 GB virtuellen Speicher haben (anstelle von 2 GB). Sie können das Tool von https://ntcore.com/?page_id=371 herunterladen.

Die Datei dotnet-translator.exe befindet sich an folgendem Speicherort: C: \ Programme \ HPE_Security \ Fortify_SCA_and_Apps_xx.xx \ Core \ private-bin \ sca \ dotnet-translator.exe

Natürlich müssen Sie XX.xx mit Ihrer Fortify SCA-Version ändern. ;)

0
Tom 19 März 2020 im 11:48