2017-12-21 4 views
1

Wie kann ich bei einer PowerShell-Abfrage die Anzahl neuer kritischer oder hoher Sicherheitslücken von einem Fortify-Sicherheits-Scan von .NET-Code ermitteln? Die Abfrage sollte keine bereits auf dem SSC-Server gefundenen Ergebnisse enthalten, die als "kein Problem" oder "unterdrückt" dokumentiert wurden.Wie wird ein TFS-Build basierend auf Fortify-Scan-Ergebnissen fehlgeschlagen?

Wir haben Team Foundation Server 2017u2. Im Rahmen unseres Build- und Release-Prozesses führen wir HP/Micro Focus Fortify-Sicherheitsscans durch und laden die Ergebnisse auf den Fortify-SSC-Server hoch. Wir versuchen, den Build/Release fehlzuschlagen, wenn der Scanner neue kritische oder hohe Ergebnisse im Code erkennt. Wir verwenden das Micro Focus Fortify-Plugin für TFS, um den Scan-Schritt zu konfigurieren und auf SSC hochzuladen: (Fortify TFS plugin). Wir haben anschließend eine PowerShell-Aufgabe hinzugefügt, um nach Ergebnissen zu suchen und die Erstellung bei Bedarf fehlschlagen zu lassen.

Die Beispiele und Vorschläge, die wir gefunden haben, verwenden die FPRUtility, um die von unserem aktuellen Scan generierte .fpr-Datei abzufragen. Dieser aktuelle Scan enthält jedoch keine zuvor eingegebenen Inhalte von Entwicklern, die falsch positive oder unterdrückte Probleme dokumentieren. Dies führt dazu, dass unsere Builds immer versagen.

Ich habe versucht, durch die REST API docs zu sehen, aber während Swagger macht es einfach, die Parameter und Verträge zu sehen, kann ich keine gute Dokumentation finden, die angibt, was alle verschiedenen Controller sind oder wie ich eine Reihe von zu koordinieren Anrufe, um die Daten zu bekommen, die ich möchte.

Antwort

1

Ich fand die Antwort, die ich brauchte. Nach dem Scannen und laden zu SSC abgeschlossen ist, Sie die Probleme REST-API von Ihrem Powershell-Skript in diesem Format nennen:

[host:port]/ssc/api/v1/projectVersions/[versionid]/issues?q=[fortify+priority+order]:high+OR+[fortify+priority+order]:critical&qm=issues 

So ein vereinfachtes Powershell-Skript, dies zu tun in einem Schritt TFS bauen wie folgt aussieht:

$jsonResults = Invoke-RestMethod -Method Get -Uri "https://{host:port}/ssc/api/v1/projectVersions/{projectVersionNumberHere}/issues?q=[fortify+priority+order]:high+OR+[fortify+priority+order]:critical&qm=issues" 
    $undocumentedFindings = $jsonResults.data | where {$_.primaryTag -eq $null} 
    if ($undocumentedFindings.Count -gt 0) 
    { 
     Write-Error "Fortify detected $undocumentedFindings.Count undocumented critical and high vulnerabilities. These findings must be remediated or documented before the build can continue." 
    } 
+0

Sollte jetzt OK sein :) –

+0

Got it! Vielen Dank! – pwil301

Verwandte Themen