Dabei wird uns oft die Frage gestellt, wie ein statischer Analysator in der Entwicklung implementiert werden kann, damit
alles in Ordnung ist.
Wir haben bereits darüber gesprochen, warum ein statischer Analysator für eine sichere Entwicklung benötigt wird. Dieser Artikel ist hilfreich, wenn Sie einen statischen Analysator auswählen oder bereits planen, ihn zu implementieren. Wie richte ich den Prozess so ein, dass im Code entdeckte Schwachstellen endgültig behoben werden? In diesem Artikel werden wir versuchen, Ihnen bei der Lösung dieses Problems zu helfen.

Was soll kommen?
Die Implementierung des Analysators so, dass Schwachstellen stabil behoben werden, ist keine schnelle Angelegenheit. Aus Erfahrung können wir sagen, dass es einige Wochen bis mehrere Monate dauert. Wenn Sie den Analysator in einem großen Unternehmen implementieren, bereiten Sie sich auf eine Reihe von Genehmigungen vor. Immerhin sind dies Hunderte von Codebasen, die analysiert werden müssen, und Dutzende von Teams mit eigenen Entwicklungsaufträgen.

Um eine neue Entwicklungsstufe hinzuzufügen - die statische Analyse - müssen Sie untersuchen, wie der Prozess jedes Teams funktioniert, und eine Lösung vorschlagen, die für alle geeignet ist. In kleinen Unternehmen existiert die etablierte Entwicklungsreihenfolge möglicherweise überhaupt nicht. Die Implementierung des Analysators kann eine Entschuldigung für den Aufbau eines Prozesses sein. Damit die Integration weicher wird, empfehlen wir Ihnen herauszufinden, welcher Analysator die entsprechenden Funktionen bietet.
Was sind die Integrationsmöglichkeiten?
In der Regel nimmt der Analysator eine nicht grafische Oberfläche (CLI, REST) für die Integration in einen beliebigen Prozess an. Es gibt Analysatoren mit vorgefertigten Integrationen: mit Build-Tools und Entwicklungsumgebungen, mit Versionskontrollsystemen (Git, SVN), CI / CD-Servern (Jenkins, TeamCity, TFS), Projektmanagementsystemen (Jira) und Benutzerverwaltung (Active Directory). Je nützlicher Ihr Unternehmen ist, desto einfacher ist die Einrichtung.
Wie können Sie einen Prozess erstellen?
Betrachten Sie die Standardsituation: Die beteiligten Abteilungen sind Informationssicherheit, Release-Management und Entwicklung. Der Kunde der Analysatorimplementierung ist in der Regel die Informationssicherheit (IS). Die Aufgabe besteht darin, zu vereinbaren, wer, wann und was zu tun ist. Wir unterscheiden die folgenden Schritte:
Starten Sie die Analyse, verarbeiten Sie die Ergebnisse der Analyse, erstellen Sie eine Anforderung zum Beheben der Sicherheitsanfälligkeit, beheben Sie die Sicherheitsanfälligkeit, überprüfen Sie die Korrektur . Betrachten Sie jeden Schritt genauer.
Schritt 1. Führen Sie die Analyse aus
Sie können die Analyse manuell oder automatisch ausführen. Ansätze haben ihre Vor- und Nachteile.
ManuellEr selbst erinnerte sich an den Analysator, er lud den Code selbst herunter, er ging und sah sich die Ergebnisse an.

