Arch vypnul přebírání balíčků v AUR. Vložený program podle rozboru krade hesla a klíče
Arch Linux ve čtvrtek vypnul možnost přebírat opuštěné balíčky v AUR. Útočníci si přes ně přisvojovali cizí recepty a doplňovali do nich spustitelný soubor, který podle rozboru sbírá hesla, klíče a peněženky a přijímá příkazy přes Tor. Je to druhá taková vlna za dva měsíce.

Oznámení přišlo do konference
Zpráva AUR packages adoption disabled dorazila do konference aur-general ve čtvrtek 30. července v 16:22 UTC. Podepsal ji Robin Candau za tým DevOps: kvůli přílivu škodlivých adopcí balíčků a navazujících commitů je přebírání balíčků zatím vypnuté. Uživatele v ní žádá, aby hlásili podezřelé adopce a commity, které ještě nikdo nevyřídil.
Co je AUR a proč se dá zneužít
Arch User Repository není sklad hotových balíčků. Jsou v něm recepty – soubory PKGBUILD, které říkají, odkud se stáhne zdrojový kód a jak se z něj balíček sestaví. Sestavení pak běží na počítači uživatele. K 31. červenci je v AUR 117 176 balíčků a Arch u jejich výpisu otevřeně píše, že jde o obsah od uživatelů a použití je na vlastní riziko.
Balíček, o který se přestal starat správce, se označí jako osiřelý a převzít si ho smí kdokoli. Přesně tam útok míří: útočník si osiřelý balíček přisvojí a v dalším commitu nahradí pole source spustitelným souborem. Jméno toho souboru zní neškodně. V seznamu, který 30. července večer sestavil uživatel Saren, se binárky jmenují validator, linter, hasher, converter, optimizer, minifier, indexer nebo packer – jako pomocný nástroj, který k sestavení patří.
Do téže konference napsal CUI Hao, že Saren z komunity Arch Linux CN našel stovky podezřelých aktualizací pomocí agenta nad jazykovým modelem a že v mnoha případech jde o spustitelný soubor ELF o velikosti kolem 50 kB. Sám dodává, že všechna ta hlášení ověřit nedokáže; šest jich uvádí jako ručně ověřená.
Co ten soubor dělá
Rozbor druhého stupně zveřejnil výzkumník vystupující jako ysf. Podle něj jde o program pro x86-64 psaný v Rustu o velikosti 3,7 MB, který spojuje tři věci: kradení údajů, vzdálené ovládání a šíření přes SSH.
Než se rozběhne, zjišťuje, jestli ho někdo nepozoruje. Čte /proc/self/status kvůli hodnotě TracePid, porovnává jméno počítače se seznamem jako vmware, cuckoo, anyrun nebo remnux, hledá proměnné GITHUB_ACTIONS a GITLAB_CI a čte identifikaci základní desky, aby poznal stroj v AWS, Google Cloudu, Azure nebo u Alibaby.
Pak sbírá. Cookies a uložená hesla z prohlížečů včetně položky Safe Storage v klíčence, kterou se dešifrují novější cookies Chromia a prohlížečů z něj odvozených. Peněženky Electrum, Ledger, Trezor a Monero; u peněženky Exodus podle rozboru upraví soubor app.asar a vloží do aplikace kód, který vynese obnovovací frázi. Správce hesel 1Password, Bitwarden a LastPass. Data Telegramu, token Discordu, přihlášení do Slacku. Přístupy ke cloudu z adresářů .aws, .kube a gcloud, soubory .npmrc, .netrc, .git-credentials a .env, tokeny GitHubu a GitLabu, klíče k API jazykových modelů, token Vaultu. A klíče SSH – ty použije rovnou: přečte known_hosts a zkusí se přes scp a ssh rozšířit na další stroje.
Zůstat se snaží několika cestami najednou: službou systemd s Restart=always, uživatelskou službou spolu s loginctl enable-linger, záznamem v /etc/cron.d, který ho spouští každých pět minut, a řádkem @reboot v uživatelském crontabu. Na macOS zakládá plist v LaunchAgents, na Windows naplánovanou úlohu.
Ven se dostává vlastním Torem. Stáhne si ho z archivu Tor Projectu, napíše si k němu torrc a spustí ho pod jménem dbus-daemon, aby ve výpisu procesů nepadl do oka. Přes ten kanál pak přijímá příkazy – umí spustit bash, Python i PowerShell – a odesílá, co našel.
Za dva měsíce podruhé
V červnu se totéž dělo v širším měřítku. Arch oznámil 12. června, že řeší velký objem škodlivých adopcí a aktualizací, a 15. června zakázal zakládání nových účtů. Podle LWN se registrace otevřely znovu 13. července poté, co tým doplnil při zakládání účtů drobná omezení; LWN je označuje za zjevně neúčinná. Server Phoronix počítá červnovou vlnu na víc než 1 500 zasažených balíčků.
Že ta omezení nestačila, ukazuje současná vlna. Jeden z účastníků konference při ní upozornil na detail, který s adopcemi nesouvisí: balíček python-aiofile prošel kontrolou na duplicitní jméno, přestože v oficiálním repozitáři existuje python-aiofiles. Podle něj je v AUR 32 balíčků, které se od jména balíčku v hlavních repozitářích liší jen jednotným a množným číslem.
Co s tím
Rada, kterou dává bezpečnostní analytik Michael Taggart v rozboru útoku, je nezvykle prostá: zakázat v síti odchozí spojení do Toru. Druhý stupeň se odtud stahuje, takže bez něj útok nedoběhne. Ve stejném textu doporučuje projít výsledky nástroje AUR Audit a porovnat je s tím, co má člověk nainstalované.
Zbytek platí pro AUR pořád stejně a Arch to opakuje sám: před každou aktualizací si přečíst, co se v receptu a instalačních skriptech změnilo. Recept, který nově stahuje binárku místo zdrojového kódu, je v takovém rozdílu vidět na první pohled.
Podle nás je slabina spíš v tom, jak se s osiřelými balíčky nakládá. Adopce je jednorázový úkon bez prodlevy a bez druhého páru očí, a hned po ní může nový správce poslat commit, který se dostane ke všem, kdo balíček používají. Vypnutí adopcí je proto obejití následku, ne příčiny – a Arch sám píše, že jde o dočasné opatření.