Open Source · · 1 day

Orphaned AUR packages adopted and rewritten to steal credentials

Starting 2026-06-11 attackers used the AUR's orphaned-package adoption process to take over abandoned packages, then added a pacman install scriptlet that npm-installed atomic-lockfile as root at install time. The Rust payload stole credentials and loaded an eBPF rootkit.

Part of Atomic Arch turned orphaned AUR packages into infostealers campaign

Sonatype researchers disclosed on June 11, 2026 that attackers had begun taking over abandoned packages in the Arch User Repository and rewriting their build scripts to install a credential stealer. They named the campaign Atomic Arch. Sonatype counted more than 20 hijacked packages that day. Community trackers passed 400 within a day, and later estimates for the combined waves reached roughly 1,500.

The AUR carries user-contributed build recipes rather than binaries, and it is where Arch users get software that is not in the official repositories. Each package is a PKGBUILD shell script that helpers like yay and paru run on the installing machine. When a maintainer walks away, the package is marked orphaned and any AUR account can adopt it through the site's normal process. That is what the attackers used. No credential theft, no forged commits, no compromised infrastructure. They requested packages that already had years of accumulated trust, and the AUR handed them over.

The PKGBUILD edits were small enough to pass a glance. Most add two lines and nothing else: an install= pointing at a new <package>-deps.install scriptlet, and a JavaScript runtime added to depends so the scriptlet is guaranteed something to run. The payload sits in the scriptlet, whose post_install() runs npm install atomic-lockfile minimist chalk or bun add against the attacker's packages. The timing is the point: a pacman install scriptlet runs as root when the package is installed, not as the building user during makepkg, so the credential stealer starts with root on any machine that installs the package. A minority of the hijacked PKGBUILD files invoke the installer during the build instead. A second wave on June 12 swapped in js-digest and lockfile-js, the latter delivered through Bun. Sonatype tracked atomic-lockfile as Sonatype-2026-003775 at CVSS 8.7 and the second-wave packages as Sonatype-2026-003808.

The bundled Linux executable was written in Rust. It collected GitHub credentials, SSH keys, HashiCorp Vault tokens, browser cookies, and session material for Slack, Discord, Teams, and Telegram, checked for PTRACE to frustrate debugging, and where it ran with root it installed an eBPF rootkit that hid its processes, files, and network connections at the kernel level. Truesec advised that any AUR package installed or updated after June 11 be treated as suspect, that credentials be rotated, and that machines which built an affected package with elevated privileges be reinstalled rather than cleaned. AUR maintainers reverted the malicious commits, banned the accounts involved, and published a checklist of affected packages. Arch's official core, extra, and multilib repositories were untouched.

Notes

  • Arch published the affected package list as a shared editable note rather than a signed advisory. It names 1,924 packages and is preserved verbatim under this record's context directory.
  • The compromised trust boundary is the AUR package-adoption mechanism, not a maintainer account: the attackers acquired orphaned packages through the documented process.
  • Most hijacked PKGBUILDs gain two lines and nothing else: an install= naming a <package>-deps.install scriptlet, and a JavaScript runtime added to depends. The payload runs as root at install time.
  • The malicious commits were recovered on 2026-09-10 from the archlinux/aur mirror, correcting the earlier note that called them unrecoverable. See the samples manifest for the method and scope.

Appendix · Affected releases

  • The affected unit is the PKGBUILD build script of each adopted package rather than a versioned artifact. AUR packages carry package versions from upstream, so no meaningful malicious version identifiers exist to record.
  • The affected releases were recorded as a wildcard rather than enumerated, so this record asserts no version list.
js-digest npm
4.2.2 sha256 af336e5d…150b92bb download unavailable
  • The malicious npm dependency the hijacked PKGBUILDs pulled during build. The archive digests and the two payload file digests come from the OSSF malicious-packages record MAL-2026-5912.
  • OSSF MAL-2026-5912 maps the archive digests specifically to the complete js-digest-4.2.2.tgz npm archive.
1.4.2 sha256 e68571a0…592618a4 download unavailable
  • The second npm dependency the hijacked PKGBUILDs pull, named in 110 of the recovered deps.install payloads alongside js-digest. npm has unpublished every version; npmmirror retained 1.4.2, published 2026-06-12.
  • Its package.json declares the campaign's own hook, preinstall ./lib/install-deps.mjs, which is what ties it to js-digest.
  • The published archive contains no lib directory and no .mjs file, so the preinstall it declares points at a file the release does not ship. Whether the payload was withheld or the publish was botched is not established here.
  • The npm dependency every one of the 474 recovered deps.install payloads that use npm install pulls, the counterpart to js-digest in the bun add variant. It shares the campaign's name.
  • npm removed it and published a 0.0.1-security holding package on 2026-06-12, whose README states the package contained malicious code and was removed by the npm security team. That stub is held as this artifact's evidence.
  • The malicious versions are unrecoverable: npm serves only the placeholder, the npmmirror and cnpmjs mirrors synced the same replacement, and neither OSV nor OSSF records the package, so no version or digest is published anywhere.
Payloads and stagesno published version
0.1.7 sha256 57f70ee4…5997cc57 download unavailable

Indicators

  • packageatomic-lockfile
  • packagejs-digest
  • packagelockfile-js
  • packagenextfile-js
  • advisorySonatype-2026-003775
  • advisorySonatype-2026-003808

References

  1. Atomic Arch npm Campaign Adds Malicious Dependency - Sonatypesonatype.com
  2. 400+ AUR Packages Hijacked: What the "Atomic Arch" Campaign Means for Supply-Chain Security - StepSecuritystepsecurity.io
  3. Supply Chain Attack Compromising Arch Linux AUR Packages with Infostealer and Rootkit - Truesectruesec.com
  4. 400+ Arch Linux AUR Packages Compromised in a Supply Chain Attack Deploying Infostealers - Cyber Security Newscybersecuritynews.com
  5. Atomic Arch campaign - SafeDep Threat Intelligencesafedep.io
  6. OSSF MAL-2026-5912 package-integrity record for js-digest 4.2.2raw.githubusercontent.com

Source record: oss/attacks/arch-aur-atomic-arch/meta.yaml