GitHub hat eine statische Code-Analyse für Schwachstellen gestartet





Nach umfangreichen Tests hat GitHub die Schwachstellen-Scan- Funktion öffentlich verfügbar gemacht . Jeder kann einen Scanner in seinem eigenen Repository ausführen und Schwachstellen finden, bevor er in die Produktion geht. Der Scanner funktioniert für Repositorys in C, C ++, C #, JavaScript, TypeScript, Python und Go.



Der Scanner basiert auf der von Semmle entwickelten CodeQL-Technologie, die GitHub im vergangenen Jahr erworben hat . CodeQL gilt als der weltweit erste Schwachstellenscanner. Der Beta-Test wurde im Mai 2020 auf GitHub gestartet. Die Funktion steht nun allen zur Verfügung.



So schalten Sie ein



Das Scannen beginnt auf der Registerkarte Sicherheit im Repository.







Dort klicken wir auf Code-Scan einrichten .







Im nächsten Fenster müssen wir den Workflow auswählen, den wir zum Scannen verwenden möchten. Tatsache ist, dass CodeQL die Verbindung von Engines von Drittanbietern unterstützt. Wählen Sie für die Standard-Engine "CodeQL-Analyse".







Grundsätzlich kann dieser Workflow konfiguriert werden: Geplantes Scannen aktivieren, nach jedem scannen pushoder Anforderung abrufen, eigene Konfigurationsdatei verwenden, zusätzliche Suchanfragen während des Scannens starten .



Klicken Sie dann auf die Schaltfläche Start Commit und schreiben Sie einen Namen für das neue Commit.







Wir entscheiden uns, uns für den Hauptzweig zu engagieren oder einen neuen Zweig zu erstellen und eine Pull-Anfrage zu starten.







Das ist alles. Am Ende klicken Sie auf die neue Datei Commit oder neue Datei vorschlagen Schaltfläche .



Nach dem Festlegen des Commits analysiert der Schwachstellenscanner Ihren Code gemäß der im Workflow angegebenen Häufigkeit .



Nach der Aktivierung von CodeQL können Sie die Ergebnisse anzeigen und die Scanparameter ändern .



CodeQL-Engine







Die CodeQL-Engine sucht mithilfe eines Wörterbuchs mit mehr als 2000 Abfragen nach potenziellen Schwachstellen. Das Wörterbuch wird von GitHub und der Community von Benutzern zusammengestellt, die das System getestet haben. Diese Datenbank wird ständig aktualisiert, und jeder kann sie einzeln hinzufügen, indem er einfach die Konfigurationsdatei bearbeitet.



Das Scan-Tool basiert auf dem statischen Code-Analysestandard SARIF (OASIS Static Analysis Results Interchange Format) und unterstützt die Verbindung von Engines von Drittanbietern, die in einer einzigen Schnittstelle arbeiten. Der Export von Ergebnissen über eine einheitliche API wird ebenfalls unterstützt.



Seit der Einreichung im Mai 2020 wurden mehr als 12.000 Repositorys gescannt (insgesamt 1,4 Millionen Durchgänge) und über 20.000 Sicherheitsprobleme identifiziert, darunter RCE-Schwachstellen (Remote Code Execution), SQL Injection und Cross-Site Scripting (XSS).



Entwickler und Betreuer haben 72% der gefundenen Sicherheitslücken innerhalb von 30 Tagen nach ihrer Entdeckung behoben, bevor der Code in den Hauptzweig eingefügt wurde. Dies ist ein gutes Ergebnis, da laut Statistik weniger als 30% der gefundenen Sicherheitslücken innerhalb eines Monats nach der Erkennung behoben werden.



Als Ergebnis von Betatests wurden 132 Commits aus der Community für das Open Source-Abfragewörterbuch vorgenommen. Damit GitHub-Benutzer Tools von Drittanbietern ausführen können, wurden Vereinbarungen mit mehr als einem Dutzend Entwicklern von Sicherheitssystemen und Open Source-Tools für die statische Analyse, das Scannen von Containern und die Validierung der Infrastruktur als Code (Infrastructure-as-Code; IaC) geschlossen. Dies ist ein Ansatz zum Verwalten und Beschreiben der Infrastruktur durch Konfiguration Dateien und nicht durch manuelle Bearbeitung von Konfigurationen auf Servern oder interaktive Interaktion.



GitHub sucht nicht nur nach Schwachstellen, sondern arbeitet auch mit 24 Drittanbietern zusammen, um deren Geheimnisse in ihrem Code zu finden, der nicht im Klartext veröffentlicht werden kann, z. B. Zugriffsschlüssel. Zu den Partnern gehören AWS, Google Cloud, Azure, Dropbox, Slack, Discord, npm, Stripe und Twilio. Das Scannen nach Geheimnissen erfolgt automatisch sowohl in öffentlichen als auch in privaten Repositorys.







Das Scannen von Code ist für öffentliche Repositorys kostenlos und im Advanced Security-Paket für GitHub Enterprise enthalten (d. H. Es handelt sich um einen kostenpflichtigen Dienst ). Einige exotische Optionen (Liste der zulässigen IP-Adressen, SAML, LDAP-Unterstützung usw.) sind nur in der kostenpflichtigen Version verfügbar.



Sie müssen jedoch eine Fliege in der Salbe zu diesem Fass Honig hinzufügen. Einige Autoren von Open-Source-Programmen beschweren sich ( 1 ,2 ) dass der Scan zu viele Fehlalarme liefert.





Theoretisch ist es eine gute Sache, alle Repositorys automatisch zu überprüfen, aber in der Praxis ist es nicht sehr angenehm, ständig von Berichten über falsche "Schwachstellen" abgelenkt zu werden, insbesondere in Entwickler-Repos oder veralteten Archiven, die niemals in Produktion gehen werden. Es wird sehr schnell langweilig. Einige Autoren sagen, dass die meisten Schwachstellen in ihrem eigenen Code tatsächlich Rauschen sind oder in einem bestimmten Fall nicht anwendbar sind.



Das heißt, der GitHub-Crawler kann alle Symptome einer als Sicherheitsmüdigkeit bezeichneten Bedingung auslösen. Weitere Informationen zu diesem Zustand finden Sie im wissenschaftlichen Artikel(doi: 10.1109 / MITP.2016.84). Es heißt, dass dieser Zustand bei einer Person ihre Zurückhaltung bei der Befolgung von Sicherheitsempfehlungen verstärkt und sich auf die allgemeine Nutzen-Kosten-Analyse auswirkt.



All Articles