Analysieren von GitHub-Sicherheitswarnungen mithilfe des Ask-Modus von GitHub Copilot

Abgeschlossen

Das Verständnis, warum eine geheime Scanwarnung ausgelöst wurde und wie sie effektiv behoben werden kann, erfordert eine sorgfältige Analyse. Der Ask-Modus von GitHub Copilot bietet eine interaktive Möglichkeit, offengelegte Anmeldeinformationen zu analysieren, ihre Sicherheitsauswirkungen zu verstehen und geeignete Korrekturstrategien zu planen.

Was ist gitHub Copilot Ask Mode?

Der Ask-Modus von GitHub Copilot ist eine Konversationsschnittstelle, die in Visual Studio Code integriert ist. Sie stellen Fragen zu Ihrem Code, und Copilot antwortet mithilfe des von Ihnen bereitgestellten Kontexts. Bei geheimen Scanwarnungen funktioniert der Ask-Modus als Sicherheitsberater, der erklären kann, warum Anmeldeinformationen verfügbar gemacht werden, Risiken bewerten und Abhilfeansätze vorschlagen können.

Der Ask-Modus eignet sich ideal für:

  • Grundlegendes dazu, warum ein bestimmter Code geheime Scanwarnungen ausgelöst hat.
  • Analysieren der Sicherheitsauswirkungen von verfügbar gemachten Anmeldeinformationen.
  • Erkunden sicherer Alternativen für das Management von Geheimnissen.
  • Planen sie Korrekturstrategien, bevor Sie Codeänderungen vornehmen.
  • Bewährte Methoden für die Sicherheit im Kontext lernen.

Hinweis

Der Fragemodus ändert Ihre Codedateien nicht. Es bietet Analysen, Erklärungen und Vorschläge, die Ihre Korrekturentscheidungen informieren.

Effektive Anregungsstrategien

Eine erfolgreiche Analyse mit dem Ask-Modus hängt von klaren, spezifischen Eingabeaufforderungen ab, die Kontext bieten und sich auf umsetzbare Erkenntnisse konzentrieren. GitHub empfiehlt die Verwendung natürlicher Sprache, die auf bestimmte Codeauswahlen verweist und relevante Kontexte zu Ihrer Umgebung enthält.

Grundlegendes zur Offenlegung

Beginnen Sie, indem Sie bestätigen, was erkannt wurde und warum es problematisch ist. Wählen Sie den Code aus, der den geheimen Schlüssel enthält, und stellen Sie direkte Fragen.

Die folgenden Eingabeaufforderungen helfen dabei, die Art der Exposition zu verdeutlichen:

  • "Erläutern, warum der ausgewählte Code eine warnung für die geheime Überprüfung ausgelöst hat."
  • „Welche Art von Anmeldeinformationen wird im ausgewählten Code verwendet, und auf welchen Dienst wird zugegriffen?“
  • "Analysieren Sie die ausgewählte Datenbankverbindungszeichenfolge, und identifizieren Sie alle verfügbar gemachten Anmeldeinformationen."
  • "Enthält die Auswahl einen echten API-Schlüssel oder könnte es ein falsch positives Ergebnis sein?"

GitHub Copilot analysiert den ausgewählten Code und erläutert:

  • Das spezifische Muster, das die Warnung ausgelöst hat (z. B. "stimmt mit dem API-Schlüsselformat von Stripe ab, beginnend mit 'sk_live_'").
  • Der Typ der Anmeldeinformationen und ihre Merkmale (z. B. „hartcodiertes Zeichenfolgenliteral“ oder „entspricht bekanntem Dienstmuster“).
  • Der Dienst oder das System, auf den bzw. das die Anmeldeinformationen zugreifen.
  • Die Sichtbarkeit der Exposition (wer sie sehen kann).

Diese Bestätigung hilft Ihnen zu verstehen, ob Sie mit einem echten Geheimnis oder einem falsch positiven Ergebnis umgehen.

Bewertung des Risikos

Es ist wichtig, die potenziellen Auswirkungen zu verstehen und die Behebung zu priorisieren. Fügen Sie kontextbezogene Informationen zur Sichtbarkeit und Umgebung Ihres Repositorys ein.

Die folgenden Eingabeaufforderungen helfen bei der Bewertung des Schweregrads der Exposition:

  • "Was könnte ein Angreifer mit dem ausgewählten verfügbar gemachten API-Schlüssel tun?"
  • "Welche Risikostufe besteht darin, diese Datenbankverbindungszeichenfolge in einem öffentlichen Repository verfügbar zu machen?"
  • Welche vertraulichen Daten oder Systeme sind aufgrund dieses Geheimnisses gefährdet?
  • „Wie schwerwiegend ist diese Offenlegung im Vergleich zu anderen Anmeldeinformationstypen?“

