| aliases |
|
|
|---|---|---|
| moc | [[_GNU+Linux]] | |
| tags | ||
| title | AUR malware útoky analýza - paru a yay | |
| created | 2025-08-05 16:46 |
- AUR malware útoky analýza - paru a yay
- Technical issues
- Rozbor
- Malwarové incidenty v AUR za poslední měsíc (červenec 2025)
- Malware-Removal Script Design - aur-malware-check.sh
Title: RFC: Základní ochranné prvky proti AUR malware (uživatelské varování a bezpečnější build)
Context
V návaznosti na nedávné incidenty v AUR navrhujeme prozkoumat úpravy, které sníží riziko instalace škodlivých balíčků bez ruční kontroly. Cílem je posílit „bezpečné defaulty“ pro běžné uživatele, aniž by byl omezován pokročilý/CI provoz.
Problem statement
Uživatelé často provádějí rychlé instalace z AUR s minimální interakcí. Pokud balíček obsahuje neobvyklé nebo překvapivé kroky při buildu/instalaci, nemusí si jich všimnout. Chybí lehká, nenucená vrstva, která by je včas informovala a vedla k vědomému rozhodnutí.
Goals
-
Upozornit uživatele na potenciálně rizikové aspekty před sestavením/instalací.
-
Umožnit přísnější režim pro ty, kdo ho chtějí (volitelně).
-
Zachovat stávající workflow a přepínače pro zkušené uživatele a CI.
Non-goals
-
Zavádět těžkou bezpečnostní politiku nebo plošné blokace.
-
Mít konečné slovo nad „správností“ PKGBUILD; rozhodnutí má zůstat na uživateli.
High-level směry k úvaze (nepředepisující)
-
Upozornění před instalací: pokud helper zjistí, že balíček během buildu/instalace dělá něco neobvyklého (např. síťové akce mimo fázi stahování zdrojů, hooky měnící spouštění aplikace apod.), zobrazit stručné vysvětlení a nabídnout otevření diffu/PKGBUILD k ručnímu přezkoumání.
-
Režim „více potvrzení“ (volitelný): možnost zapnout přísnější tok, který u zjevně citlivých situací vyžádá explicitní potvrzení od uživatele.
-
Bezpečnější build prostředí (volitelné): poskytnout uživatelům přívětivou cestu, jak build provést v „bezpečnějším“ kontextu (např. existující nástroje systému, chroot apod.), pokud je na jejich stroji k dispozici.
-
Integrace s ověřováním zdrojů: podpořit/propagovat využití stávajících kontrol (checksumy/podpisy) s tím, že finální volba je na uživateli.
(Záměrně se vyhýbáme konkrétním implementačním detailům; jde o návrh směru a UX výsledku.)
User stories
-
„Jako běžný uživatel chci být předem upozorněn, že balíček může dělat něco neobvyklého, abych se mohl vědomě rozhodnout, zda pokračovat.“
-
„Jako pokročilý uživatel chci přísnější režim, který mi dá jasnou stopku u vybraných situací, ale současně chci mít možnost to vědomě obejít (např. v CI).“
Success criteria (měřitelné na úrovni UX)
-
Uživatel dostane srozumitelnou informaci před instalací, když nastanou rizikové vzorce.
-
Zkušený uživatel může stávající chování zachovat (opt-in/opt-out).
-
Minimální počet „falešných poplachů“: text upozornění je stručný a akční (odkaz na diff, otevření PKGBUILD).
Open questions
-
Jaké situace jsou natolik „citlivé“, aby si zasloužily výchozí upozornění?
-
Jak nastavit výchozí přísnost (např. pouze varování vs. možnost stricter režimu)?
-
Jak nejlépe komunikovat uživateli důvody upozornění bez zahlcení detailní technikálií?
Backward compatibility & rollout
-
Navrhujeme postupné zavedení: nejprve čistě informativní varování; přísnější režimy pouze volitelně.
-
Dokumentace s příklady typických scénářů, aby uživatel rozuměl, co a proč vidí.
Summary
Navrhuji přidat volitelnou ochranu „AUR Malware Guard“, která před instalací z AUR provede (a) statické ověření PKGBUILD/.install a (b) spustí build v izolovaném režimu. Cílem je zachytit běžné TTPs z nedávných incidentů (síť v build()/package(), pipe-to-shell, „launcher“ hooky) a předejít „one-click“ instalacím bez review.
Motivation
AUR je komunitní a bez předběžného auditu; AUR helpeři jsou fakticky UX vrstva, která může přidat bezpečnostní brzdy bez zásahu do AUR. Uživatelé často instalují s minimální interakcí – chceme přidat výchozí varování a jasnou červenou stopku pro zjevně rizikové vzory.
Scope (MVP – varování, žádné lámání workflow)
-
Statický skener PKGBUILD + přiložených skriptů:
-
patterny:
-
curl|wget ... | (sh|bash|zsh)/bash -c "$(curl …)" -
python -c "$(curl …)"/node -e "…require('https')…" -
eval "$(curl …)",base64 -d | sh,socat|ncapod. -
síťové volání v
build()/package()(mimosourcefázi), -
přidávání autostartu/systemd jednotek, úpravy
Exec=v.desktopsouborech.
-
-
Skóre rizika (Low/Med/High) + stručný report s červeně zvýrazněnými řádky.
-
-
Vynucené review při High-risk
- zakázat
--noconfirmpři High; vyžadovat type-to-confirm („napiš název balíčku“) a otevřít diff/editor.
- zakázat
-
Integrace ověřování zdrojů
- automaticky zapnout
makepkg --verifysource(respektovat uživatelské přepínače).
- automaticky zapnout
-
SafeBuild (volitelně)
-
„měkká“ izolace: build v clean
$BUILDDIRpod neprivilegovaným uživatelem + blokace egress sítě vbuild()/package()(povolit síť pouze pro-o/--downloadonly). -
„tvrdá“ izolace (volitelná): podpora
devtools/makechrootpkgpokud nainstalováno; fallback na měkkou variantu.
-
UX / CLI
-
Nový přepínač:
--risk(vypíše skóre a report),--strict(High → stopka),--i-understand-the-risks(přeskočí stopku pro CI). -
Výchozí chování: zapnuto varování (bez stopky),
--strictlze zapnout v configu.
Konfigurace (~/.config/yay/config.json nebo odpovídající)
{
"security": {
"RiskScanner": "on",
"RiskThreshold": "high",
"BlockOn": ["NetworkInBuild", "PipeToShell", "LauncherHook"],
"AllowDomains": ["github.com", "gitlab.com", "archive.org"],
"DenyPatterns": [],
"SafeBuild": "soft", // off | soft | chroot
"NoConfirmOnHigh": true,
"PassMflags": ["--verifysource"]
}
}Implementace (návrh)
-
Go balíček
internal/securityscans pravidly (regex + kontextové validátory). -
Hooky do existujících code paths před sestavením (
Prepare()/Install()): načíst PKGBUILD,*.install,*.service,.desktop, provést scan, sestavit report. -
Egress-block:
unshare -nnebobwrap --unshare-netpro fázebuild/package(pokud dostupné). -
Telemetrie opt-in: anonymní upload hashů detekovaných řádků → sdílený denylist.
Kompatibilita / false positives
-
Balíčky, které legitimně sahají do sítě při buildu (což AUR směrnice nedoporučují), budou varovány, ale ne blokovány (pokud není
--strict). -
Maintainer může přidat explicitní allow-comment do PKGBUILD, např.
# yay:allow NetworkInBuild, který se vypíše v reportu.
Alternativy
-
Spoléhat pouze na diff review uživatele (neřeší „--noconfirm“ a sociální inženýrství).
-
Externí linter (mimo yay) – horší UX, bez záruky, že jej uživatel spustí.
Open questions
-
Formát sdíleného denylistu pravidel/signatur (JSON? URL?)
-
Výchozí úroveň přísnosti v první verzi (navrhuji warn-only).
Reference
- Repo: Jguer/yay — AUR Helper in Go. (GitHub)
Summary
Navrhuji dvě nové bezpečnostní funkce: (1) Risk Scanner se skóre a povinným review při High-risk a (2) SafeBuild integrující existující LocalRepo + Chroot a doplňující blokaci sítě ve fázích build()/package().
Motivation
Paru už má skvělý základ (LocalRepo/Chroot). Přidáním lehkého statického skeneru a „červené stopky“ pro rizikové vzory posuneme baseline bezpečnost pro širší publikum bez zásadních změn UX.
Scope (MVP)
-
Risk Scanner (stejná pravidla jako u yay, sdílený seznam – možno udržovat ve vlastním crate).
-
Povinné review při High-risk (blokuje
--noconfirm, vyžaduje potvrzení psaním názvu balíčku). -
makepkg --verifysourcedefaultně přeposílat přesMFlags(konfigurovatelné). -
SafeBuild
-
preferovat existující
Chroot+LocalRepo(pokud nastaveno), -
pokud není k dispozici, „soft“ izolace (omezení práv + blokace egress sítě během
build/package).
-
-
Post-install guard (rychlý check): prohledat nainstalované
.desktop/launcher skripty změněné balíčkem a varovat, pokud obsahují volání vzdáleného kódu (neblokuje instalaci, jen upozorní).
UX / CLI
-
paru --risk→ vytiskne skóre a report;--strict→ High-risk = stopka;--i-know-what-im-doingpro CI. -
Na první spuštění wizard: „Chcete zapnout SafeBuild (Chroot) a Risk Scanner?“.
Konfigurace (paru.conf) – nový blok [security]
[security]
RiskScanner = on
RiskThreshold = high
BlockOn = NetworkInBuild PipeToShell LauncherHook
NoConfirmOnHigh = true
SafeBuild = chroot # off | soft | chroot
AllowDomains = github.com gitlab.com archive.org
DenyPatterns =
MFlags = --verifysourceImplementace (návrh)
-
Rust crate
paru_securitys pravidly a skórováním; zvýraznění podezřelých řádků v TTY. -
Napojit před fází buildu po stažení
source(tak aby checksumy už seděly). -
Síťová izolace pro ne-chroot režim:
unshare -n/bwrap --unshare-netpokud k dispozici; fallback = jen varování. -
Volitelné opt-in sdílení anonymizovaných signatur (stejný protokol jako yay).
Kompatibilita / false positives
- Stejná politika jako u yay: výchozí warn-only,
--strictblokuje.
Alternativy
- Nechat bezpečnost čistě na uživateli; nezachytí „rychlé“ instalace a sociální inženýrství.
Open questions
-
Default zapnutí
Chrootpři prvním spuštění? (wizard by to mohl nabídnout automaticky). -
Přidat pravidla i pro heuristiky AUR RPC (
NumVotes, čerstvě založené balíčky) a zvýšit skóre při splnění?
Reference
- Repo/man: Morganamilo/paru;
paru(8)aparu.conf(5)včetněLocalRepo/Chroot. (GitHub, distro.tube, distro.tube, GitHub)
-
NetworkInBuild: výskyty
curl|wget|ftp|nc|socat|git cloneuvnitřbuild()/package(). -
PipeToShell:
| sh|bash|zsh,bash -c "$(curl …)",eval "$(curl …)",base64 -d | sh. -
PythonNodeExecUrl:
python -c ".*(urllib|requests).*"+ URL,node -e ".*https?.*"→ spouštění staženého kódu. -
LauncherHook: změny v
Exec=řádcích.desktopnebo wrapper skriptech, které spouštějí síť/interpret. -
UnpinnedSource (varování): netagované tarbally z branch (
/archive/refs/heads/),raw.githubusercontent.combez checksumu; zvyšuje skóre, ale neblokuje.
-
v1 (MVP): skener + report + warn-only,
--strictopt-in; config klíče. -
v2: SafeBuild „soft“, type-to-confirm, zákaz
--noconfirmpři High. -
v3: integrace chroot (yay) / výchozí chroot wizard (paru), volitelná blokace sítě.
Níže je stručný přehled aktuálních AUR útoků (červenec–srpen 2025), jak byly provedeny, a praktická obrana pro yay i paru.
-
16.–18. července 2025: do AUR byly nahrány tři falešné balíčky –
librewolf-fix-bin,firefox-patch-binazen-browser-patched-bin– které při instalaci stáhly a spustily CHAOS RAT. Arch tým incident potvrdil a 18. 7. balíčky smazal. (lists.archlinux.org)
(Souhrny a varování publikovala i média.) (The Register, BleepingComputer) -
31. července 2025: objevila se další vlna – balíček vydávající se za
google-chrome-stablespouštěl při startu prohlížečepython -c "$(curl …)", který stahoval a spouštěl RAT pokaždé, když uživatel spustil Chrome. Balíček nahrál nově vytvořený účet a byl po pár hodinách odstraněn. (Linuxiac)
Arch oficiálně připomíná, že AUR je komunitní a PKGBUILD skripty nejsou předem auditované – instalace je na vlastní riziko. (wiki.archlinux.org)
-
Typosquatting / „fix/patch“ názvy: balíčky působily legitimně (např. -fix-bin, -patched-bin). (The Register)
-
Zneužití PKGBUILD / pomocných souborů:
-
během build/instalace došlo ke stažení kódu z útočníkových repozitářů (GitHub) a jeho spuštění (CHAOS RAT). (lists.archlinux.org)
-
v druhé vlně byl do spouštěcího skriptu prohlížeče vložen řádek
python -c "$(curl …)", takže se malware spouštěl při každém startu aplikace. (Linuxiac)
-
-
paru: diff zobrazuje pro AUR výchozím chováním; neskryvejte review (
SkipReviewnenechávejte zapnuté). (Linux Command Library) -
yay: zapněte perma-review a diff menu:
yay --save --editmenu --diffmenu
(Možnosti
--editmenu,--diffmenua jejich uložení jsou dokumentované v manuálu.) (Linux Command Library, Linux Command Library)
Na co se dívat: síťové příkazy v prepare()/build()/package() a .install/start skriptech (curl|wget do shellu, python -c s curl, přidávání služeb, změny spouštěcích skriptů). Tento přesně použitý vzorec byl u google-chrome-stable. (Linuxiac)
Do helperů předejte makepkg flagy:
-
yay:
yay --save --mflags "--verifysource"(Yay předává
--mflagsdálmakepkg.) (Linux Command Library) -
paru – do
~/.config/paru/paru.conf:
[options]
# ...
[bin]
MFlags = --verifysource(Pole `MFlags` v paru.conf posílá argumenty do `makepkg`.) ([distro.tube](https://distro.tube/man-org/man5/paru.conf.5.html "Manpages - paru.conf.5"))
makepkgumí ověřovat podpisy a checksumy (polevalidpgpkeys,*.sig). Nepoužívejte--skippgpcheck/--skipinteg, pokud to není nezbytné. (wiki.archlinux.org)
- paru: má podporu chroot buildu – zapněte lokální repozitář a Chroot v
paru.conf:
[options]
LocalRepo
Chroot(Viz `paru.conf(5)` – „Build packages in a chroot… requires LocalRepo“.) ([distro.tube](https://distro.tube/man-org/man5/paru.conf.5.html "Manpages - paru.conf.5"))
- Obecně: používejte devtools a clean chroot podle ArchWiki (lepší reprodukovatelnost, nižší riziko „úniku“ z buildu). (wiki.archlinux.org)
Pozn.: chroot není „dokonalé“ bezpečnostní opatření, ale výrazně snižuje dopady; cílem je, aby buildovací skripty neměly přístup k vašemu systému. (wiki.archlinux.org)
- Vyhněte se
--noconfirma u paru nenechávejteSkipReview. (Paru/Yay umí povolit rychlý režim, ale to je přesně to, co útočníci chtějí.) (Linux Command Library, GitHub)
- Prohlížeče (Firefox atd.) instalujte z oficiálních repozitářů Archu – v incidentu byly kompromitovány AUR varianty a Arch výslovně doporučil tyto instalace odstranit a nainstalovat čistě. (The Register)
- Sledujte mailing list aur-general – bezpečnostní varování k AUR se zveřejňují právě tam (např. upozornění z 18. 7. 2025). (lists.archlinux.org, wiki.archlinux.org)
-
Yay:
yay --save --editmenu --diffmenu --mflags "--verifysource"(Linux Command Library) -
Paru (
~/.config/paru/paru.conf):
[options]
# nechci SkipReview ani --noconfirm
[bin]
MFlags = --verifysource
# izolace buildu
LocalRepo
Chroot
:contentReference[oaicite:20]{index=20}-
Před stavbou otevřít PKGBUILD + .install a hledat síťové příkazy / hooky měnící spouštěcí skripty (pattern viz útok s
python -c "$(curl …)"). (Linuxiac) -
Pro prohlížeče a další klíčové aplikace preferovat oficiální repa. (The Register)
-
Clean chroot přes devtools pro re-buildy (ideálně default). (wiki.archlinux.org)
V průběhu posledního měsíce (cca červenec 2025) byly v Arch User Repository (AUR) odhaleny malwarové balíčky, tedy uživatelské balíčky obsahující škodlivý kód. Níže přinášíme přehled zjištěných případů, jejich charakteristik, způsobu odhalení a doporučení pro postižené uživatele. Závěrem uvádíme odkazy na oficiální oznámení a diskuse komunity ohledně těchto incidentů.
V následující tabulce jsou uvedeny balíčky z AUR, u nichž byla potvrzena přítomnost malwaru (všechny byly mezitím z AUR odstraněny). U každého je uveden název balíčku, uživatelský účet, který jej nahrál, a odkaz na příslušnou stránku AUR (která již může být nedostupná vzhledem k odstranění balíčku):
| Název balíčku | Autor (AUR účet) | AUR odkaz |
|---|---|---|
| librewolf-fix-bin | danikpapas | aur.archlinux.org/packages/librewolf-fix-bin (smazán) |
| firefox-patch-bin | danikpapas | aur.archlinux.org/packages/firefox-patch-bin (smazán) |
| zen-browser-patched-bin | danikpapas | aur.archlinux.org/packages/zen-browser-patched-bin (smazán) |
| minecraft-cracked | Quobleggo | aur.archlinux.org/packages/minecraft-cracked (smazán) |
| ttf-all-ms-fonts | Quobleggo | aur.archlinux.org/packages/ttf-all-ms-fonts (smazán) |
| ttf-ms-fonts-all | Quobleggo | aur.archlinux.org/packages/ttf-ms-fonts-all (smazán) |
| vesktop-bin-patched | Quobleggo | aur.archlinux.org/packages/vesktop-bin-patched (smazán) |
| google-chrome-stable | forsenontop | aur.archlinux.org/packages/google-chrome-stable (smazán) |
Poznámka: Všechny výše uvedené balíčky byly nově nahrané a před odstraněním neměly žádnou historii či důvěryhodnost. Např. trojice balíčků librewolf-fix-bin, firefox-patch-bin a zen-browser-patched-bin byla nahrána 16. července 2025 jedním uživatelem (danikpapas) a krátce poté další uživatel (Quobleggo) nahrál čtveřici uvedených balíčků s fonty a „minecraft“ (opět nově založený účet, všechny balíčky měly velmi nízkou popularitu). Poslední v tabulce, falešný balíček google-chrome-stable, se v AUR objevil 31. července 2025 (uživatel forsenontop, účet vytvořený jen pár hodin předtím).
Všechny odhalené balíčky obsahovaly malware typu RAT (Remote Access Trojan) – tedy škodlivý kód, který útočníkovi umožňuje vzdáleně ovládat napadený systém. Konkrétně v případě prohlížečových balíčků (Firefox/LibreWolf/Zen) šlo o tzv. CHAOS RAT, což je otevřený RAT pro Windows i Linux. Tento malware po instalaci poskytuje útočníkům plný přístup k systému – umožňuje nahrávat a stahovat soubory, spouštět libovolné příkazy nebo otevřít reverzní shell. Prakticky tak funguje jako backdoor (zadní vrátka) pro vzdálené ovládnutí počítače. RAT může být zneužit k celé škále nekalých aktivit: od krádeže citlivých dat a přihlašovacích údajů přes špehování uživatele, až po zneužití výkonu PC pro těžbu kryptoměn či jiné formy kybernetické kriminality.
Škodlivý kód nebyl obsažen přímo v těle balíčku, ale byl do systému vpašován pomocí instalačního skriptu či patche staženého z internetu. V prvním incidentu (balíčky od danikpapas) obsahoval PKGBUILD záznam source odkazující na externí repozitář na GitHubu pod kontrolou útočníka. Při instalaci se tento repozitář klonoval a údajný „patch“ ve skutečnosti spustil škodlivý skript (instalující RAT) v průběhu buildu nebo instalace balíčku. Ve druhém případě (falešný google-chrome-stable) byl škodlivý kód ukryt v souboru .install – před spuštěním samotného prohlížeče spouštěl příkaz python -c "$(curl <URL>)", který stáhl a spustil Python skript z cizího serveru. Tento skript se tiše spouštěl na pozadí při každém spuštění prohlížeče, takže uživatel neměl šanci odhalit aktivitu běžným pozorováním.
U balíčků s RAT od danikpapas došlo při instalaci pravděpodobně i k vytvoření perzistence malwaru v systému. Podle analýzy komunity instaloval skript RAT binárku pojmenovanou jako systemd-initd (snaží se maskovat jako součást systemd) a tu umístil např. do /usr/local/share/systemd-initd (příp. do ~/.local/share/… při instalaci pod uživatelem). Zároveň přidal i škodlivou službu custom-initd.service do adresářů systemd. Tím se RAT spustil na pozadí a mohl zůstávat aktivní i po dokončení instalace. (Pokud byl skript spuštěn s root právy, instaloval se do systémových složek, pokud pod běžným uživatelem, pak do domovského adresáře daného uživatele.) Ve všech případech šlo o variaci CHAOS RAT, jak potvrdili uživatelé po analýze vzorku. U balíčku google-chrome-stable nebyl malware vložen trvale do systému (neinstaloval samostatnou službu), ale spoléhal na to, že se škodlivý kód stáhne a spustí při každém spuštění prohlížeče. I ten však fungoval jako RAT/backdoor – škodlivý Python skript měl plnou kontrolu nad počítačem.
První incident (balíčky firefox-patch-bin, librewolf-fix-bin, zen-browser-patched-bin) proběhl 16. července 2025 večer, kdy se tyto balíčky objevily v AUR. Útočník je propagoval na Redditu – z dormantního (dlouho neaktivního) účtu tam zveřejnil pochvalné komentáře ve vláknech o Archu, aby nalákal uživatele k instalaci těchto „upravených“ verzí prohlížečů. Členové archovské komunity však rychle pojali podezření (nově vytvořené či náhle aktivní účty propagující neznámé balíčky) a začali situaci prověřovat. Jeden z uživatelů nahrál podezřelý soubor z balíčku na VirusTotal, který ho identifikoval jako Linux malware CHAOS RAT. Nález byl obratem nahlášen Arch Linux týmu. Během 17.–18. července probíhala analýza a komunikace v rámci Arch komunity; Arch Linux bezpečnostní tým vydal varování na mailing listu a postižené balíčky byly 18. července kolem 18:00 UTC+2 odstraněny z AUR. Oficiální oznámení zdůraznilo, že všichni, kdo některý z těchto balíčků nainstalovali, mají ihned zakročit (viz další sekce).
Krátce poté, co se provalil první útok, došlo k odhalení dalších čtyř škodlivých balíčků (viz seznam výše: minecraft-cracked, ttf-all-ms-fonts, ttf-ms-fonts-all, vesktop-bin-patched). Tyto balíčky nahrál účet Quobleggo 18. července 2025 (účet vzniklý ten den, žádná předchozí aktivita) a opět obsahovaly úpravy stejného typu – v PKGBUILDu odkaz na externí patch repozitář, který při buildu instaloval RAT do systému. Uživatel musta_ruhtinas na Redditu upozornil, že tyto balíčky „jsou zjevně malware“ a záhy poté jiný člen komunity potvrdil, že balíčky byly obratem smazány z AUR administrátory. Díky pohotové reakci komunity se tedy i tato druhá vlna malwaru nestihla významněji rozšířit.
Třetí incident se odehrál na konci měsíce: 31. července 2025 byl do AUR nahrán balíček vydávající se za oficiální Chrome browser – google-chrome-stable (oficiálně přitom Google Chrome v AUR není, pouze Chromium). Balíček nahrál nově vytvořený účet forsenontop, který neměl žádnou jinou aktivitu. Velmi rychle (během několika hodin) si i tohoto balíčku všimli zkušení uživatelé – neuniklo jim, že .install skript balíčku stahuje z internetu cizí kód přes Python, což je krajně podezřelé. Balíček byl nahlášen správcům AUR a ti proti němu zakročili ještě tentýž den. Podle oficiálního logu byl zaslán požadavek na smazání balíčku a 31. července kolem 12:30 došlo ke smazání s odůvodněním „infikovaný balíček“. Arch Linux Trusted User, který zásah provedl, zároveň zamítl souběžný požadavek jiného uživatele na „sloučení“ balíčku s existujícím google-chrome – namísto toho balíček okamžitě smazal jako škodlivý. Díky tomu byl tento pokus o nákazu AUR odvrácen po pouhých pár hodinách dostupnosti. (I tak si ale balíček stihlo všimnout několik uživatelů a měl dokonce několik kladných hlasů, což naznačuje, že ho někteří mohli nainstalovat.)
Pokud jste některý z uvedených škodlivých balíčků nainstalovali, je nezbytné neprodleně podniknout nápravná opatření. Arch Linux tým ve svém oznámení důrazně varoval, aby uživatelé takové balíčky okamžitě odstranili ze systému a učinili potřebné kroky k ověření a zajištění, že nedošlo ke kompromitaci jejich systému. Zde je přehled doporučených kroků:
-
Okamžitě odinstalovat závadné balíčky: Pomocí package manageru odstraňte daný balíček i se všemi jeho součástmi. Např. pro balíčky
librewolf-fix-bin,firefox-patch-bin,zen-browser-patched-binlze použít kontrolu a následné odstranění příkazem:pacman -Qs librewolf-fix-bin firefox-patch-bin zen-browser-patched-bin # zjištění přítomnosti sudo pacman -Rns <název-balíčku> # odinstalování balíčku
(Obdobně pro
google-chrome-stableči jiné jmenované balíčky.) Tím odstraníte samotný balíček z databáze systému. -
Odstranit nebo zneškodnit spuštěný malware: Pouhé odstranění balíčku nezaručí odstranění samotného malwaru – pokud již byl RAT nainstalován a běží, je třeba ho eliminovat ručně. Zkontrolujte běžící procesy a přítomnost podezřelých souborů. Konkrétně hledejte binárku pojmenovanou „
systemd-initd“ a případně službucustom-initd.service. Tyto by mohly být umístěny v/usr/local/share/(případně~/.local/share/) a v adresářích/etc/systemd/(např.system/čiuser/units). Pokud je naleznete, okamžitě je smažte z disku a zrušte jejich běh (stopněte a zakázat službu přes systemctl, ukončete proces). Také adresář/tmpzkontrolujte na přítomnost neobvyklých spustitelných souborů – v původní zprávě Arch týmu se uvádí kontrola právě nasystemd-initdv/tmp. -
Izolovat stroj od sítě: Do doby, než systém vyčistíte, je vhodné odpojit napadený počítač od internetu/sítě (odpojit ethernet/Wi-Fi). Zabráníte tím případnému odesílání dat útočníkovi nebo stahování dalšího payloadu. Malwaru typu RAT se typicky připojují na řídicí server (C2) – v tomto případě byl u CHAOS RAT server na IP
130.162.225.47:8080. Odstřižení od sítě minimalizuje další škody. -
Provést důkladnou bezpečnostní prověrku systému: Po odstranění zjevných stop malwaru doporučují experti detailně projet systém a hledat známky kompromitace. Např. zkontrolujte systémové logy (journald, auth.log apod.) na neobvyklé události či pokusy o neoprávněný přístup. Sledujte také síťový provoz (pomocí nástrojů jako
ss,netstat,lsof -iatd.), zda nějaký proces neudržuje podezřelé spojení. -
Změna/obnova citlivých údajů: Vycházejte z předpokladu, že váš systém mohl být plně ovládán útočníkem. Změňte všechna hesla, která jste na dotyčném stroji používali, zejména pokud šlo o správce hesel nebo prohlížeče – RAT mohl potenciálně odcizit uložená hesla či cookies. Zrušte a znovu vygenerujte SSH klíče nebo jiné klíče, které na systému byly (GPG, API tokeny apod.), protože mohly být kompromitovány. Totéž platí pro uložené kryptografické peněženky, certifikáty atd.
-
Zvážit přeinstalování systému: Někteří bezpečnostní odborníci i členové komunity zdůrazňují, že stoprocentní jistotu vyčištění systému dá jen čistá reinstalace OS. Malware může zanechat skryté zadní vrátka, které je těžké odhalit. Ideální postup je obnovit systém ze zálohy pořízené před instalací závadného balíčku, nebo kompletně přeinstalovat operační systém. To samozřejmě představuje radikální krok – pokud však jde o produkční či velmi citlivý systém, je to nejbezpečnější varianta. U domácího PC by mělo postačit důkladné manuální odstranění malwaru a změna hesel, ale opatrnosti není nikdy dost.
-
Poučení do budoucna – obezřetnost při používání AUR: Tyto incidenty znovu připomněly, že AUR je skvělý sluha, ale může být i zlý pán. Do budoucna Arch komunita doporučuje věnovat instalaci z AUR zvýšenou opatrnost: prostudujte PKGBUILD a instalační skripty každého balíčku, než jej nainstalujete – zejména si všímejte příkazů
curl,wgetnebo odkazů na neznámé repozitáře. Využívejte AUR pomocníky, které zobrazují diff a obsah PKGBUILDu před instalací (např.paruto dělá automaticky). Vyhýbejte se instalaci balíčků, které byly do AUR přidány teprve nedávno a nemají žádné hodnocení či reputaci. Raději počkejte, než je ověří ostatní, nebo si ověřte identitu maintainerů. Zvažte také použití nástrojů pro sandboxování buildu (např.makepkgv chrootu nebosystemd-nspawnkontejnerech), aby případný škodlivý skript nemohl snadno ovlivnit hostitelský systém. AUR je mocný nástroj, ale spoléhá na důvěru a bdělost uživatelů – buďte proto vždy opatrní.
-
[SECURITY] Upozornění na malware v AUR (arch-general mailing list) – Oficiální oznámení Arch Linux týmu z 18. 7. 2025 o nalezení malwaru v balíčcích
firefox-patch-bin,librewolf-fix-binazen-browser-patched-bin, s výzvou k nápravě. -
Vlákno na Redditu (r/archlinux) – Diskuse arch komunity k incidentu, obsahuje informace od uživatelů, nálezy z analýz a upozornění na další podezřelé balíčky (např. účet Quobleggo).
-
Arch AUR-requests log (mazání balíčku
google-chrome-stable) – Záznam o smazání falešného balíčkugoogle-chrome-stableze dne 31. 7. 2025 s odůvodněním „infikovaný balíček“. -
Články a zprávy z komunity – Podrobnosti a souvislosti k incidentům lze nalézt i na webech třetích stran, např. shrnutí na BleepingComputer, Linuxiac, zpráva na ItsFOSS News či souhrn na LinuxConfig. Tyto zdroje citujeme v textu výše a poskytují další pohled na celou záležitost.
Pozn.: Všechny postižené balíčky byly z AUR odstraněny a účty útočníků byly zablokovány. Uživatelům Arch Linuxu se doporučuje sledovat Arch Linux News a mailing listy pro aktuální bezpečnostní informace.
#!/usr/bin/env bash
# aur-malware-check.sh
# Rychlá kontrola a základní náprava známých AUR malware incidentů (07/2025)
set -Eeuo pipefail
# --- Nastavení ---
MALICIOUS_PACKAGES=(
# danikpapas
"firefox-patch-bin"
"librewolf-fix-bin"
"zen-browser-patched-bin"
# Quobleggo
"minecraft-cracked"
"ttf-all-ms-fonts"
"ttf-ms-fonts-all"
"vesktop-bin-patched"
# forsenontop
"google-chrome-stable"
)
# Typické artefakty z incidentů (CHAOS RAT varianta)
SUSPECT_BIN_SYSTEM="/usr/local/share/systemd-initd"
SUSPECT_BIN_TMP="/tmp/systemd-initd"
SUSPECT_SERVICE_SYS="/etc/systemd/system/custom-initd.service"
# uživatelské cesty pro případ uživatelské instalace
USER_BIN_REL=".local/share/systemd-initd"
USER_SERVICE_REL=".config/systemd/user/custom-initd.service"
DO_FIX=false
if [[ "${1:-}" == "--fix" ]]; then
DO_FIX=true
fi
echo "==> Kontroluji známé škodlivé AUR balíčky…"
found_pkgs_current=()
for p in "${MALICIOUS_PACKAGES[@]}"; do
if pacman -Qq "$p" &>/dev/null; then
echo " [!] Nainstalováno: $p"
found_pkgs_current+=("$p")
fi
done
[[ ${#found_pkgs_current[@]} -eq 0 ]] && echo " [OK] Nejsou nalezené žádné z uvedených balíčků v systému."
echo
echo "==> Kontroluji v pacman logu, zda nebyly tyto balíčky instalovány dříve…"
if [[ -r /var/log/pacman.log ]]; then
hit=false
for p in "${MALICIOUS_PACKAGES[@]}"; do
if grep -E "\binstalled $p\b" /var/log/pacman.log >/dev/null; then
echo " [!] V minulosti se instaloval: $p (viz /var/log/pacman.log)"
hit=true
fi
done
$hit || echo " [OK] V logu není zmínka o instalaci sledovaných balíčků."
else
echo " [-] Nelze číst /var/log/pacman.log (spusť jako root, pokud chceš kontrolu logu)."
fi
echo
echo "==> Kontroluji typické artefakty malwaru…"
any_artifacts=false
check_path() {
local path="$1"
if [[ -e "$path" ]]; then
echo " [!] Nalezen soubor: $path"
any_artifacts=true
fi
}
# systémové a /tmp
check_path "$SUSPECT_BIN_SYSTEM"
check_path "$SUSPECT_BIN_TMP"
check_path "$SUSPECT_SERVICE_SYS"
# uživatelské cesty ve všech /home/* a /root
for home in /home/* /root; do
[[ -d "$home" ]] || continue
check_path "$home/$USER_BIN_REL"
check_path "$home/$USER_SERVICE_REL"
done
# běžící procesy s názvem 'systemd-initd'
if pgrep -x systemd-initd >/dev/null 2>&1; then
echo " [!] Běží proces: systemd-initd (PID: $(pgrep -x systemd-initd | tr '\n' ' '))"
any_artifacts=true
fi
$any_artifacts || echo " [OK] Nepodařilo se najít typické artefakty (soubor/služba/proces)."
if $DO_FIX; then
echo
echo "==> Spouštím základní nápravu (--fix)…"
# 1) Odinstalace balíčků
if [[ ${#found_pkgs_current[@]} -gt 0 ]]; then
echo " -> Odinstalace: ${found_pkgs_current[*]}"
pacman --noconfirm -Rns "${found_pkgs_current[@]}" || true
else
echo " -> Není co odinstalovat."
fi
# 2) Zastavit/zakázat službu (system)
if [[ -f "$SUSPECT_SERVICE_SYS" ]]; then
echo " -> Zastavuji a zakazuji systemd službu custom-initd.service"
systemctl stop custom-initd.service || true
systemctl disable custom-initd.service || true
rm -f "$SUSPECT_SERVICE_SYS" || true
systemctl daemon-reload || true
fi
# 3) Kill procesu
if pgrep -x systemd-initd >/dev/null 2>&1; then
echo " -> Ukončuji proces systemd-initd"
pkill -x systemd-initd || true
fi
# 4) Smazání binárek a uživatelských unitů
rm -f "$SUSPECT_BIN_SYSTEM" "$SUSPECT_BIN_TMP" 2>/dev/null || true
for home in /home/* /root; do
[[ -d "$home" ]] || continue
rm -f "$home/$USER_BIN_REL" "$home/$USER_SERVICE_REL" 2>/dev/null || true
done
echo "==> Hotovo. Doporučení: změň hesla/klíče a zvaž reboot."
else
echo
echo "==> Režim pouze-kontrola. Pokud chceš provést nápravu, spusť:"
echo " sudo bash $0 --fix"
fi
echo
echo "Pozn.: Tento skript kontroluje pouze známé balíčky a běžné artefakty z července 2025."
echo "Pro maximální jistotu zvaž reinstalaci systému a změnu hesel/klíčů."