Wenn es im Unternehmen etwa ein Dutzend Projekte gibt und ein Sicherheitsbeauftragter mit der Überwachung der Sicherheit beauftragt ist, ist ein solches Szenario möglich. Wenn es ungefähr hundert Projekte gibt, müssen Sie die Automatisierung konfigurieren.
AutomatisiertEntscheiden Sie, wie oft und zu welchem Zeitpunkt Sie den Code analysieren müssen. Zum Beispiel vor dem Betreten einer produktiven Umgebung nach einem bestimmten Zeitplan (einmal pro Woche) oder nach jeder Änderung.
Wenn die Anwendung selten aktualisiert wird, Sie aber auch ihre Sicherheit überwachen müssen, konfigurieren Sie die Analyse, wenn sich Änderungen ergeben.
Wenn viele Leute am Code arbeiten, viele Zweige erstellt werden, Änderungen häufig einfließen - es ist besser, häufig zu analysieren, aber die Entwicklung nicht zu beeinträchtigen. Zum Beispiel zum Zeitpunkt des Erstellens einer Zusammenführungsanforderung mit dem Hauptzweig oder wenn sich der Aufgabenstatus in diesem Zweig ändert. Die Integration in ein Versionskontrollsystem oder in ein Projektmanagementsystem hilft Ihnen dabei. Durch die Integration in CI / CD wird die Analyse zu einem der Erstellungsschritte.
Stellen Sie den Zeitplan so ein, dass Sie Zeit haben, die Ergebnisse zu verarbeiten.
Schritt 2. Verarbeiten Sie die Analyseergebnisse
Weisen Sie die Entwickler nicht an, alle gefundenen Sicherheitslücken sofort zu beheben. Lassen Sie sie zuerst vom Sicherheitsbeauftragten überprüfen. Die Ergebnisse der ersten Analyse mögen bedauerlich erscheinen: Dutzende kritischer, Hunderte weniger kritischer Schwachstellen und Tausende falsch positiver Ergebnisse. Was ist hier zu tun? Wir empfehlen, die Sicherheitslücken schrittweise zu beheben. Das ultimative Ziel ist es, das Fehlen von Schwachstellen sowohl im alten als auch im neuen Code zu erreichen. Überprüfen Sie in der Anfangsphase kritische (immer noch unsichere) und neue Sicherheitslücken (neuer Code lässt sich leichter beheben).
Verwenden Sie Filter. Sortieren Sie Schwachstellen nach Schweregrad, Sprache, Datei und Verzeichnis. Fortgeschrittenere Tools zeigen Schwachstellen nur im neuen Code an und verbergen Schwachstellen in Bibliotheken von Drittanbietern. Filter wurden angewendet, aber gibt es immer noch viele Schwachstellen?
Zeigen Sie die wahrscheinlichsten Sicherheitslücken an. Es gibt Analysegeräte, die die Wahrscheinlichkeit eines falsch positiven Ergebnisses bewerten. Wenn es viele Sicherheitslücken gibt und die Kritikalität für alle nahezu gleich ist, filtern Sie die Ergebnisse anhand dieser Metrik. So verarbeiten Sie schnell die wahrscheinlichsten Sicherheitslücken (siehe Abbildung unten).

