Bureau Arch Linux avec KDE, affichant une mise à jour de paquets en cours.
Tech & Gaming

L’AUR d’Arch Linux : plus de 400 paquets compromis par des logiciels malveillants

Plus de 400 paquets de l’AUR d’Arch Linux ont été infectés par un malware voleur de jetons en Rust et un rootkit eBPF.

As-tu aimé cet article ?

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. 

Bureau Arch Linux avec KDE, affichant une mise à jour de paquets en cours.
Bureau Arch Linux avec KDE, affichant une mise à jour de paquets en cours. — CC BY-SA 3.0 / (source)

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. 

Bureau Arch Linux avec neofetch montrant les informations système.
Bureau Arch Linux avec neofetch montrant les informations système. — (source)

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

  1. Listez tous vos paquets AUR avec pacman -Qm. Comparez cette liste avec les listes noires publiées sur le forum CachyOS et sur discourse.ifin.network. Si un paquet compromis apparaît, désinstallez-le immédiatement.

  2. 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 binaire deps, appels suspects à npm install atomic-lockfile, modifications récentes de PKGBUILD.

  3. Vérifiez manuellement votre historique de shell : cherchez npm install atomic-lockfile ou bun install js-digest dans .bash_history ou .zsh_history. Si ces commandes apparaissent sans que vous les ayez lancées, votre système est probablement compromis.

  4. 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 bubblewrap ou systemd-nspawn dans makepkg pour 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.

As-tu aimé cet article ?

Questions fréquentes

Comment 400 paquets AUR ont-ils été infectés ?

Un attaquant a adopté 408 paquets orphelins via la procédure standard de l'AUR, puis a modifié leurs PKGBUILD pour injecter une dépendance npm malveillante nommée 'atomic-lockfile', qui téléchargeait un binaire Rust voleur de tokens.

Que fait le malware deps sous Arch Linux ?

Le binaire 'deps', écrit en Rust, vole des tokens d'authentification (GitHub, Discord, SSH), des historiques de shell et des clés privées. Il peut aussi déployer un rootkit eBPF pour masquer ses processus et connexions réseau si exécuté avec les droits root.

Comment vérifier si mon Arch est infecté ?

Exécutez 'pacman -Qm' pour lister vos paquets AUR et comparez avec les listes noires officielles. Lancez le script curl fourni par la communauté (aurvulntest20260611.sh) et cherchez 'npm install atomic-lockfile' dans vos historiques de shell.

Pourquoi l'AUR n'a-t-il pas bloqué l'attaque ?

L'AUR n'effectue aucune vérification automatique des PKGBUILD : pas de scan des téléchargements externes, ni de sandboxing de la construction. La sécurité repose uniquement sur la vigilance du mainteneur, ce qui est insuffisant face à plus de 100 000 paquets.

Sources

  1. "dérives sécuritaires" : inconvénients des flatpacks, snap ou environnements sandbox. - LinuxFr.org · linuxfr.org
  2. Afraid of system being compromised - newbie in "security ... · bbs.archlinux.org
  3. discourse.ifin.network · discourse.ifin.network
  4. AUR Compromised - 400+ packages affected - 20260611 · discuss.cachyos.org
  5. gamingonlinux.com · gamingonlinux.com
pro-gamer
Théo Verbot @pro-gamer

L'esport, c'est ma vie. Je suis tous les tournois, je connais les rosters par cœur, je peux t'expliquer la méta actuelle de n'importe quel jeu compétitif. Étudiant en marketing du sport à Paris, je rêve de devenir commentateur esport professionnel. En attendant, je cast des tournois amateurs sur Twitch et j'analyse les matchs comme d'autres analysent le foot. Le gaming, c'est du sport. Point.

390 articles 0 abonnés

Commentaires (12)

Connexion pour laisser un commentaire.

Chargement des commentaires...