Skip to main content
Wir veröffentlichen regelmäßig Aktualisierungen unserer Dokumentation, und die Übersetzung dieser Seite ist möglicherweise noch nicht abgeschlossen. Aktuelle Informationen findest du in der englischsprachigen Dokumentation.

Informationen zu Codeüberprüfungswarnungen

Hier erfährst du mehr über die verschiedenen Arten von Codeüberprüfungswarnungen und die Informationen, die dir dabei helfen, das Problem zu verstehen, das von der jeweiligen Warnung hervorgehoben wird.

Code scanning ist für alle öffentlichen Repositorys auf GitHub.com verfügbar. Zur Verwendung von code scanning in einem privaten organisationseigenen Repository musst du über eine Lizenz für GitHub Advanced Security verfügen. Weitere Informationen findest du unter Informationen zu GitHub Advanced Security.

Informationen zu Warnungen durch die code scanning

Du kannst die code scanning so konfigurieren, dass der Code in einem Repository mit der CodeQL-Standardanalyse, einer Analyse eines Drittanbieters oder mehreren Arten von Analysen überprüft wird. Nach Abschluss der Analyse werden die daraus resultierenden Warnungen in der Sicherheitsansicht des Repositorys nebeneinander angezeigt. Ergebnisse von Drittanbietertools oder benutzerdefinierten Abfragen enthalten möglicherweise nicht alle Eigenschaften, die in Warnungen der CodeQL-Standardanalyse von GitHub angezeigt werden. Weitere Informationen findest du unter Konfigurieren der Codeüberprüfung für ein Repository.

Standardmäßig wird dein Code im Standardbranch und bei Pull Requests über das code scanning regelmäßig analysiert. Informationen zum Verwalten von Warnungen für einen Pull Request findest du unter Filtern von Codescanbenachrichtigungen in Pull-Anforderungen.

Du kannst die Aktionen, die als Reaktion auf code scanning-Warnungen ergriffen wurden, mit GitHub-Tools überprüfen. Weitere Informationen findest du unter Prüfen von Sicherheitswarnungen.

Informationen zu Warnungsdetails

Bei jeder Warnung werden das Problem mit dem Code und der Name des Tools, das dieses erkannt hat, hervorgehoben. Du kannst die Codezeile anzeigen, die die Warnung ausgelöst hat, sowie Eigenschaften der Warnung (z. B. Warnungsschweregrad, Sicherheitsschweregrad und die Art des Problems). Warnungen informieren dich auch darüber, seit wann das Problem besteht. Bei Warnungen, die von der CodeQL-Analyse identifiziert wurden, werden auch Informationen zur Behebung des Problems angezeigt.

Der Status und die Details auf der Warnungsseite spiegeln nur den Status der Warnung für den Standardbranch des Repositorys wider, auch wenn die Warnung in anderen Branches vorhanden ist. Du kannst den Status der Warnung für nicht standardmäßigen Branches im Abschnitt Betroffene Branches rechts auf der Warnungsseite sehen. Wenn eine Warnung im Standardbranch nicht vorhanden ist, wird der Status der Warnung als „in Pull Request“ oder „in Branch“ in grau angezeigt.

Screenshot: Elemente einer code scanning-Warnung mit dem Titel der Warnung und den relevanten Codezeilen auf der linken Seite sowie dem Schweregrad, den betroffenen Branches und Schwachstellen auf der rechten Seite.

Wenn du die code scanning mit CodeQL konfigurierst, können auch Datenflussprobleme in deinem Code erkannt werden. Die Datenflussanalyse findet potenzielle Sicherheitsprobleme in Code wie die unsichere Verwendung von Daten, die Übergabe gefährlicher Argumente an Funktionen und das Durchsickern vertraulicher Informationen.

Wenn die code scanning Datenflusswarnungen meldet, zeigt GitHub Ihnen, wie die Daten durch den Code fließen. Mit der Code scanning kannst du die Bereiche deines Codes identifizieren, in denen vertrauliche Informationen offengelegt werden und die einen möglichen Einstiegspunkt für böswillige Benutzer*innen darstellen.

Informationen zu Schweregraden

Mögliche Warnungsschweregrade sind Error, Warning und Note.

Wenn die code scanning als Überprüfung für Pull Requests aktiviert ist, tritt bei der Überprüfung ein Fehler auf, wenn Ergebnisse mit dem Schweregrad error gefunden werden. Du kannst angeben, welcher Schweregrad für Codeüberprüfungswarnungen einen Überprüfungsfehler verursacht. Weitere Informationen findest du unter Anpassen der Codeüberprüfung.

Informationen zu Sicherheitsschweregraden