GitHub Copilot analysiert den Berechtigungstyp und erläutert:

  • Bestimmte Aktionen, die ein Angreifer ausführen kann (Finanztransaktionen, Datenzugriff, Systemänderungen).
  • Risikokategorien (finanzielle Auswirkungen, Datenschutzverletzungen, Geschäftsunterbrechungen, Complianceverletzungen).
  • Dringlichkeitsgrad basierend auf Anmeldedatentyp und Repository-Sichtbarkeit.
  • Sofortige Maßnahmen erforderlich (Berechtigungen widerrufen, Protokolle überprüfen, Geheimnisse austauschen).
  • Mögliche Compliance-Auswirkungen, z. B. Payment Card Industry Data Security Standard (PCI DSS).

Diese Risikobewertung hilft Ihnen bei der Priorisierung von Korrekturen und bei der Kommunikation mit den Beteiligten.

Grundlegendes zum Kontext

Analysieren Sie, wie der geheime Schlüssel verwendet wird, um sicherzustellen, dass die Wartung die Funktionalität bewahrt. Verwende #codebase, um dateiübergreifend zu suchen.

Die folgenden Eingabeaufforderungen helfen bei der Erkundung des Verwendungskontexts:

  • "Wie wird der ausgewählte API-Schlüssel in der Anwendung verwendet?"
  • "Welche Funktionen oder Klassen hängen von der ausgewählten Datenbankverbindungszeichenfolge ab?"
  • "#codebase Suchen Sie alle Codepfade, die auf diese Anmeldeinformationen verweisen."
  • Was bricht wenn ich diesen hardcodierten Geheimschlüssel entferne?

GitHub Copilot analysiert den Arbeitsbereich und identifiziert Folgendes:

  • Alle Dateien und Speicherorte, an denen auf den geheimen Schlüssel verwiesen wird.
  • Methoden, Klassen oder Dienste, die von den Zugangsdaten abhängig sind.
  • Wie die Anmeldeinformationen initialisiert und genutzt werden.
  • Kritische Funktionalität, die auf dem geheimen Schlüssel basiert.
  • Abhängigkeiten zwischen Komponenten, die die Anmeldeinformationen verwenden.
  • Empfehlungen zum Aktualisieren aller Nutzungspunkte während der Wartung.

Diese Analyse stellt sicher, dass Ihr Wartungsplan alle Abhängigkeiten behandelt und Anwendungsfunktionen verwaltet.

Planung der Behebung

Entwickeln Sie eine umfassende Reparaturstrategie. Seien Sie spezifisch hinsichtlich Ihres Technologiestacks und Ihrer Umgebung.

Die folgenden Eingabeaufforderungen helfen bei der Entwicklung einer umfassenden Fehlerbehebungsstrategie:

  • "Wie wird empfohlen, diesen API-Schlüssel sicher in einer .NET-Anwendung zu speichern?"
  • Erstellen Sie einen schrittweisen Plan zur Behebung dieser offengelegten Datenbankanmeldeinformationen.
  • "Wie kann ich von hartcodierten Geheimschlüsseln zu Azure Key Vault migrieren?"
  • „Zeige die bewährte Methode zum Verwalten dieses Anmeldeinformationstyps in der Produktion.“

GitHub Copilot empfiehlt sichere Speicherlösungen und erläutert:

  • Geeignete Ansätze für die geheime Verwaltung für Ihren Stapel (Azure Key Vault, Benutzergeheimnisse, Umgebungsvariablen).
  • Prioritätsbewertung von Optionen (Produktions- und Entwicklungsumgebungen).
  • Schrittweise Implementierungsleitfaden.
  • Codebeispiele mit Mustern für den sicheren Konfigurationszugriff.
  • Plattformspezifische Integrationsdetails (Abhängigkeitseinfügung, Konfigurations-Generatoren).
  • Testüberlegungen vor der Bereitstellung.

Dieser Leitfaden bietet eine klare Roadmap für die Implementierung sicherer geheimer Verwaltung.

Identifizieren Sie ähnliche Probleme an anderer Stelle mithilfe der arbeitsbereichweiten Analyse.

