Das Unternehmen GitHub hat Informationen über zwei Vorfälle in der Infrastruktur des NPM-Paketrepositories offengelegt. Am 2. November informierten externe Sicherheitsexperten (Kajetan Grzybowski und Maciej Piechota) im Rahmen des Bug-Bounty-Programms über eine Schwachstelle im NPM-Repository, die es ermöglichte, eine neue Version eines beliebigen Pakets über ein Konto zu veröffentlichen, das nicht autorisiert war, solche Updates durchzuführen.
Die Schwachstelle resultierte aus einer fehlerhaften Authentifizierungsprüfung im Code der Mikrodienste, die Anfragen an NPM bearbeiteten. Der Authentifizierungsdienst prüfte die Zugriffsrechte für Pakete auf der Grundlage der in der Anfrage übermittelten Daten, während ein anderer Dienst, der das Update im Repository hochlud, das zu veröffentlichende Paket anhand des Inhalts der Metadaten im hochgeladenen Paket bestimmte. Auf diese Weise konnte ein Angreifer die Veröffentlichung eines Updates für sein Paket anfordern, auf das er Zugriff hatte, aber Informationen über ein anderes Paket im eigenen Paket angeben, das letztlich aktualisiert werden würde.
Das Problem wurde sechs Stunden nach Bekanntwerden der Schwachstelle behoben, aber die Schwachstelle war länger im NPM vorhanden, als die Telemetriedaten erfassen. GitHub behauptet, dass seit September 2020 keine Angriffe mit dieser Schwachstelle aufgezeichnet wurden, es gibt jedoch keine Garantie dafür, dass die Schwachstelle nicht bereits früher ausgenutzt wurde.
Der zweite Vorfall ereignete sich am 26. Oktober. Bei technischen Arbeiten an der Datenbank des Dienstes replicate.npmjs.com wurde in einer für externe Anfragen zugänglichen Datenbank das Vorhandensein von sensiblen Daten festgestellt, die Informationen über die Namen interner Pakete enthüllten, die im Änderungsprotokoll erwähnt wurden. Informationen über solche Namen könnten für Angriffe auf Abhängigkeiten in internen Projekten verwendet werden (im Februar ermöglichte ein ähnlicher Angriff die Ausführung von Code auf Servern PayPal, Microsoft, Apple, Netflix, Uber und weiteren 30 Unternehmen).
Außerdem hat das Unternehmen GitHub beschlossen, aufgrund der häufigen Vorfälle von Repository-Übernahmen großer Projekte und der Verbreitung von schadhafter Software durch die Kompromittierung von Entwicklerkonten eine verpflichtende Zwei-Faktor-Authentifizierung einzuführen. Diese Änderung wird im ersten Quartal 2022 in Kraft treten und sich auf die Betreuer und Administratoren von Paketen erstrecken, die auf der Liste der beliebtesten Pakete stehen. Zusätzlich wird über die Modernisierung der Infrastruktur berichtet, in der automatisiertes Monitoring und die Analyse neuer Paketversionen zur frühzeitigen Erkennung schädlicher Veränderungen eingeführt werden.
Laut einer im Jahr 2020 durchgeführten Studie verwenden lediglich 9,27 % der Paket-Maintainer zur Sicherung des Zugriffs eine Zwei-Faktor-Authentifizierung, und in 13,37 % der Fälle versuchten Entwickler bei der Registrierung neuer Konten, kompromittierte Passwörter, die in bekannten Passwortlecks auftauchten, wiederzuverwenden. Bei der Überprüfung der Zuverlässigkeit der verwendeten Passwörter konnte auf 12 % der Konten in NPM (13 % der Pakete) zugegriffen werden, aufgrund der Verwendung von vorhersehbaren und triviale Passwörter wie „123456“. Zu den problematischen Konten gehörten 4 Benutzerkonten aus den Top 20 der beliebtesten Pakete, 13 Konten von Paketen, die mehr als 50 Millionen Mal im Monat heruntergeladen wurden, 40 mit mehr als 10 Millionen Downloads im Monat und 282 mit mehr als 1 Million Downloads im Monat. Unter Berücksichtigung der Modul-Downloads über Abhängigkeitsketten könnte die Kompromittierung unzuverlässiger Konten insgesamt bis zu 52 % aller Module in NPM betroffen haben.
Quelle: opennet.ru