Die Code scanning zeigt Sicherheitsschweregrade für Warnungen an, die von Sicherheitsabfragen generiert wurden. Die Sicherheitsschweregrade können Critical, High, Medium oder Low sein.

Für die Berechnung des Sicherheitsschweregrads einer Warnung verwenden wir CVSS-Daten (Common Vulnerability Scoring System). Das CVSS ist ein offenes Framework, über das die Merkmale und Schweregrade von Sicherheitsrisiken bei Software kommuniziert werden und das häufig von anderen Sicherheitsprodukten für die Bewertung von Warnungen verwendet wird. Weitere Informationen dazu, wie Schweregrade berechnet werden, findest du in diesem Blogbeitrag.

Standardmäßig führen alle Ergebnisse der code scanning mit einem Sicherheitsschweregrad von Critical oder High dazu, dass bei der Überprüfung ein Fehler auftritt. Du kannst angeben, welcher Sicherheitsschweregrad bei Ergebnissen der code scanning zu einem Fehler bei der Überprüfung führen soll. Weitere Informationen findest du unter Anpassen der Codeüberprüfung.

Informationen zu Warnungen aus mehreren Konfigurationen

Du kannst für ein Repository mehrere Konfigurationen für Codeanalysen mit verschiedenen Tools sowie für verschiedene Sprachen oder Bereiche des Codes ausführen. Jede Konfiguration von code scanning generiert eindeutige Warnungen. Beispielsweise stammt eine Warnung, die mithilfe der CodeQL-Standardanalyse mit GitHub Actions generiert wurde, aus einer anderen Konfiguration als eine Warnung, die extern generiert und über die code scanning-API hochgeladen wird.

Wenn du mehrere Konfigurationen zum Analysieren einer Datei verwendest, werden alle im Rahmen einer einzelnen Abfrage erkannten Probleme als Warnungen gemeldet, die von mehreren Konfigurationen generiert wurden. Wenn eine Warnung in mehreren Konfigurationen vorhanden ist, wird die Anzahl der Konfigurationen neben dem Branchnamen im Abschnitt „Betroffene Branches“ auf der rechten Seite der Warnungsseite angezeigt. Um die Konfigurationen für eine Warnung anzuzeigen, klicke im Abschnitt „Betroffene Branches“ auf einen Branch. Die modale Ansicht „Analysierende Konfigurationen“ wird mit den Namen jeder Konfiguration angezeigt, die die Warnung für diesen Branch generiert. Unter jeder Konfiguration wird angezeigt, wann die Warnung dieser Konfiguration zuletzt aktualisiert wurde.

Bei einer Warnung werden möglicherweise andere Status von verschiedenen Konfigurationen angezeigt. Um die Warnungsstatus zu aktualisieren, führe jede veraltete Konfiguration erneut aus. Alternativ kannst du veraltete Konfigurationen aus einem Branch löschen, um veraltete Warnungen zu entfernen. Weitere Informationen zum Löschen veralteter Konfigurationen und Warnungen findest du unter Verwalten von Codescanwarnungen für dein Repository.

Informationen zu Kennzeichnungen für nicht in Anwendungscode gefundene Warnungen

GitHub Enterprise Cloud weist Warnungen, die nicht in Anwendungscode gefunden wurden, eine Kategoriekennzeichnung zu. Mit dieser Kennzeichnung wird angegeben, wo die Warnung gefunden wurde.

  • Generiert: Vom Buildprozess generierter Code
  • Test: Testcode
  • Bibliothek: Bibliotheks- oder Drittanbietercode
  • Dokumentation: Dokumentation

Bei der Code scanning werden die Dateien basierend auf dem Dateipfad kategorisiert. Ein manuelles Kategorisieren von Quelldateien ist nicht möglich.

In diesem Beispiel wird eine Warnung wie in der code scanning-Warnungsliste als „Test“ markiert.

Screenshot: Warnung in der code scanning-Liste. Rechts neben dem Titel ist die Bezeichnung „Test“ orange umrandet.

Beim Durchklicken durch die Warnungsdetails fällt auf, dass der Dateipfad als „Test“ markiert ist.

Screenshot: Details einer Warnung. Der Dateipfad und die Bezeichnung „Test“ sind orange umrandet.

Informationen zu experimentellen Warnungen

Hinweis: Experimentelle Warnungen für code scanning werden mithilfe experimenteller Technologie in der Aktion CodeQL erstellt. Dieses Feature ist derzeit als Betarelease für JavaScript-Code verfügbar und kann noch geändert werden.