Verwenden Sie Überprüfungsstatus. Um die Überprüfungsergebnisse zu erfassen, bieten Analysegeräte normalerweise an, mit Status für die Sicherheitsanfälligkeit zu arbeiten: Bestätigen oder als falsch positiv ablehnen. In der Regel sollte die geleistete Arbeit beim erneuten Scannen erhalten bleiben.
Schritt 3. Erstellen Sie eine Sicherheitsanfälligkeitsanforderung
Wenn der Entwickler mit der Analyse seines Codes beginnt und die Sicherheitslücken sofort behebt, müssen Sie natürlich keine unnötigen Anforderungen erstellen.
Wenn der Sicherheitsbeauftragte die Ergebnisse überprüft und überprüft, muss zur weiteren Korrektur der bestätigten Sicherheitsanfälligkeiten normalerweise eine Aufgabe festgelegt werden. Wir haben uns wiederholt der Tatsache gestellt, dass in diesem Schritt Schwierigkeiten aufgetreten sind.
AnfrageformularEs gibt Unternehmen, in denen große Aufgaben für die Bühne im Projektmanagementsystem festgelegt sind (z. B. Jira). Für Unteraufgaben und Fehler werden beispielsweise GitLab-Probleme verwendet, auf die nur der Teamleiter und sein Team Zugriff haben. Es kommt auch vor, dass die Montage nicht möglich ist, ohne eine separate Aufgabe im Projektmanagementsystem zu erstellen. Der Analysator kann über Integrationen verfügen, mit denen Sie die erforderlichen Abfragen sofort in der Benutzeroberfläche erstellen können.
Oft innerhalb eines Unternehmens mit zahlreichen Entwicklungsgruppen hat jede von ihnen ihr eigenes Verfahren zur Umsetzung von Arbeitsaufgaben. Und Sie müssen sich an alle anpassen. Fragen stellen sich:
- Lohnt es sich, ein separates Projekt zur Behebung von Schwachstellen zuzuweisen oder Aufgaben in vorhandenen zu erstellen?
- Ist die Sicherheitslücke ein vertrauter Fehler oder eine neue Entität?
- Erstellen Sie für jede Sicherheitsanfälligkeit eine eigene Aufgabe oder gruppieren Sie ähnliche?
- Was soll ich zur Beschreibung des Problems geben: einen Link zu einer Sicherheitsanfälligkeit in der Analysatorschnittstelle oder eine Stelle im Code und eine kurze Beschreibung des Problems?
- Und braucht der Entwickler Zugriff auf die Ergebnisse? Senden Sie einfach einen PDF-Bericht mit dem Text „siehe Seite 257 ”und das reicht?
Natürlich hängt es davon ab, wie der Prozess im Team angepasst wird und welche Fehlerverfolgungssysteme verwendet werden.
Wenn der Code von Auftragnehmern geschrieben wurde, für die der Zugriff auf interne Systeme minimal ist, ist ein Schema mit einem PDF-Bericht geeignet. In der Regel können Sie für einen Bericht Schwachstellen auswählen, die für Sie von Interesse sind, und diese sofort über die Analysatorschnittstelle an die gewünschte Adresse senden.
Wenn ein Unternehmen keinen einzelnen Schritt ausführen kann, ohne ein Projekt für einen bestimmten Aufgabentyp mit einer bestimmten Menge an Ressourcen zu erstellen, sollten Sie nach einem Tool mit Integration für Ihr System suchen. Die flexibelsten Integrationen generieren eine Beschreibung der Aufgabe für Sie (sie vergessen nicht einmal den Link zum Quellcode im Versionskontrollsystem) und ermöglichen es Ihnen, alle erforderlichen Felder auszufüllen. Wählen Sie den Aufgabentyp, geben Sie das übergeordnete Element, die Künstler und sogar die Release-Version an.
Arbeitskosten und BedingungenWenn das Team beschlossen hat, die Arbeitskosten für jede Aufgabe zu bewerten, muss die Aufgabe zur Behebung der Sicherheitsanfälligkeit auf dieselbe Weise ausgeführt werden. Unterwegs überprüfen Entwickler die Sicherheitslücken. Manchmal stellt sich bei diesem Schritt heraus, dass die Sicherheitsanfälligkeit falsch oder unmöglich auszunutzen ist.
In der Regel reichen die Ressourcen jedoch immer noch nicht aus, um alle Schwachstellen sofort zu beheben. Daher ist es auch notwendig, ihre Prioritäten zu koordinieren.
Die Aufgaben wurden durch Arbeitskosten und Prioritäten bestimmt. Dann entscheiden die Verantwortlichen für die Veröffentlichungstermine (dies kann der Projektmanager oder derselbe Teamleiter sein), was wann zu beheben ist. Wir empfehlen Ihnen zunächst, die Veröffentlichung mit dem Analysegerät nicht zu verschieben, wenn nicht alle Schwachstellen behoben sind.
Schritt 4. Beheben Sie die Sicherheitslücken
So ordnen Sie Ressourcen richtig zu: Die Verbindung neuer Mitarbeiter oder die Beauftragung derjenigen, die bereits in der Entwicklung tätig sind, ist ein Budgetproblem. Eines ist wahr: Wenn das Unternehmen Ressourcen für die Installation des Analysators zuweist, müssen Sie sich auf die Kosten für die Behebung von Sicherheitslücken vorbereiten. Ein möglicher Weg besteht darin, den Prozentsatz der Zeit festzulegen, um Schwachstellen als Job mit technischen Schulden zu beheben.
Es gibt zwei Szenarien: Sofort im Entwicklungsprozess oder auf Anfrage eines Sicherheitsbeauftragten korrigieren. Das Beheben von Schwachstellen während der Entwicklung ist ein ideales Szenario. Sofort gefunden - sofort korrigiert. Der Entwickler scannt seinen Feature-Zweig, bevor er eine Zusammenführung mit dem Hauptzweig anfordert. Dies kann auch durch Integrationen automatisiert werden: in die Entwicklungsumgebung, mit Build-Tools, Versionskontrollsystem oder mit CI / CD.
Ein weiteres Szenario besteht darin, den Hauptentwicklungszweig nach allen Änderungen zu analysieren. Ein Sicherheitsbeauftragter oder Teamleiter überprüft die Ergebnisse und erstellt Aufgaben zur Behebung von Sicherheitslücken. Dieses Szenario ist zeitaufwändiger. Am Eingang des Entwicklers stehen der Quellcode, die Korrekturaufgabe und die Analyseergebnisse. Für einen Entwickler unterscheidet sich die Aufgabe, eine Sicherheitsanfälligkeit zu beheben, nicht wesentlich von der Behebung eines Fehlers.
Schritt 5. Überprüfen Sie das Update
Sie müssen sicherstellen, dass die Sicherheitsanfälligkeit wirklich behoben ist und an ihrer Stelle keine neue aufgetreten ist. Es gibt Ergebnisse der Analyse des korrigierten Codes. Was ist zu suchen? Datei- und Zeilennummer der Sicherheitsanfälligkeit? Oder nach Schwachstellennamen suchen? Es ist möglich und so. Wenn der Code jedoch geändert würde, könnte sich die Linie mit der Sicherheitsanfälligkeit verschieben, und es könnte immer noch viele Vorkommen einer Sicherheitsanfälligkeit geben. Einige Analysegeräte weisen möglicherweise „feste“ Sicherheitslücken auf. Stimmen Sie zu, damit Sie die Sicherheitsanfälligkeit schneller beheben können (siehe Screenshot).

