La nouvelle a secoué la communauté Linux ce jeudi 11 juin 2026 : plus de 400 paquets de l’AUR (Arch User Repository) ont été infectés par un malware voleur de tokens, écrit en Rust et capable de déployer un rootkit eBPF. L’attaque, baptisée « Atomic Arch » par les chercheurs de Sonatype, exploite une faiblesse structurelle du modèle de confiance de l’AUR : l’adoption de paquets orphelins. Pendant plusieurs jours, un unique attaquant a modifié des PKGBUILD pour injecter une dépendance npm malveillante, transformant des logiciels légitimes en chevaux de Troie. Voici l’analyse complète de cette compromission massive, de son mécanisme à ses conséquences, en passant par les gestes à poser immédiatement si vous utilisez l’AUR.

Comment 400 paquets de l’AUR ont-ils été infectés par un voleur de tokens npm
La question que tout utilisateur d’Arch Linux s’est posée en apprenant la nouvelle est simple : comment une attaque d’une telle ampleur a-t-elle pu passer sous les radars ? La réponse tient en trois mots : paquets orphelins, adoption silencieuse et dépendance npm. Aucun compte n’a été piraté, aucune faille zero-day exploitée. L’attaquant a simplement suivi les règles du jeu.
Adopter un paquet orphelin : la porte d’entrée discrète de l’attaquant
Dans l’AUR, un paquet devient « orphelin » lorsque son mainteneur original l’abandonne — souvent parce qu’il n’a plus le temps de le mettre à jour, ou qu’il a quitté la communauté. Le processus d’adoption est standardisé : n’importe quel contributeur peut demander à reprendre la maintenance via l’interface web de l’AUR. Si l’ancien mainteneur ne répond pas sous deux semaines, la demande est automatiquement acceptée.
C’est exactement ce chemin qu’a emprunté l’attaquant. Selon les informations partagées sur la liste de diffusion aur-general, un seul compte malveillant a adopté 408 paquets orphelins en l’espace de quelques jours. Aucune alerte de sécurité ne s’est déclenchée : sur le papier, il s’agissait d’opérations de maintenance légitimes. Le système de l’AUR ne distingue pas un mainteneur bienveillant d’un attaquant — il ne peut pas, par conception.
Le thread ouvert le 11 juin par le contributeur tippfehlr résume la situation : « Nous travaillons dur pour réinitialiser ou supprimer tout le contenu malveillant et bannir les comptes concernés. » Mais à ce stade, le mal était déjà fait.
Le piège atomic-lockfile : un package npm qui cache un exécutable Rust
Une fois le contrôle du PKGBUILD acquis, l’attaquant modifiait le fichier de construction pour ajouter npm comme dépendance et exécuter npm install atomic-lockfile en post-installation. Le package npm atomic-lockfile n’avait rien d’un verrou atomique : c’était un conteneur vide dont le script d’installation téléchargeait un binaire nommé deps depuis un serveur distant.
Ce binaire, écrit en Rust, rend l’analyse statique plus complexe qu’un script Python ou Bash. Les chercheurs de Sonatype ont pu confirmer qu’il s’agit d’un infostealer complet, capable de collecter des tokens d’authentification, des identifiants et des historiques de shell. L’utilisation de Rust n’est pas anodine : elle complique la détection par les antivirus traditionnels et permet une compilation croisée vers plusieurs architectures.
Pourquoi le système de l’AUR n’a pas bloqué l’opération (et ne le peut pas)
Le pipeline de soumission de l’AUR n’effectue aucune vérification automatique du contenu des PKGBUILD. Il n’y a pas de scan des source=() pour détecter des téléchargements externes suspects, pas d’analyse des dépendances réseau exécutées en post-install, pas de sandboxing de la construction. La sécurité repose entièrement sur la vigilance du mainteneur et de l’utilisateur final.
Ce modèle a fonctionné pendant des années parce que la communauté Arch est relativement petite et que les mainteneurs se connaissent. Mais à mesure que l’AUR a grandi — plus de 100 000 paquets aujourd’hui —, la confiance implicite est devenue une vulnérabilité. L’attaque « Atomic Arch » montre que ce modèle a atteint ses limites.
Le voleur « deps » en Rust : un butin XXL dans le collimateur du malware
Si le « comment » de l’attaque est important, le « quoi » l’est tout autant. Que cherchait exactement ce malware ? La réponse, détaillée par l’analyse technique du blog ioctl.fail, est glaçante : l’identité numérique complète d’un développeur ou d’un power user Linux.

