CodeQL

Sicherheit im Octoverse: DevSecOps mit GitHub

Justin Hutchings

© Shutterstock / ranjith ravindran

Die Welt der Softwareentwicklung ist schnelllebig und wird immer mehr geprägt von Open-Source-Software. Was einerseits ein Segen für die Entwicklerwelt ist, ist andererseits aber auch mit Risiken behaftet: Die Sicherheit zu gewährleisten, ist ein Knochenjob. Helfen kann dabei, wenn man die Prinzipien und Prozesse von DevSecOps verinnerlicht. Wie GitHub dabei als unterstützende Kraft genutzt werden kann, das erklärt Justin Hutchings, Staff Product Manager bei GitHub, in diesem Artikel.

In den letzten zehn Jahren gab es in der Softwarebranche zwei wegweisende Entwicklungen, welche die Art und Weise, wie Entwickler Software schreiben, dauerhaft verändert haben: die umfassende Akzeptanz von Open-Source-Software und der Trend zu Cloud Computing. Der 2020 State of the Octoverse Report von GitHub zeigt, dass Stand heute zwischen 65 % und 94 % der Repositories (abhängig von der Programmiersprache) auf Open-Source-Software basieren. Das beschleunigt das Tempo, mit dem Entwickler neue Funktionen bereitstellen können, da es so viel Code-Wiederverwendung gibt. Gleichzeitig bedeutet die Verlagerung in die Cloud, dass Softwareentwickler kontinuierlich Code bereitstellen. Zusammengenommen zeigen diese Trends aber auch, dass traditionelle Prozesse zur Überprüfung der Sicherheit nicht schnell genug sein können, um mit dem Tempo der modernen Softwareentwicklung Schritt zu halten.

DevSecOps (kurz für Development, Security, and Operations) ist eine Prozessänderung in der Softwareentwicklung, die darauf abzielt, dies zu beheben. Sicherheitsexperten können häufige Releases unterstützen und so die Entwickler befähigen, Sicherheitslücken zu beheben, sobald sie auftreten, indem sie Sicherheitsanalysen als Teil jedes Builds und jedes Deployments durchführen, anstatt dies nur bei größeren Releases zu tun. Dies kann einen großen Einfluss auf die Sicherheit der Software haben – und dadurch auch auf die Zufriedenheit der Entwickler. Untersuchungen zeigen, dass Unternehmen, die DevSecOps-Praktiken anwenden, die durchschnittliche Zeit zur Behebung von Schwachstellen um 72 Prozent reduzieren können, indem sie ihren Code mindestens einmal täglich auf Sicherheitsschwachstellen überprüfen.

GitHub Code Scanning

GitHub treibt die Umsetzung von DevSecOps sowohl für Open-Source- als auch für kommerzielle Software mit Code-Scanning voran, das Anfang dieses Jahres eingeführt wurde. Code-Scanning deckt Sicherheitslücken auf, bevor sie die Produktion erreichen – und zwar durch einen Developer-first-Ansatz. Der Code wird bereits bei der Erstellung gescannt und umsetzbare Sicherheitsüberprüfungen werden in Pull-Requests und andere Funktionen integriert, die Entwickler täglich nutzen. Anstatt jedes Sicherheitsproblem erst während eines Pull Requests anzuzeigen, blockiert das Code-Scanning einen Pull Request nur dann, wenn der Code, den der Entwickler gerade geschrieben hat, eine neue Sicherheitslücke einführt. Dadurch kann die Einführung neuer Sicherheitslücken effektiv verhindert werden. Darüber hinaus werden außerdem bestehende Schwachstellen verfolgt, sodass Teams Prioritäten setzen und Zeit einplanen können, um ihre Security Debt im Laufe der Zeit abzutragen.

Code-Scanning lässt sich derzeit mit SAST-Tools (Static Analysis Security Testing) wie CodeQL sowie mit mehr als einem Dutzend kommerzieller und Open-Source-Tools integrieren. Durch die Bereitstellung eines konsistenten Frameworks erleichtert das Code Scanning den Entwicklern die Verwaltung der Ergebnisse aus diesen zuvor getrennten Eingaben. Die Wahl der genutzten SAST-Tools, können einen großen Unterschied bei der Umstellung auf DevSecOps machen.

IT security camp
IT security camp

Interview with Christian Schneider about „DevSecOps“.

