Teilen über


Geheime Überprüfung

Offengelegte Anmeldeinformationen in technischen Systemen bieten Angreifern leicht ausnutzbare Möglichkeiten. Um sich vor dieser Bedrohung zu schützen, sucht GitHub Advanced Security für Azure DevOps nach Anmeldeinformationen und anderen vertraulichen Inhalten in Ihrem Quellcode. Der Pushschutz verhindert auch, dass Anmeldeinformationen überhaupt kompromittiert werden.

Die Geheimnisüberprüfung für Ihr Repository sucht nach Geheimnissen, die möglicherweise bereits im Quellcode im Verlauf vorhanden sind, und der Pushschutz verhindert, dass neue Geheimnisse im Quellcode offengelegt werden.

GitHub Advanced Security für Azure DevOps funktioniert mit Azure Repos. Wenn Sie GitHub Advanced Security mit GitHub-Repositorys verwenden möchten, lesen Sie GitHub Advanced Security.

Informationen zu Warnungen zur Geheimnisüberprüfung

Wenn Advanced Security aktiviert ist, werden Repositorys auf Geheimnisse überprüft, die von einer Vielzahl von Dienstanbietern ausgestellt wurden, und es werden Warnungen zur Geheimnisüberprüfung generiert.

Wenn der Zugriff auf eine Ressource gekoppelte Anmeldeinformationen erfordert, löst die Überprüfung des Geheimnisses ggf. nur dann eine Warnung aus, wenn beide Teile der Kopplung in derselben Datei erkannt werden. Durch Kopplung wird sichergestellt, dass die wichtigsten Lecks nicht hinter Informationen zu partiellen Lecks versteckt werden. Der Paarabgleich hilft auch dabei, falsch positive Ergebnisse zu reduzieren, da beide Elemente eines Paars zusammen verwendet werden müssen, um auf die Ressource des Anbieters zuzugreifen.

Die Registerkarte „Advanced Security“ (Erweiterte Sicherheit) unter Repos>Advanced Security in Azure DevOps ist der Hub zum Anzeigen Ihrer Sicherheitswarnungen. Wählen Sie die Registerkarte Secrets (Geheimnisse) aus, um Warnungen zur Geheimnisüberprüfung anzuzeigen. Sie können nach Status und Geheimnistyp filtern. Sie können zu einer Warnung navigieren, um weitere Details zu erhalten, einschließlich Anleitungen zur Behebung. Nach der Aktivierung von Advanced Security wird eine Überprüfung für das ausgewählte Repository einschließlich aller verlaufsbezogenen Commitvorgänge gestartet. Im Laufe der Zeit werden Warnungen angezeigt, wenn die Überprüfung fortgesetzt wird.

Es hat keine Auswirkungen auf die Ergebnisse, wenn Branches umbenannt werden. Es kann bis zu 24 Stunden dauern, bis der neue Name angezeigt wird.

Screenshot: Warnungen einer aktiven Geheimnisüberprüfung

Zur Behebung aufgedeckter Geheimnisse machen Sie die offengelegten Anmeldeinformationen ungültig und erstellen stattdessen neue Anmeldeinformationen. Das neu erstellte Geheimnis sollte dann so sicher gespeichert werden, dass es nicht direkt zurück in den Code gelangt. Beispielsweise könnte das Geheimnis in Azure Key Vault gespeichert werden. Die meisten Ressourcen verfügen über primäre und sekundäre Anmeldeinformationen. Das Verfahren zum Übertragen von primären Anmeldeinformationen und sekundären Anmeldeinformationen ist identisch, sofern nicht anders angegeben.

Verwalten von Warnungen zur Geheimnisüberprüfung

Anzeigen von Warnungen für ein Repository

Jede Person mit der Berechtigung „Mitwirkender“ für ein Repository kann eine Zusammenfassung aller Warnungen für ein Repository auf der Registerkarte „Advanced Security“ unter „Repositorys“ anzeigen. Wählen Sie die Registerkarte Secrets (Geheimnisse) aus, um alle Warnungen zur Geheimnisüberprüfung anzuzeigen.

