AUR Wars 2: O Império Contra Ataca (mais pacotes com malware)

Moderadores do AUR estão enfrentando mais uma enxurrada de pacotes maliciosos. O modus operandi é instalar o pacote do NPM comprometido atomic-lockfile “de penetra” durante a instalação do programa, que instala um rootkit ladrão de credenciais; fique atento a essa palavra-chave em PKGBUILDs que estiver baixando.

Assim como o ataque do ano passado, o atual se baseia em adotar um pacote órfão, ou um “typosquat” de pacote mais famoso, e inserir o comando malicioso. Porém, é numa escala bem maior, com várias contas envolvidas e centenas de pacotes comprometidos.

4 curtidas

O que um usuário normal deve verificar nos PKGBUILDs? Como saber se um pacote está comprometido?

1 curtida

Um invasor, ainda desconhecido, aproveitou de vários pacotes órfãos no AUR e os infectou com scripts “Infostealer”, roubando senhas, chaves ssh e demais dados armzenados, principalmente nos navegadores.

Confira a lista dos pacotes infectados identificados:

  123pan-bin
  1code
  8192eu-dkms-git
  actual-ai
  adblock2privoxy
  aion-git
  albion-online-launcher-bin
  alienfx
  alvr
  android-signapk
  android-signapk-gui
  android-support-repository
  annobin
  ansible-language-server
  antfs-cli-git
  anythingllm-appimage
  anythingllm-cli-bin
  apk-installer-gui
  apm_planner-bin
  apothem
  apple-music-desktop
  arch-update-vai
  archjh
  archlinux-themes-slim
  archmage
  archtex-git
  arm-linux-gnueabihf-binutils
  artanis-git
  astro-editor-appimage
  atomicwalet
  atomicwalllet
  autohand-cli
  autolabel
  autologin
  azurlaneautoscript
  bcachefs-kernel-dkms-git
  beebeep
  bitcoin-core-git
  blinkenlib
  blueproximity-py3-git
  booklore
  brow6el
  brow6el-git
  canon-pixma-mg3000-complete-fixed
  cartridge-cli
  ccase-bin
  ccl-git
  cgminer
  charcoal
  cinny-desktop-system-tray
  clai
  clang19
  clash-mi
  cling-git
  cmuclmtk
  cnijfilter-common
  codenomad-bin
  codeql-cli-bin
  cogpit-bin
  colorhug-client
  colorz
  compiler-rt19
  compizconfig-python
  coolreader
  cowdancer
  cutefish-calculator
  cutefish-core
  cutefish-dock
  cutefish-filemanager
  cutefish-icons
  cutefish-launcher
  cutefish-qt-plugins
  cutefish-screenlocker
  cutefish-screenshot
  cutefish-settings
  cutefish-statusbar
  cutefish-wallpapers
  cvs-feature-bin
  cynthiune.app
  dagu-bin
  datatype99
  deheader
  dep
  dh-python
  difi
  difi-bin
  doctoc
  dots-hyprland-fork-git
  dvdrip
  dyad-bin
  easy_spice
  edconv-bin
  efiboots-git
  electrum-nmc
  elmerfem
  eisl
  epson-inkjet-printer-escpr2-clos-bin
  exodas
  exodis
  exodud
  exoduss
  exodus-wallet-bin
  exoduswallet
  exodux
  exoduz
  exodys
  exouds
  farmmod-hub
  fastoggenc
  fastjet
  fatx
  fcitx5-pinyin-sougou-dict-git
  ffmpeg-bitrate-stats
  ffmpeg-quality-metrics
  findpkg-git
  firefox-extension-adnauseam-bin-amo
  firmium-desktop-git
  fishui
  fishui-git
  flashfocus
  flexiblas
  flynarwhal
  fmlib
  forgecode-bin
  formidable-bin
  frame
  ftl
  frutool
  futhark-bin
  gdl
  gdlmm
  git-annex-standalone
  gnome-contacts-git
  gnome-randr-rust
  gnutls3.8.9
  gog-the-witcher-2-assassins-of-kings
  gopher2600
  gopher2600-bin
  gosh
  gpx-viewer
  graveman
  green-tunnel-bin
  greetd-wlgreet-git
  gtkimageview
  guile-reader
  gummy
  gummy-git
  hackmatrix-git
  harmony-wad
  headphones
  hearthstone-linux-gui-appimage
  hearthstone-linux-gui-bin
  hepmc2
  hister-git
  hnswlib-git
  horst
  hydownloader-git
  hydrus-git
  i3bar-river
  ianny-bin
  ibm-sw-tpm2
  ihaskell-git
  imageglass
  inadyn
  indicator-session
  infnoise-openssl-git
  interface99
  ios-webkit-debug-proxy
  ipfs-desktop-bin
  ipsw
  iron-heart-git
  jasp-desktop
  jd-gui
  k3sup
  kdb
  kddockwidgets-git
  kexi
  kiss
  ktea
  kookbook
  kproperty
  kreport
  latex-digsig
  lazylpsolverlibs-git
  ledger-udev-bin
  lesstif
  lib32-egl-wayland
  libafterimage
  libbobcat
  libcutefish
  libffi-static
  libgdata
  libjxl-noglycin
  libquvi
  libquvi-scripts
  libretro-hatari-enhanced-git
  libxdiff
  libxml-ruby
  libyami
  linux-cachyos-deckify-native
  linux-cachyos-deckify-native-headers
  linux-cachyos-native
  linux-cachyos-native-headers
  linux-cachyos-native-nvidia-open
  linux-cachyos-rc-native
  linux-cachyos-rc-native-headers
  linux-cachyos-rc-native-nvidia-open
  linux-tool
  liri-cmake-shared-git
  lite
  lll
  llvm-cbe-git
  lowfi-bin
  "ls++"
  lucidvideo
  m5rcode
  magpie-wm
  mako-center-git
  manuskript
  maszyna-git
  mathsat-5
  matrixbrandy
  mcp-probe
  mcpatcher
  mermaid-ascii-git
  mermark-editor
  mesa-dlss-reflex-git
  meteo
  mimic-node-git
  mingw-w64-geos
  mingw-w64-libsndfile
  minimax-bin-hardened
  minitube
  misuzu-music-bin
  mono-addins
  monochrome
  monochrome-git
  moor-git
  mount-gtk
  mopen
  n1-translator
  naemon
  naemon-livestatus
  natapp
  nebuchadnezzar-git
  neovim-autopairs-git
  neovim-nvim-treesitter
  nerf-pi
  neuro-karaoke-wrapper-git
  new-api-privacy-filter
  new-api-privacy-filter-git
  nextcloud-app-audioplayer
  nextcloud-app-facerecognition
  nextcloud-app-gpoddersync
  nextcloud-app-integration-google
  nextcloud-app-repod
  nextcloud-app-twofactor-gateway
  nextcloud-git
  nexus-bin
  nginx-mod-vts
  nhentai-git
  nocodb
  noctyra-dotfiles-git
  noctyra-meta-git
  "notepad---bin"
  nox-bin
  nrpe
  nwchem-bin
  ob-xd
  octocode
  opencode-codebase-index-bin
  openui5
  opl-synth
  optimizevideo-git
  oracle-bin
  pacforge
  paper-desktop-bin
  paq8o
  parallel-python
  pass-cli
  pelican-git
  penguin-subtitle-player
  perl-proc-parallelloop
  perl-set-object
  perl-term-extendedcolor
  phonon-qt5-vlc
  php-geoip
  php-legacy-memcache
  php-memcache
  php-openswoole-git
  php-xdiff
  picom-ftlabs-git
  pidgin-kwallet
  pipetoys
  pipewire-visualizer-git
  plex-media-player-custom
  plex-media-player-mod
  plex-media-player-v2
  premake-git
  prisma4postgres-bin
  profile-sync-daemon-zen
  pymacs
  pypiserver
  pypy-setuptools
  python-apt
  python-affine
  python-argdispatch
  python-awkward
  python-axolotl-git
  python-calmjs
  python-celery
  python-cerealizer
  python-ci-info
  python-coolname
  python-cu2qu-git
  python-dataproperty
  python-dbapi-compliance
  python-dictobject
  python-dj-database-url
  python-django-modelcluster
  python-django-rest-knox
  python-fastmcp-slim
  python-finnhub-python
  python-firebase-admin
  python-fmu_manipulation_toolbox
  python-future
  python-g4f
  python-hist
  python-histoprint
  python-hsaudiotag3k
  python-iminuit
  python-iso3166
  python-isr-git
  python-jsmin
  python-json2xml
  python-luckydonald-utils
  python-milvus-lite-bin
  python-mmcif
  python-monotonic
  python-mplhep
  python-mplhep_data
  python-netaudio-git
  python-netaudio-lib
  python-newspaper4k
  python-nipype
  python-nodejs-wheel
  python-openai-harmony
  python-orange
  python-pdf2docx
  python-piecash
  python-pluginmgr
  python-poetry-plugin-dotenv
  python-privy-git
  "python-pushbullet.py"
  python-pychromecast-git
  python-pylsp-rope
  python-pymilvus
  python-pysocks-git
  python-rembg
  python-scikit-hep-testdata
  python-sklearn-pandas
  python-sqliteschema
  python-starlette-compress
  python-starsessions
  python-steamcontroller-git
  python-tabledata
  python-tarantool
  python-tradingeconomics
  python-uhi
  python-uproot
  python-vector
  python-xtarfile
  python2-appdirs
  python2-fusepy
  python2-lazr-uri
  python2-mutagen
  python2-notify
  python2-packaging
  python2-paver
  python2-pyparsing
  python2-simplejson
  python2-simpleparse
  python2-stomper
  python2-twodict-git
  python2-xlib
  qhttpengine
  qlementine
  qmdnsengine
  qnapi
  qobuz-player-bin
  qtum-core
  quickswitch-i3
  r-dbplyr
  reactphysics3d
  repoporge
  retibbs-client-git
  rhythmbox-git
  rimworld
  rog-helper-git
  ros2-humble-nav2-msgs
  rtspeccy-git
  ruah-orch
  ruby-excon
  ruby-kramdown-rfc2629
  ruby-selenium-webdriver
  runescape-launcher
  sakura-launcher-gui
  sandlock
  screenpipe-bin
  sdcc-bin
  seahorse-nautilus
  shhmsg
  shhopt
  slipnet
  slipnet-bin
  smenu
  smenu-git
  smolrtsp
  smolrtsp-libevent
  snry-shell-qs
  soapyptezuka
  solara-kernel-headers
  sonosano
  soundpaad-bin
  sshuttlee
  sshuttlee-bin
  stompbox-jack-git
  stripe-cli
  stylelint-config-recommended
  subbrute
  sublist3r-git
  subprocess
  subsync
  svu
  sway-xkb-switcher
  tack
  tarantool
  tesseract-gui
  thunar-nextcloud-plugin
  thunderbird-conversations
  tinyemu
  tlpui-git
  torch7-git
  touchhle
  touchosc-bin
  transcreen
  tsm
  ttf-material-design-icons-git
  tunacode-cli
  typing-game-cli
  ukui-notification-daemon
  vapoursynth-preview-git
  vbam-git
  verso-git
  vidcutter
  vim-easymotion
  vim-gitgutter
  vim-indent-object
  vim-molokai
  vim-pythonhelper
  vim-solidity
  vim-vital
  vocalinux-git
  voquill-gpu
  wallpaper-generator-next
  wayland-static
  we-layerd-git
  whatsie-git
  whisper2tr
  whisper2tr-git
  windowmaker-git
  wine-nine
  wire-desktop
  word-snatchers-cli
  workbench
  workbuddy-bin
  wrystr-git
  wsjtx-beta
  xf86-input-mtrack-git
  xorg-xfsinfo
  xplot
  xpra-html5
  xray-domain-list-community
  yarg
  yt6801-dkms
  yy
  zathura-gruvbox-git
  zerx-lab-dida-bin
  zerx-lab-zed-nightly-bin
  zing-8-bin
  zing-17-bin
  zing-21-bin
  zinnia-python
  zsdx