In terms of security checks, DevSecOps is the logical continuation of automation in the DevOps sense

CodeQL ist GitHubs eigene semantische Analyse-Engine. Sie parst Code in eine Graph-Datenbank, die alle Datenflüsse und Objekte in der Anwendung darstellt. Dann wird eine Reihe von Abfragen ausgeführt, die nach anfälligem Verhalten suchen, z. B. wenn ein String mit Benutzereingaben aufgefüllt wurde und dann in einer SQL-Abfrage ohne Bereinigung verwendet wird. So einfach dieses Beispiel auch klingt, Probleme wie SQL-Injections können mit menschlicher Inspektion allein schwer zu erkennen sein. Standardmäßig führt CodeQL eine kleine Teilmenge aus über 2000 Open-Source-Abfragen aus, um sicherzustellen, dass die Entwickler nur die relevantesten Warnmeldungen erhalten. Unternehmen können auch zusätzliche Abfragen aus dem Open Source Set ausführen oder sogar ihre eigenen Abfragen schreiben. Dank dieser Flexibilität lässt sich CodeQL skalieren, um die Anforderungen sowohl kleiner Teams als auch stark regulierter Unternehmen zu erfüllen.

Natürlich entwickeln sich die Bedrohungen ständig weiter, sodass SAST-Tools wie CodeQL innovativ sein müssen, um die neuesten Arten von Schwachstellen zu finden. Ein Weg, wie wir uns auf die neuesten Bedrohungen vorbereiten, ist die Arbeit des GitHub Security Lab. Das Security Lab ist ein unabhängiges Team von Sicherheitsforschern, die Ressourcen, Werkzeuge, Bounties und Sicherheitsforschung zur Sicherung des Open-Source-Ökosystems beitragen. Seit seiner Gründung im Jahr 2019 hat das Security Lab mehr als 100.000 Dollar an Bounties an Forscher ausgezahlt, die CodeQL-Abfragen schreiben. Es hat außerdem 189 Common Vulnerabilities and Exposures (CVEs) in Projekten gefunden, die von populärer Software wie Ubuntu Linux und Chrome bis hin zu wichtigen öffentlichen Tools wie der Corona-Warn-App in Deutschland reichen. GitHub integriert die für diese Schwachstellen erstellten Abfragen wieder in die Standard-CodeQL-Abfragen, damit Open-Source- und Enterprise-Entwickler später nicht die gleichen Fehler noch einmal machen.

Einführung von DevSecOps

Bei DevSecOps geht es aber nicht nur um Tools, sondern um einen kulturellen Wandel, der Zeit und Planung erfordert. Unternehmen, die dabei erfolgreich sind, fangen in der Regel klein an und bieten viele Schulungen dazu an, wie man Schwachstellen, die das Tooling entdeckt, effektiv bewertet und behebt. Organisationen, die viele Sicherheits-Tools einschalten, Sicherheitskriterien verwenden, die für den Reifegrad der Organisation zu streng sind oder Sicherheitstools mit zu vielen Fehlalarmen einsetzen, riskieren einen Misserfolg. Ein Sicherheitsanalyse-Tool, das zu viele Fehlalarme auslöst, riskiert auf lange Sicht, dann ignoriert zu werden, wenn es ein großes Problem gibt.

Software-Sicherheit ist nicht einfach und das heutige Innovationstempo macht es noch schwieriger. Aber DevSecOps-Praktiken und Tools wie Code Scanning und CodeQL können Unternehmen auf einen erfolgreichen Weg bringen. Mehr Informationen zu den Sicherheitsprodukten von GitHub gibt es unter https://github.com/features/security.

Geschrieben von
Justin Hutchings

Justin Hutchings ist Staff Product Manager bei GitHub und arbeitet an den erweiterten Sicherheitsfunktionen von GitHub wie beispielsweise dem Code Scanning. Er hat an vielen Sicherheitsfunktionen mitgearbeitet, die GitHub den Entwicklern auf seiner Plattform bietet, darunter Security Advisories, die Advisory-Datenbank und Einblicke in Dependencies. Bevor er 2018 zu GitHub kam, arbeitete Justin bei Microsoft an Funktionen für Entwickler mit Windows, HealthVault und Azure Identity. Seine Freizeit verbringt er mit Kajak fahren und Fotografieren im pazifischen Nordwesten.

Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: