Arch Linux hält Malware-Vorfall nun für eingedämmt: Mehr als 1.500 Pakete betroffen
(phoronix.com/news)- Im AUR-Repository mit Benutzerbeiträgen von Arch Linux wurden zunächst mehr als 400 mit Malware infizierte Pakete festgestellt, die endgültige Zahl stieg dann auf mehr als 1.500
- In einem Update vor einigen Stunden war noch von rund 900 Paketen die Rede, die durch den Vorfall in dieser Woche infiziert wurden
- Danach entfernten die Arch-Linux-Entwickler alle bekannten bösartigen Commits; die Zahl der betroffenen Pakete wurde auf 1.579 beziffert
- Die Liste mit 1.579 Einträgen ist ebenfalls als umfangreiche, aber nicht vollständige Liste der betroffenen Pakete gekennzeichnet, sodass das tatsächliche Ausmaß größer sein könnte
- Viele Softwarepakete im von Nutzern gepflegten Repository waren von diesem Sicherheitsvorfall betroffen; in einem separaten Update wurde zudem von einer weiteren, ausgefeilteren Malware-Angriffswelle berichtet
Überblick über den Vorfall
- Der Vorfall begann, als im AUR-Repository mit Benutzerbeiträgen für Arch-Linux-Nutzer mehr als 400 mit Malware infizierte Pakete entdeckt wurden
- Gegen Ende des Tages ging Arch Linux davon aus, dass alle betroffenen Commits bearbeitet worden waren, doch die Zahl der betroffenen Pakete stieg auf mehr als 1.500
- Es handelte sich um einen Sicherheitsvorfall, der viele Softwarepakete im von Nutzern gepflegten Arch-Linux-Repository betraf
Veränderung des Ausmaßes
- In einem Update vor einigen Stunden war festgestellt worden, dass durch den Vorfall in dieser Woche etwa 900 Pakete mit Malware infiziert worden waren
- Laut der letzten Nachricht im Thread zum Sicherheitsvorfall entfernten die Arch-Linux-Entwickler anschließend alle ihnen bekannten bösartigen Commits
- Die zitierte Liste weist die Zahl der von der Malware betroffenen Pakete mit 1.579 aus
Verbleibende Unsicherheit
- Auch die Liste mit 1.579 Paketen ist als „umfangreiche, aber nicht vollständige Liste der betroffenen Pakete“ gekennzeichnet
- Die veröffentlichte Zahl zeigt daher zwar ein bestätigtes großes Ausmaß, doch die Liste selbst deckt nicht alle betroffenen Pakete ab
Folge-Update
- In einem separaten Update wurde anschließend berichtet, dass das Arch Linux AUR von einer weiteren Welle ausgefeilterer Malware-Angriffe getroffen wurde
1 Kommentare
Hacker-News-Kommentare
Ich frage mich, ob das AUR-Team schon einmal eine Post-Mortem-Analyse veröffentlicht hat
Die Reaktion diesmal war beeindruckend schnell, aber ehrlich gesagt wirken Änderungen an den AUR-Richtlinien oder den Wrappern nötig
So wie bei pnpm sollte man ein Mindestalter für Pakete festlegen können, und verwaiste Pakete sollten nicht von beliebigen Personen adoptiert werden dürfen
Für Adoptionen könnte es ein globales Rate-Limit geben, das zugleich als Angriffssignal dient, und wie bei mehreren Unternehmen im NPM-Ökosystem wären auch Schwachstellen-Scans beim Veröffentlichen nötig
Die meisten dieser Änderungen liegen allerdings eher bei Packaging-Helpern und Dritten als bei den AUR-Maintainern selbst
Dann würde Eigentümerschaft nicht verloren gehen, und ein Verwaisen wäre gar nicht erst nötig
[1] https://github.com/gavinhungry/patches/blob/main/pakku/pakku...
[2] https://github.com/zqqw/pakku
Beschränkungen sind nötig, aber etwa eine Adoption pro Monat für Nutzer, deren Konto seit einer gewissen Zeit besteht, erscheint angemessen
Ohnehin wird kaum jemand auf lokal installierte AUR-Pakete automatische und ungeprüfte Updates anwenden, daher ist die Angriffsfläche bereits recht klein
Der Kern des Miasma-Wurms ist gerade, dass sich Signaturen und Helper-Ansätze zu schnell ändern
Das verschlüsselte bösartige Implantat entschlüsselt seine Payload mit einem AES-128-GCM-Schlüssel, der je nach hochgeladenem GitHub-Speicherort unterschiedlich ist; außerdem ändern sich Methodennamen im Code dynamisch, und auch verschlüsselte Symbol-Offsets werden vermischt und wiederverwendet
Als polymorphe Malware ist das ein Albtraum für signaturbasierte Werkzeuge
APT28/29 scheinen sich bis zu einem gewissen Grad darauf zu verlassen, dass Microsoft Nutzer und Repositories auf GitHub, die als C2-Infrastruktur dienen, nicht schnell genug automatisch sperrt
Man sollte darüber nachdenken, was das für die Sicherheitsstrategie bedeutet
Sobald man Signaturen oder Strings scannen kann, befindet man sich bereits in einem Katz-und-Maus-Spiel mit einem vollautomatisierten Botnetz, und das kann man nicht gewinnen
In der vergangenen Woche hat im Grunde nur socket.dev diese Implantat-Änderungen mitverfolgt; andere Tools kannten Miasma nicht einmal und haben es lediglich als neue Kampagne erneut entdeckt
Es fehlte an Personal und Toolchains, um die Payload schnell genug rückzuentwickeln, um mit der Geschwindigkeit neuer Adapter für weitere Ökosysteme im 24-Stunden-Takt Schritt zu halten
Vollautomatisierung bedeutet hier, dass in anderen Paket-Ökosystemen bereits nach weniger als 48 Stunden gestohlene Zugangsdaten verwendet wurden
E-Mail-Adressen und Namen tauchen immer wieder auf, offenbar von Personen, die die Auswirkungen dieses sich selbst verbreitenden Wurms wahrscheinlich nicht verstanden haben
Selbst Kompromittierungsindikatoren, die nach Paketen mit Abhängigkeit von bun suchen, helfen kaum weiter
Die Malware kann einfach über andere Wege erneut heruntergeladen werden
In der zweiten PyPI-Kampagne wurde, nachdem die erste Welle bösartiger Dropper aus der RedHat-Kampagne den PyPI-Maintainern aufgefallen war, auf komprimierte WHL-Dateien und automatisch ausgeführte
setup.pth-Dateien umgestellt, die den Dropper nachladenSolange die Paketmanager dieser Ökosysteme nicht von Grund auf neu geschrieben werden mit chroot, Sandbox, Netzwerk- und Domain-Logs sowie per-Eintrag-Allowlists als Voraussetzung, bleibt die Verteilung von Malware über Supply-Chain-Angriffe eine realistische Strategie
Das Repository mit den Mitigation-Tools ist [1], die technischen Details stehen im Blogbeitrag [2]
Composer, Rubygems, NPM, PyPI und Go sind ebenfalls betroffen; das ist also ein Problem quer durch alle Paketmanager
Es sollte viel offener darüber gesprochen werden, wie viel Sorglosigkeit und externes Vertrauen wir allen Paketmanagern aufbürden, denn das muss sich wirklich ändern
[1] https://github.com/cookiengineer/antimiasma
[2] https://cookie.engineer/weblog/articles/malware-insights-mia...
Als pacman-Wrapper, die direkt aus dem AUR installieren, aufkamen, fand ich das wirklich unangenehm
Ich habe schon Dinge aus dem AUR installiert, bevorzuge aber meist den Weg über die Projektwebsite, statt Zwischenschritte zu überspringen
Ein vorgefertigtes PKGBUILD ist den Komfort nicht wert, wenn man dafür das Risiko von Typosquatting oder dem Missbrauch von npm-/pip-Abhängigkeiten in Kauf nimmt
yayzeigen bei jedem Update die PKGBUILD-Diffs anBei der Erstinstallation prüft man die URL und ob Installationsskripte usw. plausibel sind; bei späteren Updates ändern sich meist nur Versionsnummer und Prüfsumme
Ein Typosquatting-Angriff würde ziemlich deutlich auffallen
Die Erstinstallation ist etwas anfällig, aber das gilt genauso, wenn man auf die Projektwebsite geht und auf Download klickt
Das gilt auch in vielen anderen Bereichen des Lebens
Nachdem ich Void Linux genutzt hatte, bin ich auch unter Arch auf
aurutilsumgestiegen, um eine ähnliche Trennung zu habenMan kann damit leicht selbst bauen, ein lokales AUR-Repository pflegen und dann per
pacmaninstallieren und verwalten, was den gesamten Upgrade-Prozess verbessertIch bin nicht zu Linux gewechselt, um wie ein Windows-Nutzer Websites aufzurufen, auf „download“ zu klicken und Zeit mit Programm-Updates zu verschwenden
Die erwähnten pacman-Wrapper wirken auf mich allerdings riskant
Es gibt so viele Tutorials, die deren Nutzung propagieren, dass ich mich schon fast wie der Merkwürdige fühle, nur weil ich nicht auf unbestimmte Zeit root-Rechte an Fremde ohne nennenswerte Peer-Review vergeben möchte
Für die Installation einer einzelnen Paketversion, die gar keine oder nur selten Updates braucht, nimmt man damit ein solches Risiko in Kauf
Beim schnellen Überfliegen sieht es so aus, als wäre aus npm
atomic-lockfile,js-digestundlockfile-jsinstalliert worden.Die Liste der betroffenen Pakete steht unter [1].
Ich habe nicht sofort herausgefunden, wie man das System prüft, also habe ich
pacman -Qmiausgeführt, um Informationen zu externen Paketen und Datumsangaben zu finden.Man muss die Ausgabe dann nur mit der Liste der betroffenen Pakete abgleichen.
Außerdem kann man an mehreren Stellen nach Dateien wie den folgenden suchen:
grep -rl "atomic-lockfile" / --include="package.json" --include="package-lock.json"grep -rl "atomic-lockfile" ~/.npm 2>/dev/nullgrep -i "atomic-lockfile" /var/log/pacman.log 2>/dev/nullIch weiß nicht, ob sich das Paket nach der Ausführung selbst löscht.
Die anderen Informationen waren nicht besonders hilfreich, deshalb wollte ich wenigstens die grundlegenden Befehle teilen.
[1] https://md.archlinux.org/s/SxbqukK6IA
Mit
yaydie Liste der aus dem AUR stammenden installierten Pakete holen:yay -Qam > packages_aur.lastVon https://md.archlinux.org/s/SxbqukK6IA# die Liste herunterladen:
curl https://md.archlinux.org/s/SxbqukK6IA/download > compromised.txtDanach
grep -wFf compromised.txt packages_aur.lastausführen; dann sollten die Pakete erscheinen, die in beiden Dateien vorkommen, also Pakete, die irgendwann kompromittiert waren.atomic-lockfilezu schauen.Auch
js-digestundlockfile-jswurden verwendet, und zeitweise wurde von npm auf bun umgestellt.Eine legendäre Plattform.
emacs-magitbetroffen sein konnte.Soweit ich weiß, gibt es dort überhaupt kein JavaScript.
Wieder einmal eine berechtigte Erinnerung daran, keine beliebigen Drittanbieter-Pakete, -Bibliotheken oder -Anwendungen ohne Prüfung zu installieren.
Zum Glück war dieser Vorfall auf das AUR beschränkt, und das AUR ist faktisch ein Paket-Repository, in das praktisch jeder etwas hochladen kann; anders als bei den offiziellen Repositories wird seit Langem immer wieder darauf hingewiesen, dass eine Prüfung vor der Installation nötig ist.
Kommandozeilen-Tools wie
ruaerleichtern es, Pakete vor der Installation aus dem AUR zu prüfen.Wenn man auf demselben Rechner Bankgeschäfte erledigt, gibt es keine Ausrede dafür, die Software, von der man abhängt, nicht zu prüfen.
Hält man die Zahl der Pakete niedrig und nutzt nur, was man braucht, wird auch das Upgrade deutlich einfacher.
Soll man vor der Installation jede einzelne Zeile Code vollständig lesen?
Und was ist bei Binärpaketen?
Soll man für alles, was man installiert, reproduzierbare Builds erstellen, oder auf eine quellbasierte Distribution umsteigen?
Diese Verantwortung auf die Nutzer abzuwälzen, ist keine nachhaltige Lösung.
Ein gewisser gesunder Menschenverstand hat hier seinen Platz, aber das den Nutzern anzulasten, ergibt keinen Sinn.
Es gibt auf der Welt weit mehr Code, als ein einzelner Mensch in seinem ganzen Leben lesen könnte.
Wahrscheinlich hast du nicht einmal 1 % des Quellcodes gelesen, der gerade jetzt auf deinem Rechner läuft.
Hast du deshalb aufgehört, Computer zu benutzen?
Wie kann man dem vertrauen, was darin vor sich geht?
Die Arch-Linux-Entwickler leisten hervorragende Arbeit, und ich bin ihnen persönlich dankbar, aber in einer Zeit, in der Supply-Chain-Angriffe so stark zunehmen, fühlt es sich an, als hätten Nutzerwarnungen allein ihre Grenzen schon vor langer Zeit erreicht.
Eine einfache Lösung ist nicht in Sicht, aber Kontrollen wie Peer-Review vor der Veröffentlichung oder eine Karenzzeit könnten das Problem zumindest teilweise abmildern.
Dass ein Paket als verwaist markiert werden kann, man dann zwei Wochen wartet und, wenn der bisherige Maintainer im Urlaub ist und nicht antwortet, ein Angreifer als Maintainer eingetragen werden und ein bösartiges Update verteilen kann, ist absurd.
Unveränderliche Distributionen, Wayland und Flatpak liefern zwar einige Bausteine, aber es bleiben wichtige Lücken.
Das größte Problem ist, dass Sandboxing an Paketformate gebunden ist, und ich halte das für einen Fehler.
Sandboxing und Zugriffsrechte sollten Funktionen auf Systemebene sein, sodass auch beliebige Binärdateien nicht so leicht ausbrechen können.
Das löst das Problem zwar nicht vollständig, könnte aber den Schadensradius stark verkleinern und Nutzer von Distributionen zu weniger attraktiven Zielen machen.
Für alle, die sich Sorgen machen: Ich habe ein Repository gefunden, das aktuelle Skripte und Paketlisten sammelt, um bei der Prüfung auf eine Infektion zu helfen: https://github.com/lenucksi/aur-malware-check
Beides dürfte ausreichen.
Ich nutze zwar kein Arch Linux, aber viel NodeJS, und dort gibt es ähnliche Angriffe ebenfalls häufig.
Ich frage mich in letzter Zeit, wo Paketmanagement eigentlich noch richtig und sicher betrieben wird.
Nicht in diesem Ausmaß wie diesmal, aber dass es von Grund auf nicht sicher ist, war klar, und überall gab es entsprechende Warnhinweise.
Überall gibt es Maintainer, die Pakete prüfen und Verantwortung dafür übernehmen.
Das gilt auch für Arch Linux.
Die inhärente Unzuverlässigkeit von AUR wurde im Arch Wiki und in der umgebenden Kultur immer klar benannt und unterscheidet sich von Paketmanagern für Programmiersprachen wie npm oder pip.
Wenn man AUR nutzt, muss man alles überprüfen.
Die meisten Distributionen sind ebenfalls in Ordnung, und die großen Distributionen haben eine ziemlich gute Bilanz.
Vielleicht liegt es an einer überzogenen DRY-Kultur, vielleicht an etwas anderem.
Ich habe jedenfalls noch nichts anderes benutzt, das einen ähnlich schlimmen Albtraum an Abhängigkeitsbäumen hatte.
Im AUR gibt es 15.000 verwaiste Pakete.
Ich habe heute Morgen nach Popularität sortiert und drei kaum aktualisierte Pakete übernommen und gebaut.
Wenn ihr verwaiste Pakete nutzt, könnte es sich lohnen, sie selbst zu übernehmen, bevor schlechte Akteure es tun.
Ich kann mich irren, aber diese Situation wirkt auf mich wie ein Signal für die zunehmende Verbreitung von Desktop-Linux.
Ich hatte nie einen Grund, AUR zu brauchen.
Wenn ich ein Paket brauche, das nicht in den offiziellen Repositories ist, baue ich es selbst oder lade mir einen Binary-Release herunter, falls es einen gibt.
So muss man beim Bauen kein root verwenden, und man kann Programme lokal für einen einzelnen Benutzer installieren, was für die meisten Desktop-Anwendungsfälle sogar besser passt.
Zumindest entfällt im Vergleich zum Pfad Entwickler → Nutzer ein zusätzlicher Schritt Entwickler → Maintainer → Nutzer als mögliche Stelle für das Einschleusen von Malware.
makepkgverweigert die Ausführung als root ausdrücklich.Es läuft nicht als root, außer man umgeht das absichtlich etwa mit
env EUID=123 makepkg ....Allerdings wäre es gut, wenn pacman Installationen auf Benutzerebene unterstützen würde.
Derzeit verweigert es die Installation ohne root; umgehen kann man das, indem man sich über einen User-Namespace selbst auf root abbildet.
Ich verstehe, dass es diesmal um AUR ging.
Unabhängig davon, ob es AUR ist oder nicht, wäre es hilfreich, wenn ihr teilen könntet, welche Schritte ihr bei der Paketinstallation durchgeht und wie ihr sicherstellt, dass das Paket und seine Abhängigkeiten keine Malware enthalten.
Wenn man einmal ein bösartiges Paket installiert hat, scheint es wirklich schwer zu sein, das wieder rückgängig zu machen.