Wenn Advanced Security kürzlich für Ihr Repository aktiviert wurde, wird möglicherweise eine Karte angezeigt, die angibt, dass Advanced Security Ihr Repository noch überprüft.

Screenshot: Suchen nach Geheimnissen

Nach Abschluss der Überprüfung werden alle Ergebnisse angezeigt. Für alle erkannten eindeutigen Anmeldeinformationen wird für alle Branches und den Verlauf Ihres Repositorys eine einzelne Warnung generiert. Es gibt keine Branchfilter, da sie in einer Warnung zusammengefasst werden.

Geheimnisse von Nicht-Anbietern können angezeigt werden, indem „Andere“ in der Dropdownliste auf der Registerkarte „Geheimnisüberprüfung“ ausgewählt wird.

Screenshot des GitHub Advanced Security-Konfidenzfilters zur Geheimnisüberprüfung.

Warnungsdetails

Wenn Sie zu einer Warnung navigieren, wird eine detaillierte Ansicht der Warnung angezeigt, die weitere Details zum Befund enthält und spezifische Anweisungen zur Behebung der Warnung bietet.

Screenshot: Details zu einer Warnung der Geheimnisüberprüfung

`Section` Erklärung
Location Im Abschnitt Locations (Speicherorte) werden die Pfade angegeben, in denen die Geheimnisüberprüfung die kompromittierten Anmeldeinformationen ermittelt hat. Es können mehrere Speicherorte oder mehrere Commits im Verlauf vorhanden sein, die die kompromittierten Anmeldeinformationen enthalten. Alle diese Speicherorte und Commits werden unter Locations mit einem direkten Link zu dem Codeschnipsel und Commit angezeigt, in dem sie identifiziert wurden.
Empfehlung Der Abschnitt „recommendation“ (Empfehlung) enthält Anleitungen zur Korrektur oder einen Link zu Dokumentation mit Korrekturanleitungen von Drittanbietern für die identifizierten Anmeldeinformationen.
Schließen von Warnungen Es gibt kein Verhalten für automatische Korrekturen für Warnungen zur Geheimnisüberprüfung. Alle Warnungen zur Geheimnisüberprüfung müssen manuell über die Warnungsdetailseite als behoben bestätigt werden. Wählen Sie die Schaltfläche Close (Schließen) aus, um zu überprüfen, ob das Geheimnis widerrufen wurde.
Severity Alle Warnungen zur Geheimnisüberprüfung werden als kritisch festgelegt. Alle offengelegten Anmeldeinformationen stellen möglicherweise eine Chance für einen böswilligen Akteur dar.
Ermitteln von Details Der Typ der Anmeldeinformationen und die Regel, die zum Suchen nach den Anmeldeinformationen verwendet wird, werden unter Finding details (Suchen nach Details) auf der Randleiste der Seite mit den Warnungsdetails aufgeführt.

Bei Geheimnissen von Nicht-Anbietern wird das Tag Confidence: other auch neben dem Sicherheitsbadge in den Warnungsdetails angezeigt.

Screenshot der allgemeinen Warnungsdetails der GitHub Advanced Security-Geheimnisüberprüfung.

Korrigieren von Warnungen zur Geheimnisüberprüfung

Jedes Geheimnis verfügt über einzigartige Korrekturschritte, die Sie durch das Widerrufen und erneute Generieren eines neuen Geheimnisses als Ersatz führen. In den Warnungsdetails werden bestimmte Schritte oder Dokumentationsverweise für jede Warnung aufgeführt.

Eine Warnung zur Geheimnisüberprüfung bleibt geöffnet, bis sie geschlossen wird. So bestätigen Sie, dass eine Warnung der Geheimnisüberprüfung behoben wurde

  1. Navigieren Sie zu der Warnung, die Sie schließen möchten, und wählen Sie sie aus.
  2. Wählen Sie die Dropdownliste Close alert (Warnung schließen) aus.
  3. Wenn noch nicht ausgewählt, wählen Sie Behobene aus.
  4. Wählen Sie Close (Schließen) aus, um die Warnung zu übermitteln und zu schließen.

Screenshot: Schließen einer Warnung der Geheimnisüberprüfung