Die folgenden Eingabeaufforderungen helfen, ähnliche Probleme an anderer Stelle im Arbeitsbereich zu identifizieren:

  • "#codebase Suchen Sie nach anderen hartcodierten API-Schlüsseln oder Verbindungszeichenfolgen."
  • "Gibt es weitere Anmeldeinformationen in Konfigurationsdateien, die Korrekturen benötigen?"
  • "#codebase Suchen Sie Dateien, die Muster enthalten, die dem ausgewählten geheimen Schlüssel ähneln."
  • "Welche weiteren Sicherheitsbedenken bestehen in Dateien, die die Integration externer Dienste verarbeiten?"

GitHub Copilot durchsucht den Arbeitsbereich und identifiziert Folgendes:

  • Andere Dateien mit ähnlichen Zugangsdatenmustern.
  • Konfigurationsdateien, die hartcodierte geheime Schlüssel enthalten können.
  • Verwandte Sicherheitsbedenken im Authentifizierungs- oder Integrationscode.
  • Einheitliche Muster, die systematische Probleme vorschlagen.
  • Empfehlungen für arbeitsbereichweite Korrekturen.

Diese umfassende Überprüfung stellt sicher, dass Sie alle Instanzen des Problems behandeln, nicht nur die Instanz, die die Warnung ausgelöst hat.

Bereitstellen eines effektiven Kontexts

Die Qualität der Analyse von GitHub Copilot hängt vom Kontext ab, den Sie bereitstellen.

Hinzufügen relevanter Dateien und Code

Die Bereitstellung eines umfassenden Kontexts hilft Copilot dabei, genauere Analysen zu liefern:

  • Wählen Sie den spezifischen Code aus, der den verfügbar gemachten Geheimschlüssel enthält, bevor Sie Fragen stellen.
  • Verwenden Sie die Schaltfläche "Kontext hinzufügen" in der Chatschnittstelle, um Folgendes einzuschließen:
    • Die Datei, die den geheimen Schlüssel enthält.
    • Konfigurationsdateien (appsettings.json, .env.example).
    • Dateien, die den geheimen Schlüssel verwenden (Dienstklassen, Controller).
  • Verweisen Sie auf die Warnungsdetails auf der Registerkarte "Sicherheit" von GitHub (geheimer Typ, Dateipfad, Zeilennummer).

Schreiben klarer Problembeschreibungen

Wenn Sie nach einer geheimen Überprüfungswarnung fragen, schließen Sie wichtige Details aus der GitHub-Warnung ein, um den vollständigen Kontext bereitzustellen.

Sie können die folgende Struktur als Vorlage für Ihre Eingabeaufforderungen verwenden:

I have a GitHub secret scanning alert for a [SECRET TYPE] in [FILE PATH] line [NUMBER]. 
This is a [public/private] repository. I need to understand:
1. [Specific question about access/impact]
2. [Specific question about rotation]
3. [Specific question about secure storage]

Hier ist ein Beispiel, das die Vorlage verwendet:

I have a GitHub secret scanning alert for a Stripe API key in src/PaymentProcessor.cs line 15. 
This is a public repository. I need to understand:
1. What access this key provides
2. How to safely rotate it
3. How to implement secure storage without breaking payment processing

Das Schreiben klarer Problembeschreibungen mit bestimmten Details hilft GitHub Copilot bei:

  • Sie müssen den genauen Anmeldeinformationstyps und den genauen Ort verstehen.
  • Bewerten des Risikos basierend auf der Sichtbarkeit des Repositorys.
  • Stellen Sie gezielte Anleitungen zur Behebung Ihres spezifischen Szenarios bereit.
  • Behandeln sie mehrere Bedenken in einer einzigen, umfassenden Antwort.

Dieser strukturierte Ansatz folgt gitHubs Empfehlung, einen Kontext vorab bereitzustellen, anstatt über mehrere Back-and-Forth-Austausche.

Iterativer Analysearbeitsablauf

Der Ask-Modus von GitHub Copilot ist am effektivsten, wenn Aufforderungen einen iterativen Ansatz zur Analyse von Problemen und zur Formulierung einer Korrekturstrategie unterstützen.

Befolgen Sie diesen systematischen Ansatz bei der Analyse geheimer Scanbenachrichtigungen:

  1. Überprüfen Sie die Warnung auf der Registerkarte "Sicherheit" von GitHub, und notieren Sie sich den geheimen Typ, den Dateipfad und die Zeilennummer.
  2. Öffnen Sie das Repository in Visual Studio Code, und navigieren Sie zur identifizierten Datei.
  3. Wählen Sie den Code aus, der den verfügbar gemachten geheimen und umgebenden Kontext enthält.
  4. Wenden Sie die Strategien aus früheren Abschnitten der Reihe nach an: Verstehen der Exposition, Bewertung des Risikos, Verständnis des Kontexts, Planen von Gegenmaßnahmen und Ermitteln verwandter Probleme.
  5. Dokumentieren Sie Ihre Ergebnisse und Ihren Wartungsplan, während Sie die Analyse durcharbeiten.