Beispiele
Hier sind zwei mögliche Szenarien.
Szenario 1
Das Team verwendet Git für die Versionskontrolle, Jira für die Projekt- und Aufgabenverwaltung. Jenkins konfiguriert den Build-Zeitplan. Zum Beispiel einmal am Tag, wenn sich in der Branche Änderungen ergeben. Als zusätzlicher Schritt wird der Start des Analysators angezeigt.
Der Sicherheitsbeauftragte überprüft die Ergebnisse der Analyse des Hauptzweigs (Master oder Entwicklung), und die Entwickler überprüfen seine Feature-Zweige.
Entwickler beheben bei Bedarf Schwachstellen. Wenn der Analysator bei Bedarf Schwachstellen filtern kann: Nur neue Schwachstellen anzeigen oder Schwachstellen in Bibliotheken von Drittanbietern nicht anzeigen, Schwachstellen in einem bestimmten Verzeichnis oder einer bestimmten Datei anzeigen - Der Entwickler kann die für ihn interessanten Ergebnisse schnell anzeigen. Die Wahrscheinlichkeit einer Korrektur ist also höher.
Der Sicherheitsbeauftragte überprüft die Ergebnisse der Analyse der Hauptniederlassung. Durch die Integration mit Jira erstellt der Sicherheitsbeauftragte Schwachstellenmanagementaufgaben über die Analysatorschnittstelle. Als nächstes folgt die Koordinierung der Fristen und Prioritäten.
Wenn die Sicherheitsanfälligkeit behoben ist und der neue Code alle internen Entwicklungsphasen (Überprüfung durch Teamleiter-, Benutzer- und Regressionstests) besteht, muss der Sicherheitsbeauftragte sicherstellen, dass die Sicherheitsanfälligkeit nicht mehr vorhanden ist. Der Autor schließt die erledigte Aufgabe.
Szenario 2
Der Code für das Unternehmen wird von einer Gruppe von Auftragnehmern geschrieben. Timlid interagiert mit Entwicklern per E-Mail und verwendet GitLab zur Versionskontrolle. Auftragnehmer haben keinen Zugang zu internen Projektmanagementsystemen (Jira).
Der Sicherheitsbeauftragte oder der Teamleiter selbst überprüft die Ergebnisse der Analyse des Hauptentwicklungszweigs. Auftragnehmer haben keinen Zugriff auf den Analysator. Wenn es Schwachstellen gibt, die behoben werden müssen, sendet der Sicherheitsbeauftragte einen PDF-Bericht mit den Ergebnissen der Analyse an den Teamleiter oder sofort an den Entwickler.
Aus dem Bericht geht der Entwickler hervor, wo die Sicherheitsanfälligkeit gefunden wird, woraus sie besteht und wie sie behoben werden kann. Es ist hilfreich, wenn bei Schwachstellen im Zusammenhang mit dem Fluss unsicherer Daten (z. B. SQL-Injection) das Verteilungsschema in den Bericht entladen wird: von der Datenquelle bis zu ihrer Verwendung im Funktions- / Methodenaufruf (siehe Screenshot).

Nach dem Beheben der Sicherheitsanfälligkeit informiert der Teamleiter den Sicherheitsbeauftragten darüber, dass es Zeit ist, die Ergebnisse des erneuten Scans zu überprüfen.
Was ist sonst noch wichtig?
Ermittlung der Wechselwirkung zwischen Informationssicherheit und Entwicklung. Es ist wichtig, dass beide Parteien daran interessiert sind, Schwachstellen zu beheben. Nun, wenn es nicht nur um Anfragen geht, sondern auch um Live-Kommunikation.
Vernachlässigen Sie keine Benutzerrollen. Ein guter Analysator sollte in der Lage sein, Rechte zu unterscheiden. Es ist unwahrscheinlich, dass ein Auftragnehmer Administratorrechte oder die Ergebnisse einer Analyse interner Systeme benötigt. Um die Ergebnisse zu bearbeiten - um die Kritikalität und den Status zu ändern - reicht es aus, den Sicherheitsbeauftragten und den Teamleiter zuzulassen. Das Prinzip der Mindestprivilegien wurde nicht aufgehoben.
Wenn das Unternehmen groß ist und ein Benutzerverwaltungssystem (z. B. Active Directory) verwendet, sollten Sie Tools mit vorgefertigter Integration in Betracht ziehen. Sie können die im Unternehmen akzeptierten Rollen und Gruppen wiederverwenden und ihnen die erforderlichen Rechte erteilen.
Fazit
Bereiten Sie sich nach der Auswahl eines Analysators darauf vor, dass er noch korrekt implementiert werden muss. Haben Sie keine Angst vor Besprechungen und der Koordination mit den Teilnehmern: Je besser Sie den Prozess verstehen, desto nützlicher ist das Ergebnis. Es ist wichtig, dass das Arbeitsszenario nicht nur genehmigt wird, sondern auch folgt.
Gepostet von Elizaveta Kharlamova, Lead Analyst, Solar AppScreener