Como o ataque ainda está em andamento, a lista segue aumentando.

Fonte: Over 400 Arch Linux packages compromised to push rootkit, infostealer

1 curtida

Estou perdidaço. O eu faço para verificar meu computador?

Não uso o arch diretamente, mas o CachyOS.

Nesse caso específico, os pacotes comprometidos instalam um pacote JavaScript malicioso através de hooks pré/pós instalação (.install). Investigue se o PKGBUILD possui uma linha que começa com install= (significando que há hooks) e se qualquer um dos arquivos que vêm junto (não só o PKGBUILD em si!) contém comandos como npm install/bun install/yarn global add. O pacote malicioso inicial era chamado atomic-lockfile, mas agora temos também lockfile-js e js-digest também.

O seguinte comando:

grep -R -F -e atomic-lockfile -e lockfile-js -e js-digest /pasta/onde/pacote/do/aur

serve como triagem para saber se seu sistema já foi afetado por uma variação conhecida do ataque.

Dica: ~/.cache/yay contém todos os PKGBUILDs já baixados pelo yay.

Para identificar pacotes suspeitos no geral, é necessário saber o básico dos esquemas de compilação dos programas (make, meson, CMake, entre outros) e/ou conferir se o que o PKGBUILD faz bate com as instruções do desenvolvedor (geralmente num arquivo BUILD ou INSTALL no repositório). Por exemplo, esse malware foi identificado por usuários do AUR que flagraram vários pacotes tendo mudanças recentes para adicionar o npm como pacote necessário e rodar npm install atomic-lockfile como parte do pós-instalação, ainda que o programa não o utilizasse nas instruções oficiais.

