Willkommen im Code -Scan -Java -Tutorial! Dieses Tutorial führt Sie durch die Einrichtung von GitHub Advanced Security: Code -Scannen sowie die Interpretation von Ergebnissen, die es möglicherweise finden. Das folgende Repository enthält eine SQL -Injektionsanfälligkeit für Demonstrationszwecke.
Das Scannen von Code ist eine Funktion, mit der Sie den Code in einem GitHub -Repository analysieren, um Sicherheitslücken und Codierungsfehler zu finden. Alle durch die Analyse identifizierten Probleme sind in GitHub gezeigt.
Sie können das Code -Scan mit CODEQL, einer semantischen Code -Analyse -Engine, verwenden. CODEQL behandelt Code als Daten und ermöglicht es Ihnen, potenzielle Schwachstellen in Ihrem Code mit größerer Vertrauen zu finden als herkömmliche statische Analysatoren.
Dieses Tutorial mit CODEQL -Analyse mit Code -Scannen, um nach Sicherheitslücken in Ihrem Code zu suchen.
Erstellen Sie zunächst ein neues Repository aus einer Gabel (öffentlich) oder klonen Sie das Repository.

Wo das Erstellen des Forked Repository erstellt wird, stellen Sie sicher, dass Sie sicherstellen
Klicken Sie auf die Registerkarte Security .

Klicken Sie auf Set up code scanning .

Klicken Sie auf die Schaltfläche Setup this workflow Schaltfläche CODEQL -Analyse einrichten.

Dadurch wird eine Workflow -Datei mit GitHub -Aktionen erstellt, in der der bereits eingerichtete CODEQL eingerichtet ist. Da Java eine kompilierte Sprache ist, müssen Sie den Build in späteren Schritten einrichten. Sehen Sie sich die Dokumentation an, wenn Sie die CODEQL -Analyse mit einem CI -System der Drittanbieter konfigurieren möchten, anstatt GitHub -Aktionen zu verwenden.
Die Aktions -Workflow -Datei enthält eine Reihe verschiedener Abschnitte, darunter:

Klicken Sie auf Start Commit -> Commit this file um die Änderungen an der Hauptzweigung zu begehen.
Es gibt eine Reihe von Ereignissen, die einen Workflow von Github -Aktionen auslösen können. In diesem Beispiel wird der Workflow ausgelöst

Das Einrichten des neuen CodeQL -Workflows und das Festlegen des Hauptzweigs im obigen Schritt auslösen den Scan.
Klicken Sie auf die Registerkarte Actions -> CodeQL
Klicken Sie auf den speziellen Workflow -Lauf. Sie können den Fortschritt des Workflow -Laufs bis zur Analyse anzeigen.

Sobald der Workflow abgeschlossen ist, klicken Sie auf die Registerkarte Security -> Code Scanning Alerts . Eine Sicherheitswarnung "Abfrage aus benutzerdefinierten Quellen" sollte sichtbar sein.
Wenn Sie auf den Sicherheitsalarm klicken, werden Details zum Sicherheitsalarm angezeigt, einschließlich:

Klicken Sie Show more , um eine vollständige Entfernung der Warnung anzuzeigen, einschließlich Beispiele und Links zu zusätzlichen Informationen.


Die CODEQL -Analyse kann den DataFlow -Pfad von Quelle zu sinken und können Sie den Pfad Traversal innerhalb der Warnung anzeigen.
Klicken Sie auf show paths , um den DataFlow -Pfad anzuzeigen, der zu dieser Warnung führte.


Um diese spezifische Warnung zu beheben, müssen wir sicherstellen, dass die in der SQL -Abfrage verwendeten Parameter validiert und saniert werden.
Klicken Sie auf die Registerkarte Code und bearbeiten Sie die Datei IndexController.java im Ordner Controllers und ersetzen Sie den Inhalt durch die fixme .

Klicken Sie Create a new branch for this commit and start a pull request , nennen Sie die Filiale fix-sql-injection und erstellen Sie die Pull-Anforderung.
In der Pull -Anfrage werden Sie feststellen, dass die CODEQL -Analyse als Statusprüfung begonnen hat. Warten Sie, bis es abgeschlossen ist.

Nachdem der Workflow abgeschlossen hat, klicken Sie auf Details durch die Code Scanning Results / CodeQL -Statusprüfung.

Beachten Sie, dass das Scannen des Codes festgestellt hat, dass diese Pull -Anfrage die zuvor erkannte Schwachstelle mit SQL -Injektion festlegt.

Führen Sie die Pull -Anfrage zusammen. Nachdem die Pull -Anfrage zusammengeführt wurde, wird ein weiterer Workflow eingeschaltet, um das Repository nach Schwachstellen zu scannen.
Nach Abschluss des endgültigen Workflows navigieren Sie zurück zur Registerkarte Security und klicken Sie auf Closed . Beachten Sie, dass die Abfrage, die aus benutzerdefinierten Quellen-Sicherheitswarnungen erstellt wurde, jetzt als geschlossenes Problem angezeigt wird.

Klicken Sie auf die Sicherheitswarnung und beachten Sie, dass es beschrieben wird, wenn das Fix vorgenommen wurde, von wem und dem spezifischen Commit. Dies bietet die vollständige Rückverfolgbarkeit für Details, wann und wie ein Sicherheitsalarm festgelegt wurde und was genau geändert wurde, um das Problem zu beheben.

Nachdem wir die CodeQL -Analyse eingerichtet haben und einen Sicherheitswarnungswarnungswarn haben, können wir versuchen, eine Warnung in eine Pull -Anfrage einzuführen.
Erstellen Sie eine neue Pull-Anfrage mit dem Basiszweig als main und der Vergleichszweig als new-feature Branch.

Stellen Sie sicher, dass der Basiszweig auf Ihre eigenen Repositories main im Vergleich zum main des ursprünglichen Repositorys eingestellt ist.
Sobald die Pull -Anfrage erstellt wurde, werden Sie feststellen, dass die CODEQL -Analyse als Statusprüfung begonnen hat. Warten Sie, bis es abgeschlossen ist.
Nach Abschluss des Workflows ist die Code Scanning Results / CodeQL -Statusprüfung fehlgeschlagen. Beachten Sie, dass das Scannen des Codes festgestellt hat, dass diese Pull -Anfrage eine neue Sicherheitswarnung einführt.

In der Pull -Anfrage stellen Sie fest, dass Github -Code -Scan -Bot eine Überprüfung der Pull -Anfrage mit den Sicherheitswarnungsdetails hinterlassen hat. Dies wird den Entwicklern helfen, Sicherheitsprobleme schnell zu identifizieren, die in ihren Pull -Anfragen eingeführt wurden.

Dies ermöglicht auch die Zusammenarbeit zwischen Entwicklern und Sicherheitsteams, um den Sicherheitsalarm zu diskutieren und zu beheben.

Klicken Sie auf Show more details mit dem neuen Code Scanning Alert um zur Registerkarte Security zu springen und die Details zur Sicherheitswarnung anzusehen.

Beachten Sie, dass der Sicherheitsalarm In pull request und nicht in der main (Produktion) gefunden wurde.
Bereit, über erweiterte Sicherheitsfunktionen für Github Enterprise zu sprechen? Wenden Sie sich an den Verkauf, um weitere Informationen zu erhalten!
Weitere Sicherheitsfunktionen finden Sie in GitHub.
In der Code -Scan -Dokumentation finden Sie zusätzliche Konfigurationsoptionen und technische Details.