Démasquage de TeamPCP, roi des attaques de la chaîne d'approvisionnement logicielle
27 août 2026
Explication détaillée du processus de désanonymisation
Par l'équipe des menaces émergentes de Flare
Pendant cinq jours en mars 2026, un simple jeton volé a permis à un groupe de compromettre cinq écosystèmes logiciels, dont un paquet téléchargé 95 millions de fois par mois. L'attaque a débuté par une configuration erronée d'un flux de travail GitHub Actions et s'est terminée par l'insertion d'un code malveillant dans des pipelines CI/CD à travers le monde.
Aujourd'hui, deux personnes à l'origine de cette attaque ont été identifiées. ont été arrêtés. TeamPCPCes attaques, prétendument menées par ces acteurs malveillants, ont débuté fin 2025 en exploitant des failles opportunistes du cloud, puis se sont orientées début 2026 vers le ciblage de la chaîne d'approvisionnement logicielle elle-même.
Images de l'arrestation par des agents de la police fédérale australienne de Ruben Thomson, un opérateur présumé de TeamPCP (Source : AFP)
L'équipe des menaces émergentes de Flare souhaitait partager des exemples de techniques permettant de démasquer un opérateur derrière TeamPCP, en utilisant… Flare une plateforme permettant de retracer un alias unique à travers les comptes, les identifiants et l'infrastructure liés à une identité réelle. D'autres enquêtes indépendantes ont été menées sur ce sujet, notamment par Brian KrebsNous expliquons ci-dessous qui est TeamPCP et décrivons le processus de déanonymisation des acteurs malveillants.
Principaux enseignements concernant le démasquage de TeamPCP
Le processus de désanonymisation a commencé par un seul alias TeamPCP et a retracé chaque compte concerné à partir de là.
TeamPCP gérait des chaînes Telegram, publiait des messages sur X, narguait ses victimes et accordait une interview à la presse. Ce même besoin de reconnaissance qui alimentait leurs campagnes les a conduits à réutiliser les mêmes pseudonymes, avatars et références à l'infrastructure, rendant ainsi leurs membres identifiables.
Pour les défenseurs : quatre mesures de contrôle auraient permis de briser la chaîne d’attaque de TeamPCP, dont une relative à la sécurité des identifiants. Des recommandations plus détaillées sont fournies ci-dessous.
TI Vendredi — Diapositives de la session
Vous avez raté le TI vendredi sur Unmasking TeamPCP ?
L'équipe « Menaces émergentes » de Flare a présenté son enquête sur TeamPCP, détaillant la procédure de démasquage d'un opérateur présumé. Rejoignez le serveur Discord de la Flare Academy en tant qu'utilisateur vérifié pour accéder aux diapositives de la session (si ce n'est pas déjà fait).
✓ Présentation complète de l'enquête de TeamPCP
✓ Disponible pour les membres vérifiés de la communauté Discord de Flare Academy
TeamPCP a fait son apparition fin 2025, se présentant comme un groupe opportuniste spécialisé dans l'exploitation du cloud. Un scanner automatisé a scruté Internet à la recherche d'API Docker exposées, de plans de contrôle Kubernetes, de tableaux de bord Ray et d'instances Redis. Le groupe a déployé des conteneurs sur chaque hôte compromis. Chaque hôte est devenu un scanner et un nœud proxy, et l'infection s'est propagée automatiquement. Les honeypots de Flare ont enregistré l'activité en direct et ont identifié 185 compromissions Docker en une seule phase. Les revenus provenaient de trois sources : le minage de XMRig était peu lucratif, tandis qu'un réseau de proxys loué rapportait davantage. Le groupe a également divulgué ou vendu des données volées à des fins d'extorsion. TeamPCP a fait une nouvelle apparition en décembre 2025 avec une campagne React2Shell ciblant les applications Next.js. Leur tableau de bord de serveur de contrôle revendiquait plus de 59 000 serveurs compromis en moins de 48 heures.
Début 2026, TeamPCP passé à la chaîne d'approvisionnement logicielleet des outils de sécurité auxquels d'autres entreprises font confiance. Fin février, TeamPCP a exploité une faille de configuration dans un workflow GitHub Actions de Trivy, le scanner de vulnérabilités open source le plus largement déployé d'Aqua Security, et a dérobé un jeton de compte de service. Aqua a renouvelé les identifiants, mais certains ont été perdus. L'accès restant a été maintenu. Le 19 mars, TeamPCP a publié simultanément une version malveillante de Trivy sur tous les canaux de distribution. Cette version a infecté des milliers de pipelines CI/CD avec un voleur d'identifiants. L'accès s'est propagé en cascade. La bibliothèque proxy IA LiteLLM exécutait Trivy infecté au sein du pipeline de compilation, permettant ainsi aux attaquants de récupérer le jeton de publication PyPI de LiteLLM. Le 24 mars, ils ont diffusé deux versions de LiteLLM contenant une porte dérobée. Ce package est téléchargé environ 95 millions de fois par mois. Un seul jeton, jamais complètement révoqué, a permis à une seule équipe d'infecter cinq écosystèmes logiciels en cinq jours environ.
Alias de l'équipe PCP
Les anciens alliés de TeamPCP
Le groupe opère sous divers pseudonymes, un élément crucial de notre enquête, comme nous le verrons plus loin. Son identité principale est TeamPCP, mais ses activités apparaissent également sous les noms de PCPcat (sa première campagne), ShellForce (son pseudonyme pour la publication de fuites), DeadCatx3 (un compte GitHub hébergeant des outils), ainsi que Persy_PCP et PCPsh (d'anciens comptes Telegram).
Ce groupe est volontairement bruyant. Ses membres sont actifs sur les chaînes Telegram, publient sur X sous le nom d'utilisateur @pcpcats (désormais supprimé) et aiment narguer leurs victimes. Cette visibilité est essentielle pour les comprendre, et nous y reviendrons dans les sections consacrées à l'attribution et aux motivations ci-dessous. entretien avec ForbesTeamPCP a déclaré que « le groupe est un groupe informel d'adolescents et de jeunes adultes qui ne trouvaient pas de travail rémunéré et qui se sont donc tournés vers la cybercriminalité ».
Pourquoi nous sommes allés chercher
Les mêmes canaux qui leur permettaient de narguer leurs victimes et de revendiquer leurs mérites nous ont aussi fourni un point de départ. Un groupe qui communique autant, aussi publiquement, sous autant de pseudonymes, attire non seulement l'attention, mais nous offre aussi la première piste à explorer. Ainsi, lorsque TeamPCP est passé de l'exploitation opportuniste de failles dans le cloud à l'empoisonnement de cinq écosystèmes logiciels en quelques jours seulement, nous avons traité l'attribution non pas comme une simple curiosité, mais comme une priorité, et avons commencé à remonter la piste à partir des pseudonymes eux-mêmes.
Processus d'attribution : Qui est derrière TeamPCP ?
L'outil d'analyse des menaces par IA de Flare, Threat Flow, a révélé que TeamPCP était actif sous plusieurs pseudonymes lors d'opérations précédentes. L'un d'eux, DeadCatx3, était suffisamment distinctif pour constituer un point d'ancrage pertinent et a servi de base à la suite de cette analyse.
Pour commencer nos recherches, nous avons entré ce nom dans OSINT Industries, un outil permettant de rechercher des noms d'utilisateur sur des centaines de plateformes de médias sociaux, et quelques comptes ont attiré notre attention, notamment HackerOne et Hugging Face, que nous aborderons plus loin, ainsi que Scratch, eBay et Twitter.
Un des résultats obtenus provenait de HackerOne, une plateforme proposant des programmes de primes aux bogues et des tests d'intrusion collaboratifs pour d'autres entreprises. Le compte en question était associé au nom de Ruben Thomson.
Ce n'est pas si simple, n'est-ce pas ?
Profil HackerOne lié à deadcatx3
Un autre compte trouvé lors de la recherche initiale de DeadCatx3 était un profil Hugging Face avec les initiales RT (peut-être l'abréviation de Ruben Thomson).
Profil Hugging Face de « RT », avec le nom d'utilisateur DeadCatX3
Sous son profil Hugging Face figurait un domaine, masscan[.]cloud. Ce domaine était utilisé comme un C2 pour le ver Mini-Shai-Hulud lancé par TeamPCP en mai de cette année.
C2 utilisé dans le ver Mini-Shai-Hulud
Pour être plus certains de cette identité et nous assurer qu'elle n'avait pas été usurpée, nous avons recherché des preuves plus concrètes.
Enquête sur le nom
Des recherches plus approfondies sur le nom de Ruben Thomson ont permis de trouver quelques courriels, dont [email protected] et [email protected]La recherche de l'adresse électronique de l'école à l'aide de l'outil Flare Credential Browser nous a permis d'obtenir un mot de passe.
Nous avons effectué un pivot inversé à partir de ce mot de passe divulgué dans Flare, ce qui nous a fourni l'e-mail «[email protected] ».
Flare Credentials Browser [Censuré] a affiché quelques e-mails associés au mot de passe divulgué.
Notre prochaine étape consistait à voir ce qui était connecté à ce compte de messagerie et comment nous pouvions relier cela à TeamPCP pour confirmer nos soupçons.
Tous les comptes répertoriés sous l'adresse Gmail surfinup8 via PredictaGraph
Flare Credentials Browser [Censuré] a révélé les mots de passe de divers comptes qui [email protected] est affilié à(Flare lien vers la publication, inscrivez-vous à essai gratuit (pour y accéder si vous n'êtes pas déjà client)
La recherche de comptes associés à l'adresse Gmail surfinup8 nous donne le compte TikTok : « yolosolo17 ». Le nom indiqué sur le profil est Ruben Thomson, et la seule vidéo publiée sur ce compte provient de son compte Steam, qui utilise le nom « YolocrownZ ».
Capture d'écran [masquée] du compte TikTok associé à l'adresse e-mail surfinup8
Ce compte Steam a-t-il un lien avec TeamPCP ? Nous avons poursuivi nos investigations pour tenter de répondre à cette question.
Retrouver le compte Steam s'est avéré plus complexe. Plusieurs e-mails partageant le même domaine (il est possible qu'il soit partagé par des membres d'une même famille), nous avons examiné des identifiants divulgués et avons pu trouver un compte Steam associé à l'un de ces e-mails.
Si vous remarquez que le compte affiché sur TikTok est banni par VAC, le compte lié à sa connaissance ne l'est pas.
Ruben Thomson compte Steam d'une connaissance
En consultant les commentaires sur le premier compte Steam, j'ai trouvé un commentaire provenant d'un compte nommé Ellis. Ce compte Ellis a fait l'objet d'un bannissement VAC à la même date que celle indiquée sur le compte TikTok.
Le compte Steam de Thomson sur TikTok affiche un bannissement VAC datant du 13 septembre 2016.
La photo de profil du compte Steam de Thomson représente un chat assis devant plusieurs écrans d'ordinateur, et une recherche d'image inversée n'a donné aucun résultat, ce qui indique peut-être qu'elle est propre à Ruben Thomson lui-même.
Compte Steam de Thomson banni par VAC le 13 septembre 2016
Photo de profil Steam de Thomson
Résoudre le casse-tête de l'attribution
Pour relier les informations recueillies, nous avons recherché le compte Telegram « PCP.sh » sur Flare. Nous y avons trouvé une capture d'écran du compte Telegram de TeamPCP utilisant la même photo de profil que le compte Steam de Thomson, ce qui confirme avec une quasi-certitude que Ruben Thomson est le leader de Team PCP.
Résultat de recherche pour « pcp.sh » sur Flare (Flare lien vers la publication, inscrivez-vous à essai gratuit (pour y accéder si vous n'êtes pas déjà client)
Conclusion de l'enquête
Chaque élément pris individuellement pourrait s'expliquer par un nom partagé, un mot de passe commun ou une ressemblance familiale sur une photo de profil. Mais ensemble, ils forment une chaîne ininterrompue : le pseudo DeadCatx3 est lié à un profil HackerOne au nom de Ruben Thomson et à un compte Hugging Face mentionnant le domaine C2 de TeamPCP ; un mot de passe réutilisé relie son adresse e-mail scolaire à une adresse Gmail personnelle ; cette adresse Gmail mène à un compte TikTok à son nom ; et le profil Steam lié à ce compte TikTok arbore le même avatar que celui utilisé sur le canal Telegram de TeamPCP.
Ce n'était plus une question de circonstances, et nous avions des preuves démontrant qu'il s'agissait de la même personne, utilisant les mêmes habitudes et laissant les mêmes empreintes digitales à chaque étape de sa double vie.
Nous avons déterminé avec une quasi-certitude que l'opérateur derrière l'identité DeadCatx3, et TeamPCP elle-même, était Ruben Thomson, basé à Perth, en Australie. À partir de là, l'outil Credentials Browser de Flare, combiné à PredictaGraph, a permis de retracer cette identité à travers des mots de passe divulgués, des adresses électroniques associées et des comptes liés, transformant ainsi un simple alias en une personne vérifiable. Nous avons confirmé ces conclusions auprès des forces de l'ordre.
Points clés à retenir pour les défenseurs
Les actions GitHub sont associées aux SHA complets des commits, et non aux étiquettes. Les références aux étiquettes pointent vers le dépôt du responsable, ce que TeamPCP a remplacé.
Considérez la rotation des identifiants comme un exercice d'inventaire, et non comme une intervention d'urgence. Aqua a procédé à une rotation après l'intrusion de février, mais a néanmoins conservé l'accès qui a permis le déploiement d'une version compromise trois semaines plus tard. La rotation n'est efficace que si vous connaissez l'ensemble complet des identifiants.
Limitez la portée des jetons de publication et leur durée de vie à une durée restreinte. Un jeton PyPI autorisé à publier n'importe quoi, indéfiniment, transforme une simple faille dans un processus de compilation en un incident affectant toute la chaîne d'approvisionnement.
Alerte concernant les connexions sortantes des outils de sécurité. Un scanner de vulnérabilités effectuant des appels réseau inattendus pendant une compilation constitue une détection fiable et peu sujette aux interférences, et c'est précisément ce dont avaient besoin les charges utiles Trivy et LiteLLM.
Surveillez vos propres domaines dans de fichiers cleptogiciels et les listes combinées. La même vulnérabilité liée à la réutilisation des identifiants qui nous a permis de passer d'un courriel scolaire à un avatar Telegram est celle qu'un attaquant exploite pour s'introduire dans votre système.
Ce que TeamPCP signifie pour les équipes de sécurité
L'aspect technique ici n'est pas la sophistication. Les premières opérations du groupe relevaient du pur opportunisme : rechercher les services exposés, déployer un conteneur et miner du Monero. Ce qui a changé, c'est le ciblage. TeamPCP a compris qu'un scanner de vulnérabilités exécuté au sein d'un pipeline de compilation possède davantage d'identifiants que la plupart des hôtes qu'il pourrait compromettre directement, et que la confiance accordée aux outils de sécurité est transitive. LiteLLM n'a pas été piraté, mais il utilisait Trivy.
C’est ce schéma qu’il faut retenir, et c’est celui-là même qui a permis à Mini Shai-Hulud de fonctionner deux mois plus tard. La zone d’effet d’un outil de compilation compromis s’étend à tous les pipelines qui l’exécutent, et la zone d’effet de chacun de ces pipelines s’étend à toutes les informations d’identification auxquelles il peut accéder.
TeamPCP a bâti sa marque sur les chats et l'humour : la carte de visite dans les logs, la bio « chat rigolo », le code source du ver publié sous licence MIT avec une chute humoristique. Ce sens inné du public a transformé une équipe de scanners opportunistes en l'un des acteurs les plus influents de la chaîne d'approvisionnement de l'année écoulée, et c'est ce même sens inné qui a laissé un avatar si particulier sur un profil Steam pendant une décennie, attendant qu'on le remarque.
TI Vendredi — Diapositives de la session
Vous avez raté le TI vendredi sur Unmasking TeamPCP ?
L'équipe « Menaces émergentes » de Flare a présenté son enquête sur TeamPCP, détaillant la procédure de démasquage d'un opérateur présumé. Rejoignez le serveur Discord de la Flare Academy en tant qu'utilisateur vérifié pour accéder aux diapositives de la session (si ce n'est pas déjà fait).
✓ Présentation complète de l'enquête de TeamPCP
✓ Disponible pour les membres vérifiés de la communauté Discord de Flare Academy