CodeQL ist die von GitHub entwickelte Codeanalyse-Engine zum Automatisieren von Sicherheitsprüfungen. Du kannst deinen Code mithilfe von CodeQL analysieren und die Ergebnisse als code scanning-Warnungen anzeigen.
Es gibt drei Hauptmethoden für die Verwendung der CodeQL-Analyse für code scanning:
-
Verwende das Standardsetup, um die CodeQL-Analyse für das code scanning in deinem Repository schnell zu konfigurieren. Beim Standardsetup werden automatisch die zu analysierende Sprache, die auszuführende Abfragesammlung und Ereignisse ausgewählt, die Überprüfungen auslösen. Wenn Sie möchten, können Sie die auszuführende Abfragesuite und die zu analysierenden Sprachen manuell auswählen. Nachdem du CodeQL aktiviert hast, werden von GitHub Actions Workflowausführungen zur Überprüfung deines Codes ausgeführt. Weitere Informationen finden Sie unter Konfigurieren des Standardsetups für das Codescanning.
-
Verwende das erweitere Setup, um deinem Repository den Workflow von CodeQL hinzuzufügen. Dadurch wird eine anpassbare Workflowdatei generiert, von der github/codeql-action dazu verwendet wird, die CodeQL CLI auszuführen. Weitere Informationen finden Sie unter Konfigurieren des erweiterten Setups für das Codescanning.
-
Führe die CodeQL CLI direkt in einem externen CI-System aus, und lade die Ergebnisse auf GitHub hoch. Weitere Informationen finden Sie unter Verwenden der Codeüberprüfung mit deinem vorhandenen CI-System.
Informationen zu code scanning-Warnungen findest du unter Informationen zu Codeüberprüfungswarnungen.
Informationen zu CodeQL
CodeQL ist eine Programmiersprache und zugehörige Tools, die Code wie Daten behandeln. Sie wurde ausdrücklich entwickelt, um die Analyse von Code zu erleichtern und potenzielle Schwachstellen in Ihrem Code mit größerer Sicherheit zu finden als herkömmliche statische Analysetools.
- Du generierst eine CodeQL-Datenbank zum Darstellen deiner Codebasis.
- Danach führst du CodeQL-Abfragen von dieser Datenbank aus, um Probleme in der Codebasis zu ermitteln.
- Die Abfrageergebnisse werden als code scanning-Warnungen in GitHub angezeigt, wenn du CodeQL mit code scanning verwendest.
CodeQL unterstützt sowohl kompilierte als auch interpretierte Sprachen und kann Sicherheitsrisiken und Fehler in Code finden, der in den unterstützten Sprachen geschrieben wurde.
- C/C++
- C#
- OK
- Java/Kotlin
- JavaScript/TypeScript
- Python
- Ruby
- Swift
Note
- Verwenden Sie
java-kotlin
, um Code zu analysieren, der in Java, Kotlin oder beidem geschrieben wurde. - Verwenden Sie
javascript-typescript
, um Code zu analysieren, der in JavaScript, TypeScript oder beidem geschrieben wurde.
Weitere Informationen findest du in der Dokumentation zur CodeQL-Website: Unterstützte Sprachen und Frameworks.
Modellieren von benutzerdefinierten oder Nischenframeworks
GitHub Experten, Sicherheitsforscher und Mitarbeiter der Community schreiben Bibliotheken zur Modellierung des Datenflusses in gängigen Frameworks und Bibliotheken. Wenn Sie benutzerdefinierte Abhängigkeiten verwenden, die nicht modelliert sind, können Sie die CodeQL-Erweiterung für Visual Studio Code verwenden, um Modelle für diese Abhängigkeiten zu erstellen und sie zum Erweitern der Analyse zu verwenden. Weitere Informationen finden Sie unter Verwenden des CodeQL-Modell-Editors.
CodeQL-Abfragen
Expertinnen, Sicherheitsforscherinnen und Mitwirkende der Community von GitHub schreiben und verwalten die Standardabfragen in CodeQL, die für code scanning verwendet werden. Die Abfragen werden regelmäßig aktualisiert, um die Analyse zu verbessern und falsch-positive Ergebnisse zu reduzieren.
Schreiben eigener Abfragen
Die Abfragen sind Open-Source-Code, d. h. Sie können die Abfragen im github/codeql-Repository einsehen und zu ihnen beitragen. Weitere Informationen findest du unter Informationen zu CodeQL-Abfragen in der Dokumentation zu CodeQL.
Ausführen zusätzlicher Abfragen
Wenn du den Code mit dem erweiterten Setup oder einem externen CI-System scannst, kannst du zusätzliche Abfragen im Rahmen der Analyse ausführen.
Diese Abfragen müssen zu einem veröffentlichten CodeQL-Abfragepaket oder einem CodeQL-Paket in einem Repository gehören.
-
Wenn ein CodeQL-Abfragepaket im GitHub Container registry veröffentlicht wird, sind alle für die Abfragen benötigten transitiven Abhängigkeiten und ein Kompilierungscache im Paket enthalten. So wird die Leistung verbessert und sichergestellt, dass das Ausführen der Abfragen im Paket jedes Mal zu identischen Ergebnisse führt, bis du ein Upgrade auf eine neue Version des Pakets oder der CLI durchführst.
-
CodeQL-Abfragepakete können von mehreren GitHub-Containerregistrierungen heruntergeladen werden. Weitere Informationen finden Sie unter Anpassen des erweiterten Setups für das Codescanning.
Weitere Informationen finden Sie unter Anpassen der Analyse mit CodeQL-Paketen.