In Repositorys, die die code scanning mithilfe der CodeQL-Aktion ausführen, wirst du möglicherweise sehen, dass einige Warnungen als experimentell gekennzeichnet sind. Dies sind Warnungen, die mithilfe eines Machine Learning-Modells gefunden wurden, mit dem die Funktionen einer bestehenden CodeQL-Abfrage erweitert wurden.

Screenshot: Warnung für code scanning. Rechts neben dem Titel, dem ein „(experimentell)“ angefügt ist, wird die Bezeichnung „Experimentell“ angezeigt.

Vorteile der Verwendung von Machine Learning-Modellen zum Erweitern von Abfragen

Abfragen, bei denen Machine Learning-Modelle verwendet werden, können Sicherheitsrisiken in Code finden, der mithilfe von Frameworks und Bibliotheken geschrieben wurde, die die Person, die die ursprüngliche Abfrage erstellt hat, in der Abfrage nicht berücksichtigt hat.

Alle Sicherheitsabfragen für CodeQL erkennen Code, der anfällig für eine bestimmte Art von Angriff ist. Die Abfragen werden von Sicherheitsforschern erstellt, die dabei die am häufigsten verwendeten Frameworks und Bibliotheken berücksichtigen. Daher findet jede vorhandene Abfrage Anwendungsfälle für häufig verwendete Frameworks und Bibliotheken, durch die Sicherheitsrisiken entstehen. Entwickler verwenden jedoch viele verschiedene Frameworks und Bibliotheken, und eine manuell verwaltete Abfrage kann nicht alle davon berücksichtigen. Daher decken manuell verwaltete Abfragen nicht alle Frameworks und Bibliotheken ab.

CodeQL verwendet ein Machine Learning-Modell, um eine vorhandene Sicherheitsabfrage zu erweitern, sodass eine größere Auswahl von Frameworks und Bibliotheken abgedeckt wird. Das Machine Learning-Modell wird darauf trainiert, Probleme in Code zu erkennen, der ihm noch nie zuvor begegnet ist. Abfragen, die das Modell verwenden, finden Ergebnisse für Frameworks und Bibliotheken, die in der ursprünglichen Abfrage nicht beschrieben werden.

Mithilfe von maschinellem Lernen gefundene Warnungen

Warnungen, die mithilfe eines Machine Learning-Modells gefunden wurden, werden mit dem Banner „Experimentelle Warnungen“ angezeigt, da sich diese Technologie derzeit in einer Phase der aktiven Entwicklung befindet. Bei diesen Warnungen gibt es eine höhere Rate falsch positiver Ergebnisse als bei den Abfragen, auf denen sie basieren. Das Machine Learning-Modell verbessert sich durch Benutzeraktionen wie das Kennzeichnen eines schlechten Ergebnisses als False Positive oder das Beheben eines Problems aus einem guten Ergebnis.

Aktivieren von experimentellen Warnungen

Die CodeQL-Standardabfragesammlungen enthalten keine Abfragen, die maschinelles Lernen zum Generieren experimenteller Warnungen verwenden. Damit während der code scanning Machine-Learning-Abfragen ausgeführt werden, musst du die zusätzlichen Abfragen in einer der folgenden Abfragesammlungen ausführen.

AbfrageauflistungBeschreibung
security-extendedAbfragen aus der Standardsammlung sowie Abfragen zu niedrigeren Schweregraden und Genauigkeit
security-and-qualityAbfragen von security-extended, sowie zusätzliche Abfragen zur Verwaltbarkeit und Zuverlässigkeit

Wenn du deinen Workflow so aktualisierst, dass eine zusätzliche Abfragesammlung ausgeführt wird, erhöht sich die Analysezeit.

- uses: github/codeql-action/init@v2
  with:
    # Run extended queries including queries using machine learning
    queries: security-extended

Weitere Informationen findest du unter Anpassen der Codeüberprüfung.

Deaktivieren von experimentellen Warnungen

Die einfachste Möglichkeit, Abfragen zu deaktivieren, die maschinelles Lernen zum Generieren experimenteller Warnungen verwenden, besteht darin, das Ausführen der Abfragesammlung security-extended oder security-and-quality zu beenden. Im obigen Beispiel würdest du hierfür die queries-Zeile auskommentieren. Wenn du die Sammlung security-extended oder security-and-quality weiterhin ausführen musst und die Machine-Learning-Abfragen Probleme verursachen, kannst du ein Ticket mit den folgenden Angaben an den GitHub-Support senden.

  • Tickettitel: „code scanning: Entfernen aus der Betaversion für experimentelle Warnungen“
  • Gib ausführliche Informationen zu den betroffenen Repositorys oder Organisationen an.
  • Beantrage eine Eskalation an das Entwicklungsteam.