Ainda assim, isso só permite saber se o PKGBUILD é honesto, não se o programa que ele empacota é.

Se você está se fazendo essa pergunta, você provavelmente não foi comprometido.

Você tem que ter instalado um dos pacotes comprometidos do AUR, seja usando um helper, como o paru ou yay, seja utilizando um repositório que compila PKGBUILDs de lá automaticamente como o chaotic-aur – até onde eu sei, nenhum dos dois vem por padrão no Cachy.

Além disso, apesar de muitos, apenas pacotes abandonados e com pouquíssimos usuários foram afetados. Não duvido do ataque ter sido 100% automatizado com relativamente pouco esforço.

Para desencargo de consciência, confira se algum dessa lista está instalado na sua máquina, com pacman -Qi <pacote>. Ou rode um script como esse (adaptando para atualizar a lista).

1 curtida

Muito obrigado!

Outras palavras-chaves que estão aparendo agora, com o mesmo modus operandi, são lockfile-js e js-digest.

Além disso, tem-se encontrado bun install como comando de pós-instalação e bun como dependência maliciosos (outro runtime de JavaScript) em vez do npm (deno e yarn tem a mesma função e podem ser utilizados mais tarde).

Aqui o link da lista de pacotes comprometidas oficial, atualizada pelos moderadores do AUR.

