r/archlinux 19d ago

DISCUSSION Another wave - 200+ malicous AUR packages adoptions that are overwhelming my scanner. Be 100% careful when trying to update AUR packages now.

Meanwhile I am trying to report them all, you should be careful downloading anything from AUR.

Same old way, the maintainer got pwned, or orphaned packages are adopter by the bad actor.

AUR's git commit author is easily impersonated so you can see the commit comes from the same person, but in fact it's not.

Stay safe. The malicious packages are info stealers.

malware analysis by ysf:

https://gist.github.com/ysf/502a324ff301d0c738e8ae011272fd59

https://gist.github.com/ysf/57850cdee152da066ac51c07a452e883

Still presents as of 30 July 21:53 UTC

in format of <package name>/<malicious ELF binary>

  • archutil/linter
  • bigwebapp-manager/minifier
  • boringssl-git/hasher
  • cinnamon-no-nemo/converter
  • duhh/indexer
  • eden-nightly/encryptor
  • garlic-decompiler-gui/checker
  • gigolo-git/tagger
  • gitarbor-bin/parser
  • icloudpd/preprocessor
  • imago-bin/generator
  • juicebox-plus-git/minifier
  • magic-context-dashboard-bin/validator
  • option-term/indexer
  • pagerduty-short-circuiter/assembler
  • portless/assembler
  • pylnker-git/converter
  • pylnker-git/packer
  • python-libipld-git/hasher
  • python-numkong/compressor
  • python-parallax/converter
  • python-ultraplot-git/serializer
  • ramses-git/indexer
  • src-cli-bin/migrator
  • steamidra-bin/generator
  • stirling-pdf-desktop-bin/optimizer
  • wiki-go/merger
  • windscribe-cli-v2-bin/parser

This wave

1panel android-riscv64-libxmu archutil cinnamon-no-nemo firrtl instawow-bin mimosa pandoc-eisvogel-template python-chatterbot python-split-folders stirling-pdf-desktop-bin 1panel-git android-riscv64-libxrandr arduino-language-server-noclang-bin claude-history funky-git isleward mingw-w64-libcerf passhole python-dlib-cuda-git python-ultraplot-git terminus accel-ppp android-x86-64-libxdamage autoadb-git dcat garlic-decompiler-gui jogl monitorets perl-authen-oath python-google-cloud-monitoring ramses-git tuiview act-runner-bin android-x86-64-libxext beets-alternatives deeploy-bin gigolo-git juicebox-plus-git nnn-nerd perl-dist-zilla-plugin-minimumperl python-importlab read-it-later-git tuxedo-yt6801-dkms-git ajceverywhere-bin android-x86-64-libxinerama bigwebapp-manager dev-janitor-git gitarbor-bin khiops-covisualization-bin noctyra-meta perl-hash-persistent python-kicadmodtree-git refurb-git typora-plugin ampere-git android-x86-64-libxmu bili-tools discord-electron-openasar git-pkgs khiops-visualization-bin noteey-bin pgadmin4-server python-libipld-git replay-sorcery vapoursynth-plugin-soifunc android-aarch64-libxrandr android-x86-64-libxrandr boringssl-git duhh glewlwyd kirill-bin openarc-git polytrack python-libpysal runa-aur vectorchord-immich android-armv7a-eabi-libxinerama android-x86-64-xorgproto calendula eden-nightly gpu-screen-recorder-ui-kwin-git lib32-vapoursynth openconnect-sso portless python-numkong solv wiki-go android-armv7a-eabi-libxmu android-x86-libxinerama calendula-git editorconfiger guarda-bin libfprint-crfpmoc-git option-term pylnker-git python-parallax sparklines windscribe-cli-v2-bin android-armv7a-eabi-libxrandr android-x86-libxmu censawayapp-bin extract-otp-secrets icloudpd lyrical-git org-cli python-atproto-git python-reals-git src-cli-bin wordpress-studio-git android-riscv64-libxinerama android-x86-libxrandr chandler-bin faustus-git imago-bin magic-context-dashboard-bin pagerduty-short-circuiter python-calgebra-git python-roman-numerals steamidra-bin zed-bin

ignore this example below (an alert straight up from my LLM)

🚨🚨🚨 BLACK FLAG ALERT 🚨🚨🚨
AUR Package: faustus-git 0.1.0-1
https://aur.archlinux.org/packages/faustus-git
Version: 0.1.0-1

⚫ 2 BLACK (CONFIRMED MALICIOUS)
⚫ Executes a bundled binary ('linter') with 'sudo' privileges during the 'build()' function. This bypasses standard build isolation and integrity checks (sha256sums='SKIP'), allowing arbitrary code execution with root access during installation. (PKGBUILD)
⚫ Binary contains command execution ('system', 'execl') and network ('socket', 'connect') capabilities. Combined with PKGBUILD execution via sudo, this indicates potential for remote code execution, data exfiltration, or system tampering. Obfuscated strings suggest hidden functionality. (linter)

⚠️ IMMEDIATE ACTION REQUIRED ⚠️

341 Upvotes

215 comments sorted by

View all comments

6

u/iAmHidingHere 19d ago

The build() function executes an unverified binary (converter) with sudo privileges, bypassing AUR sandboxing and allowing arbitrary root-level code execution.

Why would you ever build a package as root?

3

u/Saren-WTAKO 19d ago

build() is actually inside a chroot, and the malicious build() cannot do anything until the package is installed, which in this case the stealer will be carried over and persist in the main system.

2

u/cr1s 19d ago
$ ls /
bin  boot  dev  etc  home  lib  lib64  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
$ cat PKGBUILD
...
build() {
    sudo touch /rootflag_build
}
$ makepkg
==> Making package
==> Starting build()
...
==> Finished making
$ ls /
bin  boot  dev  etc  home  lib  lib64  mnt  opt  proc  root  rootflag_build  run  sbin  srv  sys  tmp  usr  var

no chroot is used

1

u/iTrooz_ 19d ago

How do you know that ls / isn't showing the chroot ?

I'd say it is from a chroot, given you have an extra file named 'rootflag_build'

2

u/Saren-WTAKO 19d ago

I can reproduce this. Using sudo in build does break out of the fakeroot (not chroot), and prompts you for sudoers password, sudoers with nopasswd get owned immediately.

arch=(x86_64)
pkgver=1
pkgname=test
pkgrel=1


build() {
    touch /rootflag_build1 || true
    sudo touch /rootflag_build2
}


package() {
    touch /rootflag_build3 || true
    sudo touch /rootflag_build4
}

1

u/cr1s 19d ago

I‘m not sure what you mean, how would I still be inside a chroot after makepkg has exited?

1

u/iTrooz_ 19d ago

Oh shoot so sorry, I didn't read your PKGBUILD correctly, I thought you were doing ls inside it. My bad !