Bewährte Methoden für den Ask-Modus von GitHub Copilot

Die folgenden Bewährten Methoden helfen dabei, die Effektivität Ihrer Analysesitzungen zu maximieren.

Beginnen Sie breit und fokussieren Sie sich dann.

Beginnen Sie mit allgemeinen Fragen, und führen Sie dann schrittweise einen Drilldown in Einzelheiten durch.

Betrachten Sie ein Szenario, das die Analyse eines verfügbar gemachten API-Schlüssels in einem ausgewählten Codeausschnitt umfasst:

  1. "Was macht der ausgewählte Code und warum ist es ein Problem?"
  2. "Welche spezifischen Risiken sind mit dem ausgewählten Code verbunden?"
  3. "Wie wird der API-Schlüssel in der Anwendung verwendet?"
  4. "Können Sie einen Wartungsplan skizzieren?"
  5. "Gibt es verwandte Probleme innerhalb der Codebasis?"

Dokumentieren Ihrer Ergebnisse

Dokumentieren Sie bei der Analyse die wichtigsten Punkte:

  • Anmeldeinformationstyps und -zweck.
  • Dienste oder Daten, auf die sie zugreift.
  • Verwendungsbereiche im Code.
  • Schritte des Wartungsplans.
  • Verwandte Probleme, die ermittelt wurden.

Folgefragen stellen

Zögern Sie nicht, nach Klarstellung zu fragen:

  • "Können Sie das im Detail erklären?"
  • "Was sind die Vor- und Nachteile dieses Ansatzes?"
  • "Welche Tests sollte ich nach der Implementierung dieser Änderung ausführen?"

Verbessern Sie Ihr Verständnis durch Wiederholung

Wenn eine Antwort nicht klar ist, formulieren Sie Ihre Frage neu, oder stellen Sie mehr Kontext bereit:

  • Fügen Sie dem Chatkontext weitere Dateien hinzu.
  • Seien Sie spezifischer für Ihre Umgebung.
  • Unterteilen Sie komplexe Fragen in kleinere Abfragen.

Überlegungen zu verschiedenen geheimen Typen

Unterschiedliche Geheimschlüssel erfordern spezifische Analyseansätze:

API-Schlüssel und -Token

Beim Analysieren von API-Schlüsselrisiken:

  • Identifizieren Sie den Dienstanbieter und den Zugriffsbereich.
  • Ermitteln Sie, ob es sich um eine Produktions- oder Testumgebung handelt.
  • Überprüfen Sie, ob der Dienstanbieter benachrichtigt wurde (Partnerüberprüfung).
  • Verstehen Sie die Berechtigungen, die der Schlüssel gewährt.

Datenbank-Verbindungszeichenfolgen

Bei Offenlegungen von Verbindungszeichenfolgen:

  • Identifizieren Sie alle Anmeldeinformationen in der Zeichenfolge (Benutzername, Kennwort, Server).
  • Ermitteln Sie die Produktionsdatenbank im Vergleich zur Entwicklungsdatenbank.
  • Bewerten Sie, welche Daten die Datenbank enthält.
  • Überprüfen Sie, ob die Datenbank öffentlich zugänglich ist.

Private Schlüssel und Zertifikate

Für private Schlüsselexpositionierungen:

  • Ermitteln der Verwendung (Verschlüsselung, Signieren, SSH).
  • Identifizieren Sie Systeme oder Daten, die durch den Schlüssel geschützt sind.
  • Bewerten Sie die Auswirkungen der Drehung.
  • Ersatzanforderungen verstehen.

OAuth-Anmeldeinformationen

Bei der Offenlegung von OAuth-Geheimnissen:

  • Identifizieren Sie, auf welche Benutzerdaten die Anmeldeinformationen zugreifen.
  • Legen Sie die Lebensdauer des Tokens fest (langlebig im Vergleich zu kurzlebig).
  • Überprüfen Sie den Zugriff auf das Refresh-Token.
  • Bewerten sie den Umfang der erteilten Berechtigungen.

Das Verständnis dieser Unterschiede hilft Ihnen, gezieltere Analysefragen zu stellen und geeignete Korrekturstrategien zu entwickeln.