A recomendação é trocar todas as suas credenciais e reinstalar o Arch do zero.”

Pesado…

1 curtida

Eu tinha o astah (um dos pacotes corrompidos) no meu notebook. No entanto, usando um grep -i “astah-uml” (ou o arquivo) /var/log/pacman.log, é possível verificar a Data de instalação do pacote. No meu caso, foi 04 de Abril de 2026. Então, mesmo que você tenha o pacote instalado, só será perigoso e necessário formatar o SO e trocar as senhas das contas se a data de instalação constar com o Início do ataque no AUR: 11 de Junho de 2026.

1 curtida

Para bash, basta rodar isso que ele vai listar se tiver algum destes pacotes no seu sistema

echo "Affected Packages Found:"; comm -12 <(pacman -Qqm | sort) <(curl -s https://cscs.pastes.sh/raw/aurvulnlist20260611.txt | sort) | { read -r l && printf '%s\n' "$l" || echo "None. No known compromised packages are installed."; }

OFF: Aqui só encontrei na VM, no fisico nenhum :folded_hands:

3 curtidas

Como eu só tenho 3 pacotes do AUR (Chrome, Brave Night e o VSCode), aqui está suave. Eu tenho preferido mais usar flatpak e quando não tem, baixar o .tar.gz ou o .deb e instalar na mão.

Vc não gosta do vscodium? ele esta no repositorio oficial do arch ou tem algo vc precisa e que não funciona nele?

sudo pacman -S codium

1 curtida

Loja de extensões da M$ não funcionam no vscodium sem adivinha? Um pacote do AUR :sweat_smile:

OFF: instalei o VsCodium para testar e migrei minhas extensões. A instalação das extensões é feita pelo open-vsx.org e não pela da Microsoft, sem a necessidade de usar o AUR.

2 curtidas