Discord, GitHub, Docker : les 20 cibles du binaire malveillant
Le binaire deps cible une vingtaine de catégories de credentials. Parmi elles :
- Tokens de développement : GitHub, GitLab, npm, PyPI — tout ce qui permet de pousser du code ou d’accéder à des repositories privés.
- Applications de communication : Discord, Telegram, Slack, Microsoft Teams — les tokens de session permettent de lire les messages et d’usurper l’identité.
- Credentials système : SSH (clés privées), HashiCorp Vault, Docker, Podman — de quoi se déplacer latéralement dans une infrastructure.
- Historiques de shell :
.bash_history,.zsh_history— une mine d’or pour trouver des mots de passe tapés en clair ou des commandes sensibles. - Tokens OpenAI/ChatGPT : de plus en plus courants chez les développeurs, ils donnent accès à des API payantes et à l’historique des conversations.
L’attaquant ne visait pas un butin aléatoire : il construisait une cartographie complète de l’activité numérique de ses victimes. Avec un token GitHub, on peut cloner des repositories privés. Avec un token Discord, on peut envoyer des messages malveillants aux contacts de la victime. Avec des clés SSH, on peut pivoter vers d’autres machines.
Rootkit eBPF : comment le malware se rend invisible aux yeux de l’OS
La fonctionnalité la plus inquiétante du malware est son rootkit eBPF. Si le binaire est exécuté avec les droits root — ce qui arrive fréquemment sous Arch lorsque makepkg est lancé sans isolation —, il peut charger un programme eBPF qui masque ses propres processus et connexions réseau.
Concrètement, ps aux, netstat et top ne montrent rien d’anormal. Le malware tourne, exfiltre des données, mais l’OS ne le voit pas. L’exfiltration passe par un serveur C2 en Tor (adresse onion) vers temp.sh, un service de partage de fichiers anonyme. Même en analysant le trafic réseau, il est difficile de distinguer une connexion Tor légitime d’une exfiltration malveillante.
De l’alerte à la panique : comment la communauté a découvert l’ampleur réelle (20 puis 400+ paquets)
L’histoire de cette attaque est aussi celle d’une escalade : d’une alerte technique isolée à une crise de confiance pour toute la distribution Arch Linux.
Le thread aur-general du 11 juin 2026 : le jour où l’AUR a tremblé
Tout commence le 10 juin, lorsque Sonatype publie un billet de blog signalant « plus de 20 paquets AUR compromis ». L’information circule sur Hacker News et Reddit, mais la communauté Arch réagit avec calme : 20 paquets, c’est gérable. Puis le 11 juin, le contributeur tippfehlr ouvre un fil sur aur-general avec un message qui change la donne : « Nous travaillons dur pour réinitialiser ou supprimer tout le contenu malveillant et bannir les comptes concernés. » Le nombre réel ? 408 paquets, selon les analyses postérieures partagées sur discourse.ifin.network.
La différence entre 20 et 400+ n’est pas qu’un chiffre : c’est un changement d’échelle qui transforme un incident de sécurité en crise systémique. Les mainteneurs Arch découvrent que l’attaquant a utilisé des variantes du malware, notamment avec bun (un runtime JavaScript alternatif) et le package npm js-digest.
Le cas du paquet alvr : un logiciel de VR qui utilise soudainement npm
Parmi les paquets compromis, alvr (ALVR, logiciel de streaming VR) est devenu l’exemple emblématique. ALVR est écrit en Rust et C++ : il n’a normalement aucun rapport avec JavaScript ou npm. Pourtant, une mise à jour récente du PKGBUILD ajoutait npm comme dépendance et exécutait npm install atomic-lockfile.
Pour un utilisateur qui met à jour ses paquets automatiquement avec paru -Syu, le changement passe inaperçu. Le PKGBUILD s’affiche brièvement dans le terminal, mais qui lit encore les diffs à chaque mise à jour ? Beaucoup d’utilisateurs ont fait confiance au mainteneur — qui n’était plus le vrai mainteneur.
Impact réel : combien de machines ont été infectées ?
La question de l’impact réel reste ouverte. Le package npm atomic-lockfile a été téléchargé 134 fois selon les données de Socket.dev. Mais ce chiffre ne compte que les téléchargements directs depuis npm : les installations via l’AUR, y compris les dépendances transitives, ne sont pas tracées. Un paquet AUR peut être installé des centaines ou des milliers de fois sans que personne ne le sache.
Les variantes avec bun et js-digest compliquent encore le décompte. L’attaquant a probablement testé plusieurs méthodes d’injection avant de trouver la plus efficace. Le nombre réel de machines infectées restera inconnu, sauf si un échantillon suffisant de victimes se manifeste.
Que faire si vous utilisez l’AUR ? Guide de vérification et de nettoyage post-attaque
Si vous utilisez Arch Linux et l’AUR, cette section est la plus importante de l’article. Voici les gestes à poser immédiatement.
La checklist du réflexe : pacman -Qm, deps, atomic-lockfile
-
Listez tous vos paquets AUR avec
pacman -Qm. Comparez cette liste avec les listes noires publiées sur le forum CachyOS et surdiscourse.ifin.network. Si un paquet compromis apparaît, désinstallez-le immédiatement. -
Exécutez le script de vérification partagé par la communauté :
curl -s https://cscs.pastes.sh/raw/aurvulntest20260611.sh | bash. Ce script cherche les traces du malware dans votre système : présence du binairedeps, appels suspects ànpm install atomic-lockfile, modifications récentes de PKGBUILD. -
Vérifiez manuellement votre historique de shell : cherchez
npm install atomic-lockfileoubun install js-digestdans.bash_historyou.zsh_history. Si ces commandes apparaissent sans que vous les ayez lancées, votre système est probablement compromis. -
Changez tous vos tokens et mots de passe : GitHub, Discord, Slack, SSH — tout ce qui était accessible depuis votre machine. Considérez que tous vos secrets sont brûlés.
Utiliser paru --gendiff pour ne plus jamais faire confiance aveuglément
La leçon de cette attaque est claire : l’inspection manuelle des PKGBUILD n’est pas une option, c’est la nouvelle norme de sécurité. Configurez paru (ou yay) pour afficher systématiquement les différences du PKGBUILD avant toute compilation avec l’option --gendiff. Prenez l’habitude de lire ces diffs, même pour les mises à jour mineures.
Pour une sécurité renforcée, utilisez aurutils avec pkgctl et devtools pour isoler la construction dans un chroot. La commande pkgctl build --clean construit le paquet dans un environnement minimal, limitant l’impact d’un éventuel PKGBUILD malveillant. Si le malware ne peut pas accéder à vos fichiers personnels, il ne peut pas les voler.
Le modèle de l’AUR en question : la confiance communautaire suffit-elle ?
Au-delà de l’incident immédiat, cette attaque pose une question structurelle : le modèle de l’AUR est-il viable à long terme ?
Le coût de la modération : pourquoi Arch Linux ne peut pas auditer 100 000 PKGBUILD
Avec plus de 100 000 paquets dans l’AUR, une modération humaine de chaque soumission est matériellement impossible. Arch Linux est une distribution 100 % communautaire : elle ne dispose ni des effectifs ni du budget pour auditer chaque PKGBUILD. Comparé à Flathub, qui impose une revue manuelle de chaque manifeste, ou à Snap, qui exige une signature obligatoire, l’AUR fonctionne sur un modèle de confiance implicite qui vient de montrer ses limites.
L’opportunité manquée, c’est l’absence d’outils automatisés de détection de patterns malveillants. Un simple script qui vérifierait qu’un PKGBUILD n’ajoute pas de dépendances réseau inattendues (npm, pip, cargo) en post-install aurait pu bloquer cette attaque. Mais personne n’a investi le temps nécessaire pour le développer.
Signatures, votes et chroot : les pistes pour sécuriser l’AUR sans le tuer
Plusieurs pistes sont sur la table :
- Authentification forte : exiger une clé GPG ou SSH pour les mainteneurs, avec révocation possible en cas de compromission.
- Signatures de commits : chaque modification d’un PKGBUILD devrait être signée, permettant de tracer l’origine des changements.
- Système de vote de confiance : comme les votes positifs sur les issues, un système de réputation pourrait signaler les mainteneurs de confiance.
- Sandboxing obligatoire : intégrer
bubblewrapousystemd-nspawndansmakepkgpour que la construction des paquets AUR soit isolée du système hôte.
Ces mesures ne résoudront pas tout, mais elles rendraient une attaque de cette ampleur beaucoup plus difficile à mener.
Conclusion : une alerte salutaire pour la chaîne d’approvisionnement Linux
L’attaque « Atomic Arch » n’est pas un incident isolé. Elle s’inscrit dans une tendance lourde : la chaîne d’approvisionnement open source est devenue la cible numéro un des attaquants. Après les compromissions de npm, PyPI et RubyGems, c’est au tour de l’AUR de montrer ses failles.
Cette compromission massive révèle une faille structurelle dans le modèle de confiance de l’AUR. La confiance communautaire a fonctionné pendant des années, mais elle ne suffit plus face à des attaquants organisés qui exploitent les procédures standard plutôt que les failles techniques. La leçon pour l’utilisateur est claire : l’inspection manuelle des PKGBUILD n’est pas une option, c’est la nouvelle norme de sécurité. Pour la communauté Arch, l’urgence est de repenser les outils de vérification automatiques et le sandboxing de la construction, sans sacrifier la liberté qui fait la force de la distribution.