Skip to main content

Suchen und Beheben deines ersten Codesicherheitsrisikos

Lernen Sie die Grundlagen der Sicherung Ihres Codes kennen, indem Sie eine code scanning Warnung in einem Demo-Repository auflösen.

Wenn du das Programmieren erlernst, ist es normal, versehentlich Sicherheitsrisiken in Projekten zu verursachen. Wenn diese Sicherheitsissues nicht behoben werden, bevor du deine Arbeit freigibst, können Angreifer sie verwenden, um deinen Code zu manipulieren und auf vertrauliche Daten zuzugreifen. Daher ist es wichtig, sie so schnell wie möglich zu identifizieren und zu patchen.

Glücklicherweise gibt es Tools wie code scanning, die automatisch Schwachstellen in Ihren öffentlichen Repositories finden, erklären und sogar beheben. In diesem Lernprogramm erfahren Sie, wie Sie Ihre Arbeit mit code scanning schützen.

Einrichten des Demo-Repositorys

Beginnen wir mit dem Forken eines Demoprojekts mit einem Sicherheitsrisiko. In diesem Projekt wird eine einfache Webseite erstellt, aber da wir das Projekt nicht bereitstellen, gibt es in dieser Übung kein Sicherheitsrisiko.

  1. Navigieren Sie zum new2code/code-scanning-demo-Repository.
  2. Klicken Sie oben rechts auf der Seite auf Fork.
  3. Klicke auf der angezeigten Seite auf Create fork.

Suchen von Sicherheitsrisiken in deinem Code

Nachdem wir das Projekt eingerichtet haben, schalten wir code scanning für Ihre Verzweigung ein, um nach Sicherheitsrisiken im Code zu suchen.

  1. Klicken Sie wieder auf GitHubder Startseite Ihres Repositorys auf Security and quality.
  2. Klicken Sie in der Zeile "Code scanning Warnungen" auf Einrichten code scanning.
  3. Wählen Sie im Abschnitt "Extras" neben "CodeQL Analyse" die Option "Einrichten" aus, und klicken Sie dann auf "Standard".
  4. Klicken Sie im daraufhin angezeigten Popup auf "Aktivieren" CodeQL. Dadurch wird ein GitHub Actions Workflow ausgelöst, der Ihren Code auf Sicherheitsrisiken überprüft.
  5. Um den Status Ihres Workflows zu überprüfen, klicken Sie in der Navigationsleiste auf "Aktionen".
  6. Klicken Sie nach Abschluss des Workflows in der Navigationsleiste auf Security and quality.
  7. Wenn Sie die code scanning vom Workflow ermittelte Warnung anzeigen möchten, klicken Sie in der Seitenleiste auf Code scanning und dann auf Reflektiertes Cross-Site-Scripting.

Verständnis einer code scanning Warnung

          code scanning Nachdem wir nun eine Sicherheitsanfälligkeit im Code identifiziert haben, lassen Sie uns die in der Warnung bereitgestellten Informationen aufschlüsseln.

Standort

Die Warnung zeigt eine kleine Vorschau einer Datei, bei der die Codezeilen im Mittelpunkt stehen, die das Sicherheitsrisiko verursachen. In unserem Fall wird das Sicherheitsrisiko in Zeile 8 unserer index.js-Datei erkannt, in der wir die vom Benutzer bereitgestellten Eingaben auf unserer Website implementieren.

Wenn wir einen genaueren Blick darauf werfen, können wir sehen, dass das zugrunde liegende Issue in Zeile 7 auftritt, wenn wir Benutzereingaben greet zuweisen, ohne auf Schadcode zu überprüfen. Wenn du das Sicherheitsrisiko Schritt für Schritt im Code anzeigen möchtest, klicke in der Legende unterhalb der anfälligen Zeilen auf Show paths.

Screenshot des Ortes einer code scanning-Warnung. Eine Schaltfläche „Pfade anzeigen“ ist orange umrandet.

Beschreibung und Empfehlung

Unter der Dateivorschau code scanning finden Sie eine detailliertere Beschreibung der Sicherheitsanfälligkeit. Um den empfohlenen Fix sowie Beispiele für anfälligen und festen Code anzuzeigen, klicken Sie auf " Mehr anzeigen".

Screenshot: Details einer code scanning-Warnung. Eine Dropdownliste mit der Bezeichnung „Mehr anzeigen“ ist orange umrandet.

In unserem Fall wird empfohlen, die Benutzereingabe vor der Verwendung zu bereinigen. Dies bedeutet, dass wir die Eingabe auf Schadcode überprüfen und dann bei Bedarf bereinigen müssen.

Tipp

Wenn Sie den empfohlenen Fix nicht vollständig verstehen, versuchen Sie, zu fragen, ob Copilot-Chat es erläutert werden kann.

Zeitachse

Schließlich kannst du die Zeitleiste der Warnung am unteren Rand der Seite sehen. Die Zeitleiste enthält den Commit, bei dem das Sicherheitsrisiko zuerst erkannt wurde, und wird automatisch aktualisiert, wenn das Sicherheitsrisiko behoben wird.

Screenshot der Zeitleiste einer code scanning-Warnung.

Automatisches Beheben eines Sicherheitsrisikos

Um unser Projekt schnell und einfach zu sichern, lassen Sie uns GitHub Copilot Autofix für code scanning verwenden.

  1. Unterhalb des Warnungstitels wird Ihnen in dem Feld vorgeschlagen: "Beschleunigen Sie die Behebung dieser Warnung mithilfe von Copilot Autofix für CodeQL", klicken Sie auf Generieren Sie Fix.

  2. Nachdem Copilot den Fixvorschlag generiert hat, werden die vorgeschlagenen Änderungen beschrieben, eine Vorschau der Änderungen gerendert und alle hinzugefügten Abhängigkeiten herausgestellt. Nehmen Sie sich einen Moment Zeit, um sich die Arbeit von Copilot anzusehen.

  3. Zum Erstellen eines Pull Requests mit dem Fix klicke auf Commit to new branch und dann auf Commit change.

  4. Nachdem der Entwurf des Pull Requests erstellt wurde, klicke unten auf der Seite auf Ready for review, damit er zusammengeführt werden kann.

  5. Klicke zum Anwenden des Fix auf Merge pull request und dann auf Confirm merge.

    Sobald der Pull Request zusammengeführt und der code scanning Workflow erneut ausgeführt wird, wird der Alert automatisch geschlossen, und der Commit zur Behebung der Vulnerabilität wird der Zeitachse hinzugefügt.

Hinweis

In echten Projekten sollten Sie die von Copilot vorgeschlagenen Änderungen immer überprüfen, bevor Sie diese in Ihren Code einfügen.

Nächste Schritte

Nachdem Sie es nun in einem Demo-Repository ausprobiert code scanning haben, aktivieren Sie es in Ihren eigenen Projekten , um aktuelle und zukünftige Sicherheitsrisiken schnell zu finden und zu beheben.

Nachdem du den Code gesichert hast, den du selbst geschrieben hast, führe den nächsten Schritt in Richtung sicherer Code aus, indem du die Sicherheit deiner Abhängigkeiten überprüfst. Weitere Informationen findest du unter Finden und Beheben Ihrer ersten Abhängigkeitsverwundbarkeit.