Schließen von Warnungen zur Geheimnisüberprüfung

Um Warnungen in Advanced Security zu schließen, benötigen Sie die entsprechenden Berechtigungen. Standardmäßig können nur Projektadministratoren Advanced Security-Warnungen schließen. Weitere Informationen zu Berechtigungen für Advanced Security Sie unter Verwalten von Advanced Security-Berechtigungen.

So schließen Sie eine Warnung:

  1. Navigieren Sie zu der Warnung, die Sie schließen möchten, und wählen Sie sie aus.
  2. Wählen Sie die Dropdownliste Close alert (Warnung schließen) aus.
  3. Falls noch nicht ausgewählt, wählen Sie als Schließungsgrund entweder Risk accepted (Risiko akzeptiert) oder False positive (Falsch positiv) aus.
  4. Fügen Sie dem Textfeld Comment (Kommentar) einen optionalen Kommentar hinzu.
  5. Wählen Sie Close (Schließen) aus, um die Warnung zu übermitteln und zu schließen.
  6. Der Warnungsstatus ändert sich aus Open (Offen) in Closed (Geschlossen) und zeigt Ihren Schließungsgrund an.

Screenshot: Details zum Schließen einer Warnung der Geheimnisüberprüfung

Alle Warnungen, die zuvor geschlossen wurden, können manuell erneut geöffnet werden.

Kompromittierte Geheimnisse sichern

Sobald ein Geheimnis an ein Repository übergeben wurde, ist das Geheimnis kompromittiert. Microsoft empfiehlt die folgenden Aktionen für kompromittierte Geheimnisse:

  • Für ein kompromittiertes persönliches Azure DevOps-Zugriffstoken löschen Sie das kompromittierte Token, erstellen Sie ein neues Token, und aktualisieren Sie alle Dienste, die das alte Token verwenden.
  • Überprüfen Sie für alle anderen Geheimnisse zunächst, ob das Geheimnis, das an Azure Repos committet wurde, gültig ist. Wenn dies der Fall ist, erstelle ein neues Geheimnis, aktualisiere alle Dienste, die das alte Geheimnis verwenden, und lösche dann das alte Geheimnis.
  • Identifizieren Sie alle Aktionen, die vom kompromittierten Token für die Ressourcen Ihres Unternehmens ausgeführt werden.

Wenn Sie ein Geheimnis aktualisieren, achten Sie darauf, das neue Geheimnis sicher zu speichern und sicherzustellen, dass darauf immer als Klartext zugegriffen wird und es niemals als solcher gespeichert wird. Eine Möglichkeit ist Azure Key Vault oder andere Lösungen für Geheimnisverwaltung.

Pushschutz für Geheimnisse

Der Pushschutz überprüft alle eingehenden Pushvorgänge auf Geheimnisse mit hoher Vertrauenswürdigkeit und verhindert, dass der Pushvorgang erfolgreich ist. In einer Fehlermeldung werden alle identifizierten Geheimnisse angezeigt, damit Sie sie entfernen oder die Geheimnisse bei Bedarf weiterhin pushen können.

Informationen zu Pushschutzwarnungen

Pushschutzwarnungen sind Benutzerwarnungen, die vom Pushschutz gemeldet werden. Geheimnisüberprüfung als Pushschutz überprüft derzeit Repositorys auf Geheimnisse, die von den einigen Dienstanbietern ausgestellt wurden.

Wenn der Zugriff auf eine Ressource gekoppelte Anmeldeinformationen erfordert, löst die Überprüfung des Geheimnisses ggf. nur dann eine Warnung aus, wenn beide Teile der Kopplung in derselben Datei erkannt werden. Die Kopplung stellt sicher, dass die wichtigsten Lecks nicht hinter Informationen zu partiellen Lecks versteckt bleiben. Der Paarabgleich hilft auch dabei, falsch positive Ergebnisse zu reduzieren, da beide Elemente eines Paares zusammen verwendet werden müssen, um auf die Ressource des Anbieters zuzugreifen.

