Du hast gerade eine neue Stelle angetreten, und gleich an deinem ersten Tag gibt es einen schwerwiegenden Vorfall in der Produktion, bei dem alle verfügbaren Arbeitskräfte benötigt werden. Eine Reihe kritischer neuer Sicherheitslücken erfordert sofortige Aufmerksamkeit, Analyse, Schadensbegrenzung und Behebung. Aber wo genau fängst du mit deiner Untersuchung an?
Erfahre, wie du mit den GitLab-Duo-Funktionen zur Erläuterung von Sicherheitslücken und Behebung von Sicherheitslücken zusammen mit anderen KI-basierten Funktionen innerhalb weniger Minuten mit der Behebung von Sicherheitslücken beginnen kannst. Anhand eines praktischen Beispiels erfährst du, wie du von der KI-basierten Unterstützung bei der Analyse und Erläuterung von Sicherheitslücken profitieren kannst. Zusätzliche Abhilfemaßnahmen stehen in Form von KI-generierten Codekorrekturen in MRs im Vordergrund, um Sicherheitslücken schneller zu beheben.
Starte eine kostenlose Testversion von GitLab Duo, um diese leistungsstarken Vorteile bei der Behebung von Sicherheitslücken auch in deinem Unternehmen zu nutzen.
So gehst du vor: Analyse
Der erste Schritt besteht darin, die Auswirkungen und den Schweregrad der Sicherheitslücke zu analysieren. Öffne die GitLab-Benutzeroberfläche und navigiere zum Sicherheitslückenbericht im Menü Schützen > Sicherheitslückenbericht
. Filtere die Liste der Sicherheitslücken nach SAST
und identifiziere die kritischsten Sicherheitslücken, an denen du arbeiten musst.
Die Ergebnisse des SAST-Scanners werden in der Detailansicht zusammengefasst und mit dem Quellcode verknüpft. Sie enthalten Details aus öffentlich zugänglichen Sicherheitshinweisen. Für Entwickler(innen) ist es oft schwierig, direkt aus dem Sicherheitsbericht heraus mit der Analyse zu beginnen, es sei denn, sie kennen den Umfang des Angriffs, die technischen Details und die Sicherheitslücken genau.
Verstehen und Entschärfen mit der Erläuterung von Sicherheitslücken
Es ist unerlässlich, dass du die Sicherheitslücke verstehst und weißt, wie du sie am besten und effizientesten beheben kannst. Die Korrekturen dürfen bestehende Funktionen nicht beeinträchtigen. Falls doch, ist eine Besprechung mit den zuständigen Betreuer(inne)n und Product Ownern mit einer Zusammenfassung und möglichen Abhilfemaßnahmen erforderlich. Code, den ein(e) ehemalige(r) Mitarbeiter(in) geschrieben hat, oder Code, für den es keine Tests gibt, kann die Planung eines Fixes noch schwieriger machen.
Die KI-basierte Erläuterung von Sicherheitslücken bietet eine Zusammenfassung, wie ein(e) Angreifer(in) die Sicherheitslücke ausnutzen könnte, und liefert weitere Erklärungen zu den Auswirkungen und möglichen Abhilfemaßnahmen.
Das folgende Beispiel zeigt eine OS-Command-Injection-Sicherheitslücke unter Verwendung dieses Codeschnipsels:
<?php
// Read variable name from GET request
$name = $_GET['name'];
// Use the variable name to call eval and print its value
eval('echo $' . $name . ';');
Der Sicherheitslückenbericht ist nicht sehr detailliert und setzt voraus, dass du den gesamten Kontext und die Auswirkungen verstehst. Wähle oben rechts Sicherheitslücke erläutern
, um den GitLab Duo Chat mit einem vordefinierten Prompt zu öffnen. Dieser bietet eine zusätzliche Zusammenfassung der Sicherheitslücke, eine Beschreibung, wie die Sicherheitslücke ausgenutzt werden kann, und einen Lösungsvorschlag.
Erläuterung von Sicherheitslücken in einem Gespräch mit Kontext
Du wirst auch eine Änderung in der Benutzeroberfläche sehen: Das vorherige Overlay der Erläuterung von Sicherheitslücken wurde durch einen GitLab-Duo-Chat-Workflow ersetzt. Manchmal benötigt eine komplexe Sicherheitslücke mehrere Abhilfemaßnahmen oder sie führt zu unklaren Quellcodepfaden.
Du kannst zum Quellcodebaum navigieren und mit demselben Chat-Kontext fortfahren, um dir den Code erläutern zu lassen, ihn zu reparieren, zu überarbeiten und zu testen.
Probieren wir den kompletten Workflow anhand eines Beispiels in C aus, bei dem die Sicherheitsscans einen Pufferüberlauf entdeckt haben.
- Öffne die Detailansicht der Sicherheitslücke und wähle oben rechts auf der Schaltfläche „Sicherheitslücke erläutern“. Dies öffnet den Chat-Prompt mit einer Zusammenfassung des Problems, potenziellen Angriffsvektoren und einem Lösungsvorschlag.
- Überprüfe den Lösungsvorschlag und bitte Duo Chat in einem Folge-Prompt, dir alternative Lösungsmöglichkeiten anzuzeigen, indem du den folgenden Text eingibst:
Can you show an alternative fix using a different function
. Der Sinn dahinter ist, etwas über Alternativen zur Funktionstrcpy()
zu erfahren, die sicherer zu verwenden sind.
- Duo Chat bietet im folgenden Beispiel eine alternative Lösung mit
strlcpy()
. Die Funktion kopiert nur so viele Zeichen, wie in der Zielzeichenfolge erlaubt sind, und beendet die Zeichenfolge immer mit Null. Sie gibt auch die Länge der Quellzeichenfolge zurück, um festzustellen, ob die Zeichenfolge abgeschnitten wurde.
- Klicke auf die URL der Datei
Location
, um zur Quellcodeansicht zu gelangen. Öffne Duo Chat erneut und vergewissere dich, dass der vorherige Kontext zur Erläuterung der Sicherheitslücke noch vorhanden ist. Als Nächstes möchten wir Tests hinzufügen, bevor wir mit einem Lösungsvorschlag fortfahren. So vermeiden wir, dass Funktionen kaputt gehen oder Regressionen eingeführt werden. Verwende zum Beispiel den folgenden Chat-Prompt:Based on the vulnerability context and opened source code, how would you add tests for it?
.
- Nachdem du Tests erstellt hast (und angenommen, sie wurden jetzt hinzugefügt), kannst du Duo Chat mit dem Prompt
Can you refactor the source code too?
in der gleichen Sitzung auch darum bitten, den Quellcode zu überarbeiten.
Der Workflow zeigt dir, wie du Sicherheitslücken analysierst, verstehst, entschärfst, alternative Ansätze findest, Tests hinzufügst und sogar Refactoring durchführst.
Du kannst diesen Weg mit Duo Chat fortsetzen und dann in die Web IDE wechseln, um den Quellcode zu ändern, nachdem du gelernt hast, wie es geht. Zu den weiteren fortlaufenden Workflows gehören das Committen von Änderungen und das Auslösen der CI/CD-Pipeline und von Sicherheitsscans für den gesamten DevSecOps-Lebenszyklus.
Beheben mit KI-unterstützter Behebung von Sicherheitslücken
Um eine Sicherheitslücke zu verstehen und zu beheben, sind immer noch Entwicklerfähigkeiten notwendig, um in einem neuen Merge Request eine Lösung für das Problem zu erstellen, Pipelines auszuführen und Sicherheitsscans durchzuführen. Es kann auch erforderlich sein, die Fixes in einer Staging-Umgebung bereitzustellen und über einen längeren Zeitraum zu testen.
Die KI kann dir dabei helfen, einen Lösungsvorschlag auf der Grundlage des bereitgestellten Kontexts der Sicherheitslücke und des Quellcodes zu generieren.
Tipp: Denke an die ärgerlichste Sicherheitslücke, die du in deiner Karriere bisher beheben musstest, und erstelle das Anwendungsbeispiel erneut für GitLab Duo. Die Mitre CWE Top 25 der gefährlichsten Software-Sicherheitslücken bietet ebenfalls einen guten Ausgangspunkt.
Das folgende Beispiel implementiert CWE-328: Use of a weak hash function (Verwendung einer schwachen Hash-Funktion) unter Verwendung von md5
. Die Sicherheitslücke wird von SAST-Scannern korrekt identifiziert.
import hashlib
class User:
def __init__(self, username, password):
self.username = username
self.password = password
def set_password(self, password):
self.password = hashlib.md5(password.encode()).hexdigest()
Klicke oben rechts auf die Schaltfläche Mit Merge Request lösen
. Dies öffnet einen MR, der KI verwendet, um eine Lösung vorzuschlagen. Eine mögliche Lösung für diese Sicherheitslücke könnte die Verwendung einer anderen Hash-Funktion sein.
Ein weiteres häufiges Beispiel für eine Sicherheitslücke ist die Nichtüberprüfung von Funktionsfehlercodes oder möglichen Exceptions. Die folgenden C-Codeschnipsel implementieren ein Beispiel für Timing-Angriffe auf Dateivorgänge mit CWE-362 für die Aufrufe fopen()
und chmod()
.
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <unistd.h>
int main(int argc, char **argv) {
// File operations
char *fname = "gitlab.keksi";
FILE *fp;
fp = fopen(fname, "r");
fprintf(fp, "Hello from GitLab Duo Vulnerability Resolution Challenge");
fclose(fp);
// Potential chmod() timing attacks
// Make the file world readable
chmod(fname, S_IRWXU|S_IRWXG|S_IRWXO);
return 0;
}
Der SAST-Bericht für chmod()
kann wie folgt aussehen:
Der vorgeschlagene Merge Request für chmod()
beinhaltet die Fehlerbehandlung. Zusätzlich wird ein weiteres potenzielles Problem behoben, durch das Dateien öffentlich beschreibbar sind, indem die Berechtigungen von 777
auf 600
geändert werden.
Probiere diese asynchrone Übung aus: Finde, analysiere und behebe die Sicherheitslücke für die Funktion
fopen()
.
Mehr KI-Unterstützung von GitLab Duo erforderlich
Oft lässt sich ein Sicherheitsproblem mit einer schnellen Lösung oder einem Workaround beheben, der den Entwicklungsteams Zeit gibt, eine längerfristige Lösung zu diskutieren und zu planen. In anderen Fällen wird das Problem komplexer und erfordert die Deaktivierung von Funktions-APIs oder die Behebung von Problemen der Firewall, bis eine angemessene Lösung in die Produktion eingeführt werden kann.
GitLab Duo bietet zusätzliche KI-basierte Funktionen, die bei der Lösung dieser Probleme helfen können.
Codeerläuterung: Als Entwickler(in) oder Sicherheitsingenieur(in) ist es wichtig, dass du dich auf deine Änderungen verlassen kannst. In der IDE kannst du die Funktion „Codeerläuterung“ verwenden, um die von der KI vorgeschlagene Lösung für die Sicherheitslücke besser zu verstehen. So ist sichergestellt, dass du genau weißt, welche Anpassungen vorgenommen wurden und warum.
Grundursachenanalyse: Wenn die Lösung deine Pipeline beschädigt, kannst du die Grundursachenanalyse verwenden. Dieses Tool hilft dir bei der Identifizierung des zugrunde liegenden Problems und erklärt es dir, damit du es effektiv angehen kannst. Nachdem du die erforderlichen Korrekturen vorgenommen hast, kannst du die Tests erneut ausführen, um eine erfolgreiche Lösung zu gewährleisten.
Refactoring: Auch wenn die Sicherheitslücke behoben wurde, lohnt es sich zu überlegen, ob der Code nicht sicherer geschrieben werden kann. In der IDE kannst du GitLab Duo Chat öffnen und die Refactoring-Aktion verwenden, um alternative, sicherere Möglichkeiten zum Schreiben deines Codes zu finden. Dieser proaktive Ansatz trägt zur Aufrechterhaltung einer robusten und sicheren Codebase bei.
Mit diesen Funktionen von GitLab Duo kannst du Sicherheitslücken selbstbewusst erkennen und beheben und so sicherstellen, dass dein Code sicher und effizient bleibt.
Wie geht es weiter?
Wir planen, sowohl die Erläuterung von Sicherheitslücken als auch die Behebung von Sicherheitslücken „nach links“ zu verschieben, indem wir sie direkt in den MR-Prozess integrieren. Diese Integration stellt sicher, dass du Sicherheitslücken früher im Entwicklungszyklus angehen und beheben kannst, was deinen Workflow optimiert und die Codesicherheit von Anfang an erhöht.
Erste Schritte mit GitLab Duo
In unserer Dokumentation findest du Informationen dazu, wie du die Funktion für unsere GitLab-Ultimate-Kund(inn)en aktivieren kannst. Außerdem sind die GitLab-Duo-Funktionen Erläuterung von Sicherheitslücken und Behebung von Sicherheitslücken bald in GitLab Self-Managed und GitLab Dedicated verfügbar.
In der Blog-Serie „Entwicklung von GitLab Duo“ erfährst du regelmäßig, was es Neues in GitLab Duo gibt.
Starte eine kostenlose Testversion von GitLab Duo, um diese leistungsstarken Vorteile bei der Behebung von Sicherheitslücken auch in deinem Unternehmen zu nutzen!