Ein Open-Source-Registry zu betreiben bedeutet, ständig Brandherde zu bekämpfen. Ein weiteres Maintainer-Konto wird kompromittiert, ein weiteres bösartiges Paket taucht auf. Das Entfernen hinkt immer einem Upload hinterher. Die Arbeit nimmt kein Ende, und die meisten Registries, die von kleinen Teams mit wenig Budget betrieben werden, sind oft zu überlastet, um viel mehr zu tun, als nur Schritt zu halten. Doch in letzter Zeit beobachten wir positive Veränderungen in der Open-Source-Welt, wobei Ökosysteme strukturelle Änderungen vornehmen, die eine bestimmte Art von Angriffen gänzlich verhindern.
Das kleine Team, das Packagist.org und Composer – das Registry und den Paketmanager der PHP-Welt – pflegt, hat gezielte, präventive Sicherheitsarbeit geleistet und bedeutende Verbesserungen vorgenommen. Aikido unterstützt diese Bemühungen maßgeblich. Aikido’s Intel-Feed ermöglicht das Blockieren von Malware in Composer für Downloads. Dies ist standardmäßig für Composer 2.10 und höher für alle aktiviert. Dies ergänzt eine Reihe weiterer Änderungen, die Packagist vorgenommen hat und vornimmt, wobei jede darauf abzielt, ganze Angriffskategorien zu beenden, anstatt einzelnen Paketen hinterherzujagen.
Wir sehen diesen Trend von Verbesserungen bei Paket-Registries und freuen uns, diese Initiativen unterstützen zu können. PHP-Entwickelnde können jetzt beruhigter sein, da mehr Schutzmechanismen vorhanden sind, die sie davor bewahren, versehentlich Malware zu installieren.
Malware-Blockierung in Composer
Der einfachste Erfolg ist es, Benutzer daran zu hindern, eine Paketversion zu installieren, die bereits als bösartig bekannt ist. Dank Aikido Intel weiß Composer nun, welche Versionen markiert wurden, und wird sie nicht installieren.
Wenn Aikido eine bösartige Paketversion markiert, befindet sich diese Markierung in den Paketmetadaten, die Composer herunterlädt. Das Dependency-Policy-Framework von Composer 2.10 entfernt die markierte Version aus dem Auflösungspool, sodass `composer update`, `composer require` und `composer create-project` sie nicht auswählen werden. Die wichtigste Prüfung ist die bei `composer install`, da eine Version, die nach dem Schreiben Ihrer Lockfile markiert wurde, bei der nächsten Installation fehlschlägt. Wenn ein Benutzer aus irgendeinem Grund ein blockiertes Paket dennoch herunterladen möchte, kann er es manuell überschreiben.
Diese Integration funktioniert, weil sie ist:
- Offen: Der Feed, den Aikido Packagist zur Verfügung stellt, ist CC-BY lizenziert, sodass der Schutz nicht an einen sechsstelligen Vertrag gebunden ist und die Tür für andere Datenanbieter offen bleibt, sich anzuschließen. Sicherheit, die sich nur die gut finanzierten leisten können, schützt uns nicht.
- Standardmäßig aktiviert: Ein Schutz, der ein Opt-in erfordert, schützt fast niemanden (weil es schwierig ist, Menschen zum Opt-in zu bewegen). Standardeinstellungen sind der Ort, an dem Ökosystem-Sicherheit verankert ist, und die 2.10-Standardeinstellung erfordert nichts von den Benutzern, damit sie davon profitieren.
- Schnell genug: Bösartige Versionen werden normalerweise innerhalb weniger Stunden entfernt, sodass ein Feed, der sie in Minuten markiert, Benutzer im Zeitfenster zwischen Erkennung und Entfernung schützt. Da die Blockierung nur funktioniert, wenn etwas erkannt wird, würde eine langsame Erkennung nicht viel nützen.
- Automatisiert: Da das bösartige Paket blockiert wird, sobald Aikido es erkennt, gibt es keine zusätzliche Verzögerung durch das Warten auf jemanden, der das Paket manuell auf die Blacklist setzt oder entfernt, sodass Benutzer schneller geschützt sind.
Die Integration der Aikido-Erkennung in jede Installation war nur eine der Verbesserungen, die Packagist kürzlich veröffentlicht hat.
Türen schließen statt Löcher stopfen
Als Nächstes: Re-Tagging. Das Veröffentlichen auf Packagist bedeutete schon immer, einen Git-Tag zu pushen, und das Register zieht, worauf dieser Tag verweist. Dieses System ermöglichte es Angreifern, die ein vertrauenswürdiges Konto gekapert hatten, eine veröffentlichte Version neu zu taggen und auf bösartigen Code zu verweisen, sodass diese Versionsnummer nun eine Nutzlast trägt (was wir beim jüngsten Angriff auf Laravel-Lang gesehen haben). Packagists Antwort, die Unveränderlichkeit stabiler Versionen, bedeutet, dass eine veröffentlichte stabile Version nicht mehr überschrieben werden kann. Das beendet die Re-Tagging-Angriffe insgesamt. GitHub hat das Äquivalent, aber sie machten es optional. Packagist machte es obligatorisch.
Schließlich ist es extrem schwierig, Menschen dazu zu bringen, Software zu aktualisieren. Eine Standardblockierung hilft nur denjenigen, die eine aktuelle Composer-Version verwenden, und viele tun dies nicht. Ein CI-Image oder ein KI-Agent läuft oft mit einer Version von vor Jahren, daher kann Private Packagist eine aktuelle Composer-Version für die Verbindung vorschreiben. Es verweigert auch die Bereitstellung der Dateien einer markierten Version an jeden Client, ob alt oder neu.
Packagist.org ist noch nicht fertig, und es stehen einige Sicherheitsverbesserungen an. Sie planen ein Mindestalter für Releases, was Angriffe abschwächen würde, die auf ein kurzes Zeitfenster vor der Erkennung angewiesen sind (in der Zwischenzeit können Sie einen ähnlichen Schutz mit Aikido Safe Chain erhalten, ebenfalls kostenlos). Sie schaffen auch eine organisatorische Eigentümerschaft, die eine obligatorische MFA ermöglichen wird, sowie gestaffelte Releases, die npm kürzlich eingeführt hat.
Auf dem Weg zu sichereren Paketregistern
Dies ist nicht nur eine PHP-Geschichte. Wie erwähnt, geht npm mit gestaffeltem Publishing denselben Weg, aber auch schaltet automatische Installationsskripte ab. PyPI hat 2FA obligatorisch gemacht und ein Quarantänesystem aufgebaut, und crates.io und RubyGems haben Trusted Publishing durch ein gemeinsames OpenSSF-Design übernommen. Ökosysteme bewegen sich in die richtige Richtung. Wir möchten viel mehr davon sehen, und das schneller, und wir unterstützen weiterhin, wo wir können.
Sind Sie ein PHP-Entwickelnder? Composer-Clients, die älter als 2.10 sind, verfügen nicht über diese Funktion, stellen Sie also sicher, dass Sie heute aktualisieren, falls Sie es noch nicht getan haben. Nutzen Sie kein PHP? Aikido Safe Chain ist ein Open-Source-Tool, das Sie ebenfalls daran hindert, neue oder bösartige Pakete zu installieren, bevor sie auf Ihrem Gerät installiert werden.
Unabhängig von den Ökosystemen, von denen Sie abhängen, können Sie überprüfen, was Aikido Intel im gesamten Internet markiert. Der Feed ist öffentlich und kostenlos unter intel.aikido.dev verfügbar.