Der Pushschutz blockiert möglicherweise ältere Versionen bestimmter Token nicht, da diese Token eine höhere Anzahl von False Positives erzeugen können als ihre neueste Version. Der Pushschutz blockiert möglicherweise auch keine Legacytoken. Für Token wie Azure Storage-Schlüssel unterstützt Advanced Security nur kürzlich erstellte Token und keine Token, die den Legacymustern entsprechen.

Pushschutz über die Befehlszeile

Pushschutz ist nativ in Azure DevOps Git integriert. Wenn Ihre Commits ein identifiziertes Geheimnis enthalten, wird ein Fehler angezeigt, dass Ihr Push abgelehnt wurde.

Screenshot: Aus VS Code blockierter Git-Push

Pushschutz über die Webbenutzeroberfläche

Pushschutz funktioniert auch über die Webbenutzeroberfläche. Wenn ein Geheimnis in einem Commit identifiziert wird, wird der folgende Fehlerblock angezeigt, der verhindert, dass Sie Ihre Änderungen pushen können:

Screenshot: Aus AzDO-Webbenutzeroberfläche blockierter Git-Push

Was tun, wenn Ihr Push blockiert wurde?

Pushschutz blockiert Geheimnisse, die in Nur-Text-Dateien gefunden werden, bei denen es sich in der Regel (aber nicht immer) um Textdateien wie Quellcode- oder JSON-Konfigurationsdateien handelt. Diese Geheimnisse werden als Nur-Text gespeichert. Wenn ein bösartiger Akteur Zugang zu den Dateien erhält und sie in einem öffentlichen Repository veröffentlicht werden, sind die Geheimnisse für jedermann nutzbar.

Es wird empfohlen, das Geheimnis aus der gekennzeichneten Datei zu entfernen und das Geheimnis dann aus dem Commitverlauf zu entfernen. Wenn es sich bei dem gekennzeichneten Geheimnis um einen Platzhalter oder ein Beispielgeheimnis handelt, empfiehlt es sich, das gefälschte Geheimnis so zu aktualisieren, dass die Zeichenfolge Placeholder dem gefälschten Geheimnis vorangestellt wird.

Wenn das Geheimnis in Ihrem unmittelbaren vorherigen Commit hinzugefügt wurde, ändern Sie den Commit, und erstellen Sie einen neuen Commit:

  1. Entferne das Geheimnis aus deinem Code.
  2. Committen Sie die Änderungen mit git commit --amend.
  3. Pushen Sie Ihre Änderungen erneut.

Wenn das Geheimnis früher im Verlauf hinzugefügt wurde, bearbeiten Sie Ihre Commits mithilfe eines interaktiven Rebasevorgangs:

  1. Verwenden Sie git log, um zu bestimmen, in welchem Commit Sie das Geheimnis erstmals übermittelt haben.
  2. Führen Sie einen interaktiven Rebasevorgang aus: git rebase -i [commit ID before credential introduction]~1
  3. Ermittle den zu ändernden Commit, indem du pick in der ersten Textzeile im Editor in edit änderst.
  4. Entferne das Geheimnis aus deinem Code.
  5. Committe die Änderung mit git commit --amend.
  6. Beenden Sie die Rebase-Ausführung, indem Sie git rebase --continue ausführen.

Pushen eines blockierten Geheimnisses

Die Umgehung gekennzeichneter Geheimnisse wird nicht empfohlen, weil eine Umgehung die Sicherheit Ihres Unternehmens gefährden kann. Wenn Sie bestätigen, dass ein identifiziertes Geheimnis kein False Positive ist, sollten Sie das Geheimnis aus Ihrem gesamten Branchverlauf entfernen, bevor Sie versuchen, Ihre Änderungen erneut zu pushen.

Wenn Sie der Meinung sind, dass ein blockiertes Geheimnis False Positive oder sicher zu pushen ist, können Sie den Pushschutz umgehen. Schließen Sie die Zeichenfolge skip-secret-scanning:true in Ihre Commitnachricht ein. Selbst wenn Sie den Pushschutz umgehen, wird auf der Warnungs-UX eine Warnung zur Geheimnisüberprüfung generiert, sobald das Geheimnis gepusht wird.