Herausforderung: Skalierung von Code-Sicherheit mit kleinem AppSec-Team
Aufbauend auf einem Konzept im Stile klassischer Diskussionsforen avancierte Reddit zu einer der erfolgreichsten Social-Media-Plattformen, auf der sich eine inzwischen beachtliche Community alltäglich zu verschiedensten Themen austauscht. Mit fortschreitendem Wachstum der Plattform wurden jedoch auch die ihr zugrunde liegenden Code-Repositories und Technologien immer zahlreicher und vielfältiger und so auch die Risiken für die Codebase zunehmend vielschichtiger. Zur Mitigierung hatte Reddit gestützt auf Snyk bereits eine AppSec-Methodik formalisiert.
Diese musste nun allerdings von einem eher kleinen AppSec-Team auf knapp 600 Entwickler skaliert werden, die sich über verschiedenste Dev-Teams verteilen. Für die bereits für Software Composition Analysis eingesetzte Snyk Plattform brauchte es daher eine API, die sich so unkompliziert wie umfassend im gesamten Tech-Stack integrieren lassen würde, um arbeitsintensive Aufgaben rund um App-Security automatisieren zu können.
„Bis vor kurzem habe ich den Bereich AppSec noch als One-Man-Show geführt“, berichtet Spencer Koch, Security Wizard bei Reddit. „Für die Interaktion zwischen einer Handvoll Repositories mit der Snyk UI wäre das nicht unbedingt ein Showstopper gewesen. Wir haben inzwischen aber über 1.000. Mich da durch die UI zu klicken, um nebst anderen Admin-Aufgaben die Behebung von Problemen in jedem Repository einzeln vorzunehmen, war da einfach keine Option mehr.“
Lösung: Automatisierung von Fixes mithilfe der Snyk API
Änderungen mit der Snyk UI manuell zu implementieren, ist bei einer überschaubaren Anzahl an Code-Repositories zwar durchaus effizient. In einer Größenordnung wie bei Reddit kam dies jedoch nicht mehr in Frage. Zudem ließen sich mit der Snyk API nicht nur Routineaufgaben weitreichend automatisieren, sondern auch Security-Scans direkt mit GitHub Enterprise (GHE) integrieren. So konnte Reddit zusätzlich die Erkennung von Open-Source-Schwachstellen automatisieren und diese via Pull-Request beheben.
„Zunächst befreiten wir unsere Repositories scriptgesteuert von sämtlichen Schwachstellen. Dasselbe Script modifizierten wir dann so, dass Pull-Requests bei Erkennung entsprechender Probleme direkt fehlschlagen“, erläutert Koch und ergänzt: „Statt nachgelagert im Security-Team konnten wir ihre Behebung so ganz im Stile von Developer-Led Improvement proaktiv angehen. Zu bewältigen war diese Herkulesaufgabe erst mit der Snyk API.“
Eine starke Kombination: Die Snyk API und der Python Wrapper
Reddit nutzt die Snyk API direkt, ergänzt sie außerdem aber noch um den für sie verfügbaren Python Wrapper, da sein Tech-Stack zu großen Teilen auf Python basiert. Dabei handelt es sich um einen Client namens pysnyk, der Snyk noch engmaschiger in bestehendes Dev-Tooling integriert und die Implementierung der Snyk Plattform so noch reibungsloser und schneller im Dev-Workflow umsetzbar macht. Für das Security-Team von Reddit wurden so quasi umgehend Insights in Risiken rund um App-Schwachstellen möglich.
Weiter entwickelte man bei Reddit eine GHE-Integration, die unter dem Namen snyk-sync nun auch als Open-Source für die AppSec-Community zur Verfügung steht. Damit lassen sich zu einem festen Turnus (z. B. von einer Woche) Cron-Operationen ausführen, um innerhalb des jeweiligen Zeitraums vorgenommene Änderungen mit GHE-Repositories zu synchronisieren. Dies umfasst das Ergänzen neuer und das Entfernen nicht mehr verwendeter Repositories, die Anpassung der Einstellungen zur GHE-Integration sowie Benachrichtigungen zu Fällen, in denen innerhalb der Snyk CLI manuelle CI-Schritte vonnöten sind. Reddit nutzt pysnyk außerdem zur Durchführung von Batch-Tasks wie etwa bei der Unterdrückung von Alerts zu Problemen, die innerhalb der Codebases von Drittanbietern oder Open-Source-Projekten bestehen, jedoch für Reddit nicht relevant sind.
„Was Snyk für uns so einzigartig macht, ist, dass wir damit unser Tooling zentralisieren und skaliert innerhalb von Dev-Workflows ausrollen können“, betont Koch.
„Das vollkommen ohne Einschnitte in der Effizienz der Arbeit der Dev-Teams: Die PR-Tests innerhalb von GHE liefern ihnen nützliches Feedback und fügen sich nahtlos in unsere Workflows ein.“
Ergebnis: Security skaliert auf über 1000 Repositories
Die Snyk API einschließlich zugehörigem Python-Client vermittelte Dev-Teams wie auch Security-Engineers bei Reddit binnen kürzester Zeit umfassende Transparenz zur effizienteren Behebung von Schwachstellen. Tatsächlich war die Snyk Plattform bereits nach wenigen Wochen ohne großen Aufwand auf weite Teile der Codebase ausgerollt. Scans auf Open-Source-Schwachstellen hatte Reddit damit also binnen kürzester Zeit skalierbar und mit schnellem ROI möglich gemacht.
„Ganz entscheidend ist der Developer-Fokus“, resümiert Koch. „Erst mit der Snyk API konnten wir eine Vielzahl von Security-Aufgaben in großem Maßstab automatisieren, Abläufe im Dev-Prozess reibungslos gestalten und die Snyk Plattform nun zudem mit geringem Kostenaufwand in diese implementieren.“