Wenn Angriffe bekämpft werden und Entführungen legitimer Software in Open-Source-Registern wie npm nicht herausfordernd genug waren, erleben App-Hersteller zunehmend die Folgen von Software-Selbstsabotage. Ein Entwickler kann aus einer Laune heraus seine Meinung ändern und mit seinem Open-Source-Code machen, was er will, aber meistens sowieso kommt „wie besehen“ ohne jegliche Gewährleistung. Oder, wie ein zunehmender Trend in diesem Jahr zeigt, sabotieren Entwickler absichtlich ihre eigenen Softwarebibliotheken aus Protest – indem sie Software in „Protestware“ verwandeln.
Im Juli, der Entwickler des weit verbreiteten Atomicwrites Python-Bibliothek Markus Unterwaditzer vorübergehend seinen Code gelöscht von der beliebten Code-Registrierung PyPI, nachdem die Website sagte, dass sie eine Zwei-Faktor-Authentifizierung für Betreuer von „kritischen Projekten“ vorschreiben würde – Projekte, die zu den oberen 1 % aller Downloads in der Registrierung gehörten. Unterwaditzers Atomicwrites Das Projekt entsprach den Kriterien und sein Konto musste für die Zwei-Faktor-Authentifizierung registriert werden, was er beschrieb in einem Beitrag als „ein lästiger und berechtigter Schritt, um SOC2-Compliance für eine Handvoll Unternehmen zu garantieren (auf Kosten meiner Freizeit)“, die sich auf seinen Code verlassen.
Einige verglichen dies mit dem 2016 Vorfall mit dem linken Pad, der einen großen Teil des Internets kurzzeitig lahmlegte, nachdem der Entwickler des Projekts aus Protest seinen weit verbreiteten Code gelöscht hatte. Entwickler Azer Koçulu geriet in einen Markenrechtsstreit mit der Messaging-App Kik, weil sein npm-Paket „kik“ hieß. Nachdem sich npm im Streit auf die Seite von Kik gestellt hatte, wurde Koçulu zog seinen gesamten Code zurück — 273 Module insgesamt, einschließlich der äußerst beliebten linkes Pad Bibliothek – aus der npm-Registrierung. Es lag völlig in seiner Macht, aber es verursachte sofort Probleme. Zu der Zeit war die massiv beliebt linkes Pad Paket war eingetroffen mehr als 15 Millionen Downloadsund die Bibliothek ist es auch heute noch wöchentlich millionenfach heruntergeladen. Daher waren Entwickler auf der ganzen Welt im März 2016 verwirrt – und entsetzt – als ihre Projekte scheiterten, weil die linkes Pad Komponenten, auf die sich ihre Anwendungen stützten, konnten nicht mehr gefunden werden.
Was vor Jahren wie ein isolierter Protest ausgesehen haben mag, wurde 2022 von Entwicklern wiederbelebt, die ihre eigenen Bibliotheken sabotierten – manchmal, um sich gegen große Unternehmen auszusprechen, aber in jüngerer Zeit, um gegen Russlands Invasion in der Ukraine zu protestieren.
Der jüngste Aufstieg von Protestware
Eine Woche im Jahr 2022, Tausende von Anwendungen, die auf die stark genutzten npm-Projekte angewiesen sind Farben und Schwindler brach und begann, Kauderwelsch-Text auf den Bildschirmen der Benutzer zu drucken. Es war kein böswilliger Akteur, der diese legitimen Bibliotheken kaperte und veränderte. Es stellte sich heraus, dass der Projektentwickler Mark Squires dies getan hatte absichtlich seine eigene Arbeit verfälscht um eine Protestbotschaft an große Konzerne zu senden.
Der Protest von Squires wurde durch die Sicherheitslücke von Log4Shell ausgelöst, die die Betreuer des Log4j-Projekts, meist Open-Source-Freiwillige, mit dem Patchen der kritischen Schwachstelle über die Dezemberferien belastete. Squires hatten früher Frust geäußert bei Fortune 500-Unternehmen, die seinen Open-Source-Code kostenlos verwenden, ohne finanzielle Unterstützung anzubieten oder deren Wartung zu sponsern. Die Log4Shell-Schwachstelle verstärkte nur dieses Gefühl – dass die Unternehmen in ihren Anwendungen allgegenwärtig auf Log4j angewiesen sind habe nicht genug getan um die unbezahlten Freiwilligen zu unterstützen, die diese kritischen Projekte in ihrer Freizeit unterstützen.
Während der Protest von Squires nur kurzzeitig Projekte einfror, die auf die Farben Library folgte Monate später ein ganzer Protestware-Trend, bei dem Entwickler ihre eigenen Projekte sabotierten, denen sie Hunderte von Stunden gewidmet hatten, um sich gegen Russlands Krieg in der Ukraine zu wehren.
Im März 2022, Wochen nachdem russische Truppen ukrainisches Territorium überquert hatten, startete das beliebte npm-Projekt Knoten-IPC – jede Woche über eine Million Mal heruntergeladen – begann das Abwischen der Maschinen von mutmaßlichen russischen und weißrussischen Entwicklern. Der Entwickler des Projekts, Brandon Nozaki Miller, soll den Code sabotiert haben, um die Computer zu beschädigen, auf denen er installiert war. Unnötig zu erwähnen, dass die sabotierten Versionen von Knoten-IPC – jetzt effektiv Malware – wurden aus der npm-Registrierung entfernt.
Seitdem hat sich das Protestware-Thema zu Entwicklern entwickelt, die sich friedlicheren Protesten hingeben. Neuere Versionen von Open-Source-Projekten wie Ereignisquelle-Polyfill, es5-extund gestylte Komponenten Zeigen Sie einfach eine Nachricht an, die in Russland ansässige Benutzer auffordert, Maßnahmen gegen den Krieg zu ergreifen. Daher verbleiben diese Versionen auf npm, da sie nicht gegen die Richtlinien der Registrierung verstoßen.
Die Veröffentlichung von Protestware dürfte auch für den Entwickler keine leichte Entscheidung sein. Es erfordert eine zusätzliche Überprüfung aller Versionen des sabotierten Projekts und kann das Vertrauen der Community in den Entwickler beeinträchtigen. Kann man irgendeiner Software, die sie geschrieben haben, ob in der Vergangenheit oder in der Zukunft, jemals wieder vertrauen?
Evan Jacobseiner der Hauptbetreuer dahinter gestylte Komponenten, sagte gegenüber Tech, dass sein Projekt eine Geschichte des Aktivismus habe, „vor allem unsere Unterstützung der [Black Lives Matter] Bewegung und Empfehlung an unsere Nutzer, Spenden an die Equal Justice Initiative in Erwägung zu ziehen.“ Er fügte hinzu: „Ich hatte gehört, dass die russische Regierung anfing, westliche Nachrichten-Websites zu zensieren, und erkannte, dass wir eine einzigartige Gelegenheit hatten, eine prägnante, informative Nachricht über einen atypischen Kanal zu übermitteln: unsere npm-Paketinstallationen.“
Jacobs hielt es für entscheidend, dass die Russen genaue Nachrichten über den Krieg erhalten, die frei von staatlicher Einmischung sind. Er hat modifiziert gestylte Komponentenwelcher hatte mehr als 15 Millionen monatliche Downloads ab April, um eine zweisprachige Nachricht für in Russland ansässige Benutzer anzuzeigen, die die „vielen Gräueltaten, die von der russischen Armee in der Ukraine begangen werden“, zusammenfasst.
„Hat es Wirkung gezeigt? Wir werden es wahrscheinlich nie erfahren“, sagte Jacobs. „Davon abgesehen denke ich, dass es die Chance absolut wert war, Informationen zu verbreiten und hoffentlich die Aufmerksamkeit von Software-Leuten in Russland zu erregen, die sonst vielleicht nicht gesehen hätten, was passiert.“
Ein anderer Entwickler, Mariusz Nowak, der Schöpfer des es5-ext Project, modifizierte spätere Versionen der Bibliothek, um in Russland und Weißrussland ansässige Benutzer zu genauen Nachrichtenquellen wie dem Tor-Dienst der BBC zu leiten. Nowak erzählte Tech von der Entscheidung, den Code zu ändern, und sagte, dies liege daran, dass die Russen „nicht genau wissen, was los ist, und dass sie unter dem Einfluss ihrer Propagandamedien stehen“, und bezog sich dabei auf die strenge staatliche Kontrolle über die russischen Medien. „Diese Meldung wird nur angezeigt, wenn Sie Software in Russland installieren, sie ist für andere Teile der Welt nicht wirklich sichtbar“, sagte Nowak.
Nowak sagte, die Verwendung seiner Open-Source-Bibliothek für Aktivismus habe seine Glaubwürdigkeit in der breiteren Gemeinschaft nicht beeinträchtigt, aber er habe erhalten eine Handvoll wütender Antworten am Anfang.
Jacobs und Nowak sind nicht die Einzigen, die ihren Open-Source-Code umrüsten, um gegen den Krieg zu protestieren. Das Software-Supply-Chain-Sicherheits-Startup Socket sagte gegenüber Tech nestjs-pino, ein beliebtes npm-Projekt mit über 100.000 wöchentlichen Downloads, hat seine Haupt-Readme-Datei aktualisiert, um die Aufmerksamkeit auf die anhaltende Krise in der Ukraine zu lenken. Ein Installationsskript, das ebenfalls mit dem Paket gebündelt ist gibt eine Konsolennachricht aus sobald es installiert ist.
„Man kann nicht vertrauen, was man nicht verifizieren kann“
Open-Source-Entwickler entdecken neue und kreative Wege, die sie nicht länger darauf beschränken, neue Funktionen für ihre Projekte zu implementieren, sondern ihre Ansichten zu größeren sozialen Angelegenheiten aktiv zum Ausdruck zu bringen, indem sie ihre Projekte für einen guten Zweck modifizieren. Und im Gegensatz zu proprietärem Code, der den Erwartungen eines zahlenden Kunden entsprechen muss, sind die meisten Open-Source-Lizenzen ziemlich freizügig – sowohl für den Verbraucher als auch für den Entwickler – und bieten ihren Code mit Lizenzen an, die keine Garantie dafür bieten, was ein Entwickler nicht erwartet nie mit ihrem Code zu tun haben und niemals tun werden, was Protestware zu einer Grauzone für Verteidiger macht.
Tatsächlich habe ich als Sicherheitsforscher bei Sonatype beobachtet, wie Protestware in der Anfangsphase eine Herausforderung für uns darstellte und wie wir unsere automatisierten Malware-Erkennungsalgorithmen bis heute optimieren würden Selbstsabotage fangen mit Projekten wie Farben und Schwindler. Traditionell wurde das System entwickelt, um Typosquatting-Malware zu erkennen, die in Open-Source-Repositories hochgeladen wurde, aber Fälle wie böswillige Entführungen oder Entwickler, die ihre eigenen Bibliotheken ohne Vorwarnung ändern, erforderten ein tieferes Verständnis der Feinheiten der Funktionsweise von Protestware.
Das Thema hat auch große Open-Source-Registries wie npm – im Besitz von GitHub, einer Microsoft-Tochter – an einen Scheideweg gebracht, wenn es darum geht, mit diesen Grenzfällen umzugehen.
Der Gründer von Socket, Feross Aboukhadijeh, sagte gegenüber Tech, dass Registrierungsstellen wie GitHub in einer schwierigen Position sind. „Auf der einen Seite wollen sie das Recht der Betreuer auf freie Meinungsäußerung und die Möglichkeit unterstützen, ihre Plattform zu nutzen, um die Anliegen zu unterstützen, an die sie glauben. Aber auf der anderen Seite ist GitHub gegenüber npm-Benutzern dafür verantwortlich, diesen bösartigen Code sicherzustellen wird nicht von npm-Servern bereitgestellt. Das ist manchmal ein schwieriger Balanceakt“, sagte Aboukhadijeh.
Eine einfache Lösung, um sicherzustellen, dass Sie nur geprüfte Versionen einer Komponente in Ihrem Build erhalten, besteht darin pinnen Sie Ihre npm-Abhängigkeitsversionen an. Selbst wenn zukünftige Versionen eines Projekts sabotiert oder entführt werden, verwendet Ihr Build auf diese Weise weiterhin die „gepinnte“ Version, anstatt die neueste, verdorbene Version abzurufen. Dies ist jedoch möglicherweise nicht immer eine effektive Strategie für alle Ökosysteme, wie PyPI, wo vorhandene Versionen einer Komponente erneut veröffentlicht werden können – wie wir im Fall der Entführung von gesehen haben ctx PyPI-Projekt.
„Das Gespräch über ‚Protestware‘ ist eigentlich ein Gespräch über die Sicherheit der Softwarelieferkette. Sie können nicht vertrauen, was Sie nicht überprüfen können“, sagte Dan Lorenc, Mitbegründer und Geschäftsführer von Chainguard, einem Startup, das sich auf die Sicherheit von Softwarelieferketten spezialisiert hat, gegenüber Tech.
Lorencs Rat gegen die Verhinderung von Protestware lautet: Befolgen Sie eine gute Open-Source-Sicherheitshygiene und Best Practices, die Entwicklern helfen können, Protestware einfacher und frühzeitiger zu entwickeln. „Das Kennen und Verstehen Ihrer Abhängigkeiten, das Durchführen regelmäßiger Scans und Audits des Open-Source-Codes, den Sie in Ihren Umgebungen verwenden, ist ein Anfang.“
Aber Lorenc warnt davor, dass die Debatte über Protestware Nachahmer anziehen könnte, die zu dem Problem beitragen und Verteidiger von Open-Source-Software davon abhalten könnten, sich darauf zu konzentrieren, was wirklich wichtig ist – böswillige Akteure in Schach zu halten. Und bei Protestware bleiben unbekannte Unbekannte. Welches Problem ist zu klein – oder zu groß – für Protestware?
Während niemand praktisch vorschreiben kann, was ein Open-Source-Entwickler mit seinem Code machen kann, ist es eine Macht, die Entwickler schon immer besessen haben, aber jetzt erst anfangen, sich diese zunutze zu machen.