Informationen zu code scanning mit CodeQL
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 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. Bei Bedarf kannst du die auszuführende Abfragesammlung 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 findest du 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 findest du 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 findest du unter Informationen zur CodeQL-Codeüberprüfung in deinem CI-System.
Informationen zu code scanning-Warnungen findest du unter Informationen zu Codeüberprüfungswarnungen.
Informationen zu CodeQL
CodeQL behandelt code wie Daten, sodass du mögliche Sicherheitsrisiken in deinem Code zuverlässiger findest als mit herkömmlichen statischen 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#
- Go
- Java/Kotlin
- JavaScript/TypeScript
- Python
- Ruby Swift
Hinweise:
- Die CodeQL-Analyse für Swift befindet sich derzeit in der Betaphase. Während der Betaphase ist die Analyse von Swift weniger umfassend als die CodeQL-Analyse anderer Sprachen. Darüber hinaus wird Swift 5.8 noch nicht unterstützt.
- Die CodeQL-Analyse für Kotlin ist derzeit als Betaversion verfügbar. Während der Betaphase ist die Analyse von Kotlin weniger umfassend als die CodeQL-Analyse für andere Sprachen.
- Verwende
java
zum Analysieren von Code, der in Java, Kotlin oder beiden Sprachen geschrieben wurde. - Verwende
javascript
zum Analysieren von Code, der in JavaScript, TypeScript oder beiden Sprachen geschrieben wurde.
Weitere Informationen findest du in der Dokumentation zur CodeQL-Website: Unterstützte Sprachen und Frameworks.
Informationen zu 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 verringern. Bei den Abfragen handelt es sich um Open-Source-Abfragen, sodass du sie im github/codeql
-Repository anzeigen und zu ihnen beitragen kannst. Weitere Informationen findest du unter CodeQL auf der CodeQL-Website. Du kannst auch eigene Abfragen schreiben. Weitere Informationen findest du unter Informationen zu CodeQL-Abfragen in der Dokumentation zu CodeQL.
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 (Beta) oder einem CodeQL-Paket in einem Repository gehören. CodeQL-Pakete (Beta) bieten gegenüber herkömmlichen QL-Paketen die folgenden Vorteile:
- Wenn ein CodeQL-Abfragepaket (Beta) im GitHub Container registry veröffentlicht wird, sind alle von den 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.
- QL-Pakete enthalten keine transitiven Abhängigkeiten, sodass Abfragen in diesen Paketen nur von den Standardbibliotheken (d. h. den Bibliotheken, auf die eine
import LANGUAGE
-Anweisung in deiner Abfrage verweist) oder Bibliotheken im gleichen QL-Paket wie die Abfrage abhängig sein können. - CodeQL-Abfragepakete (Beta) können von mehreren GitHub-Containerregistrierungen heruntergeladen werden. Weitere Informationen findest du unter Anpassen des erweiterten Setups für Codeüberprüfung.
Weitere Informationen findest du unter Anpassen der Analyse mit CodeQL-Paketen.
Hinweis: Die CodeQL-Paketverwaltungsfunktionen, einschließlich CodeQL-Paketen, befinden sich derzeit in der Betaphase und können noch geändert werden.