The Arch User Repository (AUR), a cornerstone of the Arch Linux ecosystem, has been weaponized in a massive supply-chain attack. Over 400 packages have been confirmed compromised, actively distributing a Linux rootkit coupled with infostealer capabilities. For defenders, this represents a critical failure of the trust model in community repositories. Unlike standard CVE exploitation, this attack bypasses perimeter defenses by injecting malicious code directly into the build or installation scripts of trusted software. Immediate action is required to identify affected endpoints, eradicate the persistent rootkit, and rotate exposed credentials.
Technical Analysis
Affected Platform: Arch Linux and derivatives utilizing the Arch User Repository (AUR).
Threat Vector: Supply Chain Compromise. Malicious actors injected code into PKGBUILD scripts or uploaded compromised packages to the AUR. When users compile or install these packages using helpers like yay, paru, or manual makepkg execution, the payload is deployed.
Malware Capabilities:
- Rootkit: Provides kernel-mode or user-mode hiding capabilities, concealing processes, files, and network connections to evade detection.
- Infostealer: Targets credentials, SSH keys, and cloud access tokens (e.g., AWS, GitHub) stored in user directories.
Exploitation Status: Confirmed Active. The attack is currently "in-the-wild" with hundreds of packages serving as delivery mechanisms. The scale suggests automated mass-compromise of maintainer accounts or package submission processes.
Detection & Response
SIGMA Rules
---
title: Potential AUR Supply Chain Compromise - Suspicious Makepkg Network Activity
id: 8a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects makepkg or AUR helper processes establishing network connections, typical of malicious build scripts fetching payloads.
author: Security Arsenal
date: 2026/04/06
tags:
- attack.execution
- attack.t1059.004
- attack.initial_access
- attack.t1195.002
logsource:
product: linux
category: network_connection
detection:
selection:
ParentImage|endswith:
- '/makepkg'
- '/yay'
- '/paru'
Initiated: true
condition: selection
falsepositives:
- Legitimate package sources downloading dependencies (rare for AUR)
level: high
---
title: Linux Rootkit Infostealer - Suspicious SSH/Config Access
id: 9b2c3d4e-5f6a-7b8c-9d0e-1f2a3b4c5d6e
status: experimental
description: Detects processes reading sensitive .ssh or config files immediately following package installation activity.
author: Security Arsenal
date: 2026/04/06
tags:
- attack.credential_access
- attack.t1059.001
logsource:
product: linux
category: process_creation
detection:
selector_parent:
ParentImage|endswith:
- '/pacman'
- '/makepkg'
- '/yay'
- '/paru'
selector_access:
CommandLine|contains:
- '/.ssh/'
- '.aws/credentials'
- '.config/gcloud'
condition: selector_parent and selector_access
falsepositives:
- Post-install scripts legitimately setting up keys (low volume)
level: critical
KQL (Microsoft Sentinel)
This query assumes Linux Syslog or CEF data is ingested. It looks for the execution of AUR helpers followed by suspicious file access or network activity.
let AURHelpers = dynamic(["yay", "paru", "makepkg", "pacman"]);
Syslog
| where ProcessName in (AURHelpers) or SyslogMessage has_any (AURHelpers)
| project TimeGenerated, Computer, ProcessName, SyslogMessage
| join kind=inner (
DeviceProcessEvents
| where Timestamp > ago(1d)
| where ProcessCommandLine has_any ("/root/", ".ssh/", ".aws/", "id_rsa")
| where InitiatingProcessFileName in (AURHelpers)
) on Computer
| project TimeGenerated, Computer, InitiatingProcessFileName, ProcessCommandLine, FileName
Velociraptor VQL
Hunt for discrepancies between pslist and process enumeration that rootkits might hide, and scan for recently modified binaries in AUR directories.
-- Hunt for processes with suspicious binary paths hidden from standard listings
SELECT Pid, Name, Exe, Username, CommandLine
FROM pslist()
WHERE Exe NOT IN ("/usr/bin", "/bin", "/sbin", "/usr/sbin")
AND Exe =~ "/tmp/" OR Exe =~ "/var/tmp/"
AND Name NOT IN ("systemd", "bash", "sh", "zsh")
-- Hunt for recently modified AUR package directories (indicators of compromise)
SELECT FullPath, Mode, Size, Mtime, Atime
FROM glob(globs="/var/cache/pacman/pkg/*")
WHERE Mtime > now() - 24h
AND Mode =~ "rwxrwxrwx" -- Suspicious permissions on cached packages
Remediation Script (Bash)
Use this script to audit for common rootkit persistence and flag AUR packages installed from the compromised timeframe. Note: A full re-image is recommended if a rootkit is confirmed.
#!/bin/bash
# Audit AUR packages for recent changes
echo "[+] Auditing recently installed AUR packages (foreign packages)..."
pacman -Qm --date | head -n 50
# Check for hidden modules or suspicious kernel objects
echo "[+] Checking for loaded kernel modules (rootkit check)..."
lsmod | grep -v "^Module" | while read module rest; do
modinfo "$module" 2>/dev/null | grep -q "description:" || echo "Suspicious module: $module (no description)"
done
# Scan for common infostealer persistence locations
echo "[+] Scanning for suspicious cron jobs..."
crontab -l 2>/dev/null | grep -v "^#" | grep -v "^$"
# Check for rogue systemd units
if [ -d /etc/systemd/system ]; then
echo "[+] Checking for recently created systemd units..."
find /etc/systemd/system -name "*.service" -mtime -2 -exec ls -la {} \;
fi
echo "[+] Checking for unauthorized SSH keys in root..."
if [ -f /root/.ssh/authorized_keys ]; then
cat /root/.ssh/authorized_keys
fi
echo "[+] ACTION REQUIRED: Review the list of 'pacman -Qm' packages against the official Arch Linux security advisory."
Remediation
- Identify Compromised Packages: Cross-reference the output of
pacman -Qm(list foreign packages) against the official Arch Linux security advisory listing the 400+ compromised packages. - Containment: Immediately isolate affected Arch Linux hosts from the network to prevent credential exfiltration or lateral movement.
- Eradication:
- For Infostealers Only: If infostealer activity is confirmed but no rootkit persistence is found, uninstall the compromised packages using
pacman -R <package_name>. - For Rootkits: If a rootkit is suspected or confirmed, do not attempt removal. The integrity of the OS is broken. Wipe the drive and reinstall the operating system from trusted media.
- For Infostealers Only: If infostealer activity is confirmed but no rootkit persistence is found, uninstall the compromised packages using
- Credential Reset: Assume all credentials, SSH keys, API tokens, and cloud secrets stored on the compromised host are exfiltrated. Rotate them immediately from a clean, trusted workstation.
- Update Systems: After reinstallation or cleanup, update the system to ensure the latest
pacmanandarchlinux-keyringare installed:pacman -Syu.
Related Resources
Security Arsenal Incident Response Services AlertMonitor Platform Book a SOC Assessment incident-response Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.