Selon un papier de recherche soumis à l’IEEE par Ruby Nealon, l’attaque XZ Utils (backdoor visant les processus sshd via la bibliothèque liblzma chargée indirectement par systemd) a mis en lumière la persona « JiaT75 », qui a bâti la confiance pendant près de deux ans avant d’auto-fusionner une version piégée. L’étude montre qu’il est possible d’identifier, à partir de données publiques GitHub et Git, des signaux d’anomalies comportementales associés à de telles opérations de social engineering dans l’open source.
Méthodologie: l’autrice collecte des données OSINT via l’API GraphQL de GitHub et les dépôts Git, puis les ingère dans Neo4j (base de graphes). L’échantillon couvre 19 dépôts liés aux dépendances de systemd (sélection Arch Linux), de tailles et gouvernances variées. Un outillage en Ruby (gem) gère la pagination et les limites de l’API, sérialise en JSON, et alimente un schéma de nœuds/relationnels (Issues, PRs, Commits, Users, etc.), enrichi de relations utiles (ex. liens entre identités Git et comptes GitHub, e-mails dedupliqués).
Deux critères « signaux faibles » sont testés: (1) auto-merge de PRs sans revue par des contributeurs au temps de présence limité dans un projet; (2) part de commits élevée au regard de la fenêtre de présence dans l’historique. Les requêtes graphes agrègent âges de comptes, âges/provenance des projets, timestamps des premiers commits/PRs, et ratios de contributions.
Résultats: pour le critère (1), 40 utilisateurs initiaux puis un sous-ensemble restreint après filtres; aucun utilisateur n’a auto-fusionné sans revue sur plus d’un dépôt. La persona JiaT75 apparaît avec un âge de contributeur ≈ 10 mois au premier auto-merge et 24 PRs auto-fusionnées. D’autres cas (ex. nouveaux mainteneurs légitimes, contributeurs historiques avant GitHub, employés identifiés d’entreprises) expliquent des faux positifs. Pour le critère (2), JiaT75 signe ≈17,38% des commits sur ≈12,47% du temps de l’historique; des seuils plus souples (>5% commits et <20% de présence) renvoient peu de matches, majoritairement expliqués (mainteneurs confirmés). Ces résultats valident la viabilité de ces signaux pour détecter des tentatives de compromission de chaîne d’approvisionnement.
Recommandations et perspectives: automatiser la collecte et l’analyse de métadonnées de contributions pour la détection précoce; rester prudent dans l’interprétation (usage légitime de pseudonymes, transferts de maintien). Pistes futures: collecte continue, intégration de gharchive, GitLab/Gitea, listes de diffusion, événements détectés par LLM, et analyse de sentiment. Il s’agit d’une publication de recherche visant à démontrer l’utilité des graphes OSINT pour la détection d’anomalies comportementales en environnement open source.
IOC(s):
- Handle GitHub: “JiaT75”
- E-mail observé dans les exemples de graphes: “jiat0218@gmail.com”
- Dépôt visé: “tukaani-project/xz”
TTP(s):
- Compromission de chaîne d’approvisionnement via backdoor dans une lib (liblzma/xz) chargée par systemd, impactant sshd
- Social engineering (sock-puppetry, pression pour obtenir des droits, montée en confiance sur la durée)
- Auto-merge de PRs sans revue
- Prise de part de contributions élevée en peu de temps
🧠 TTPs et IOCs détectés
TTP
[‘Compromission de chaîne d’approvisionnement via backdoor dans une lib (liblzma/xz) chargée par systemd, impactant sshd’, ‘Social engineering (sock-puppetry, pression pour obtenir des droits, montée en confiance sur la durée)’, ‘Auto-merge de PRs sans revue’, ‘Prise de part de contributions élevée en peu de temps’]
IOC
[‘Handle GitHub: JiaT75’, ‘E-mail: jiat0218@gmail.com’, ‘Dépôt visé: tukaani-project/xz’]
🔗 Source originale : https://arxiv.org/abs/2508.13453