Illustration technique abstraite générée sur un fond gris bleu pâle, dessinée au moyen d’un tracé fin en bleu ardoise foncé et cyan. À gauche se dresse un haut empilement de plaques semblables à des serveurs, trois de ses compartiments latéraux étant représentés ouverts et éclairés de l’intérieur par une froide lueur cyan. Par l’ouverture centrale, un unique filament ambré quitte la machine et parcourt une discrète grille de plan bleu, laissant une traînée pointillée de petits nœuds carrés ; la traînée se poursuit au-delà du cadre, tandis qu’un fin anneau fermé, à droite, marque le point de contrôle humain absent. Une petite limite en pointillés court le long de la base, et de fines graduations de mesure traversent le bord supérieur. Aucun texte, chiffre, visage, main, robot, logo logiciel ni marque d’organisation n’apparaît. Le logo OrcaRouter est incrusté dans le coin inférieur droit.
AI Safety Incidents

Hermes Agent a fonctionné sans supervision contre le ministère des Finances de Thaïlande, et ses journaux ont été laissés en ligne

Auteur

Magnus Corvin

Date de publication

Derniers modèles · 20Voir tous les modèles →
Benchmarks : Artificial Analysis · mis à jour quotidiennement
Retour à tous les articles

Entre le 9 et le 13 juillet 2026, la société de renseignement sur les menaces Hunt.io et le chercheur Bob Diachenko ont découvert trois répertoires ouverts sur un serveur de préparation de Hong Kong associé à une intrusion contre le ministère des Finances de la Thaïlande. Les 585 fichiers et 470 Mo de données comprenaient les journaux de Hermes Agent, le framework d'agents open source de Nous Research, exécuté en mode « YOLO » avec l'étape d'approbation humaine désactivée. Sans intervention humaine, il a exécuté les contrôles de privilèges LinPEAS, énuméré les binaires SUID et exploré récursivement une racine web appartenant au Bureau du secrétaire permanent aux Finances, en répertoriant des dossiers du personnel remontant à 2012. Le même hôte hébergeait un implant Go non signalé auparavant, que l'opérateur appelait Hades. Hunt.io n'a trouvé aucune preuve que des fichiers aient été dérobés et n'a pas pu établir comment les intrus étaient entrés au départ. L'entrée complète, datée du 30 juillet 2026 et évaluée avec un niveau de confiance A, figure dans l'archive des incidents liés à l'IA aux côtés des autres dossiers d'intrusion pilotés par des agents de cette série.

Les répertoires se trouvaient sur 43.246.208[.]207, un hôte de l'AS132883 (TOPIDC) à Hong Kong, et Attack Capture de Hunt.io les a archivés les 9, 10 et 13 juillet : 145 fichiers, puis 62, puis 378, soit 585 au total. L'IP avait un historique documenté en tant que contrôleur ShadowPad et exécutait un serveur de commande et de contrôle VShell sur le port 21083 lorsque Hunt.io l'a examinée. Les chercheurs déclarent n'avoir « aucune preuve confirmant ou infirmant » que VShell ait été utilisé contre le ministère. L'archive date le dossier du 30 juillet 2026 ; les recherches qui le sous-tendent sont plus anciennes, publiées par Hunt.io le 23 juillet après une fenêtre de divulgation de sept jours, et rapportées par The Record le 27 juillet et Dark Reading le 28 juillet.

Self-authored HTML card headed 'The server, in three captures', kicker 'What Hunt.io archived', title 'Three open directories on one Hong Kong host', subtitle '43.246.208[.]207, AS132883 (TOPIDC), Hong Kong. The dates are the directory labels Hunt.io uses.' Three rows: 9 July, 145 files, exploit and CVE code, mailer scripts, MOF ICT session material and Hermes logs; 10 July, 62 files, Go-compiled executables and ELF binaries including Hades; 13 July, 378 files, additional exploit code and files identifying MOF internal access. A band below reads 'Total: 585 files, 470 MB. Ports 80, 8443 and 8080. The host also ran a VShell C2 server on port 21083; Hunt.io could not confirm whether VShell was used against the ministry.' A footer cites Hunt.io, 23 July 2026. The OrcaRouter logo sits bottom-right.

Les cinq journaux d'appels de l'agent

Dans le répertoire du 9 juillet se trouvait un dossier nommé hermes-results contenant cinq fichiers, chacun nommé call_00_ suivi d’une chaîne aléatoire. Hunt.io les décrit comme des enregistrements des propres appels de l’agent et résume ce que chacun a renvoyé. Le premier est une évaluation d’élévation de privilèges et une analyse des vulnérabilités du noyau contre un hôte du ministère. Le deuxième est une deuxième exécution de LinPEAS, énumérant les services. Le troisième énumère les binaires SUID et SGID avec find. Le quatrième liste les conteneurs et les systèmes de fichiers et est ponctué d’erreurs de pipe cassé, que Hunt.io interprète comme l’agent produisant plus de sortie que le serveur ne pouvait en supporter. Le cinquième est celui qui compte le plus : une recherche récursive de la racine web reliée au bureau du secrétaire permanent, qui contenait des documents Office standard, des formulaires d’évaluation des performances et des dossiers du personnel remontant à 2012.

Rien de tout cela ne nécessitait une personne au clavier. Hunt.io indique que l’opérateur a exécuté Hermes Agent « en mode non assisté ou YOLO, en contournant les invites d’approbation pour des commandes qui pourraient être considérées comme dangereuses ». Le framework, publié en février 2026, s’exécute comme un démon persistant et conserve la mémoire entre les sessions ; YOLO est l’option qui supprime les invites. Hunt.io rapporte que le projet avait dépassé 140 000 étoiles GitHub en juillet 2026. L’analyse des journaux par la Cloud Security Alliance décrit un agent évaluant chaque résultat et sélectionnant l’étape suivante — un flux de travail qui, de l’extérieur, ressemble à la manière dont un analyste humain procéderait, au rythme de la machine.

Hunt.io se montre prudent quant à ce que les journaux établissent. L’exploration de la racine web montre que l’agent atteint des fichiers du personnel ; elle ne montre pas qu’ils en sortent. « Rien ne prouve que les fichiers ont été exfiltrés », indique le rapport. Son résumé de l’ensemble du serveur est que les fichiers « décrivent une intrusion toujours en cours : outillage mis en place, accès interne en expansion, et aucun signe que des données aient quitté le réseau, bien que l’opérateur soit clairement en train de cataloguer du contenu web. »

Self-authored HTML card headed 'The agent's five call logs', kicker 'hermes-results, captured 9 July', title 'What the agent was asked to do, and what came back', subtitle 'The five call logs and their result files, as listed by Hunt.io. Descriptions are the report's.' Five rows, each giving an index, a call_00_ filename ending .txt, and Hunt.io's description: call_00_EE5atKwDPZemr8R1wc1f4466.txt, a primary privilege-escalation assessment and kernel vulnerability scanning against a MOF host; call_00_RMhbTh6e79QZi9R0zWgA9333.txt, a second LinPEAS run enumerating services; call_00_r8hfBizhxfPf4OhtO6z65472.txt, SUID and SGID binary enumeration using the find command; call_00_Q6iateZ5qnlWMMgAtWtd1047.txt, a container and filesystem listing with broken-pipe errors showing more output than the server could carry; call_00_Hu9InX5bIcCp55iwJTzn6181.txt, a recursive search of the web root connected to the Permanent Secretary office, holding Office files, performance evaluation forms and personnel records back to 2012. A band below reads 'YOLO mode removed the approval prompts. The custom linpeas.sh also checked CVE-2026-43503 (DirtyClone), CVE-2026-31431 (Copy Fail) and CVE-2026-43284 / CVE-2026-43500 (Dirty Frag). No evidence the enumerated files were exfiltrated.' A footer cites Hunt.io, 23 July 2026. The OrcaRouter logo sits bottom-right.

Le travail que l’humain accomplissait encore

La répartition des tâches est l’aspect le plus utile du rapport. L’agent a pris en charge la reconnaissance générique et répétable — un travail qui peut être scripté et qui ne demande aucune connaissance de la cible. L’opérateur a apporté ce que l’agent ne pouvait pas savoir : une liste de mots de passe construite à partir d’abréviations des services internes et des programmes du ministère, de noms d’hôtes internes, d’adresses non routables et de scripts écrits autour de services précis. La note de recherche de la Cloud Security Alliance, publiée le 26 juillet, fait le même constat : l’humain conservait le « savoir-faire propre à la cible » tandis que l’agent exécutait les parties qui passent à l’échelle.

L'exemple le plus clair est la chaîne Hadoop. Le répertoire du 13 juillet contenait plus d'une douzaine de fichiers ciblant Apache HiveServer2, dont hive_rce_py2.py, qui ouvre une socket brute vers un nœud interne sur le port 10000 et s'authentifie avec SASL PLAIN. Le mode d'authentification par défaut de HiveServer2 est NONE, qui accepte n'importe quels identifiants sans les valider, et le script a été écrit pour s'appuyer précisément sur ce comportement. Il enregistre ensuite une fonction Java personnalisée malveillante empaquetée sous le nom HiveCmd.jar et transmet des commandes shell via Hive SQL, en récupérant la sortie par WebHDFS depuis un second nœud interne sur le port 50070. Une charge utile Ambari distincte désigne un DataNode HDFS interne par son nom d'hôte, s'attaquant à la couche de gestion plutôt qu'aux données.

Le reste de la boîte à outils suit le même schéma de préparation. Les scripts Node.js préfixés gf_ pilotent une instance Chrome sans interface via un proxy SOCKS5 pour atteindre une console d’administration GlassFish interne, se connecter avec les identifiants par défaut et déployer un fichier WAR ; Hunt.io n’a pas pu confirmer que l’un ou l’autre des WAR avait été déployé. Un shell web PHP déguisé en fichier de cache de journal a été placé à /storage/Counter/nine/.journald-cache.php sur un serveur web du ministère. Un script Perl, mail4.pl, teste l’authentification SMTP auprès de l’infrastructure de messagerie du ministère avec des adresses de boîtes aux lettres codées en dur et des mots de passe construits à partir des jetons extraits ; les scripts Python nommés mail_test.py et mail3.py font de même. Un fichier texte, alf_cookie.txt, contient des éléments de session Alfresco pour une adresse interne du ministère. Les deux répertoires contiennent également du code d’exploitation pour CVE-2021-3156, le débordement de tas de sudo, CVE-2021-4034, PwnKit, et CVE-2017-7269, le débordement WebDAV d’IIS 6.0, ainsi que du shellcode et des chemins pointant vers l’intranet du ministère.

Rien ici ne constitue une technique nouvelle. Ce que les journaux ajoutent, c’est que l’énumération s’est déroulée en continu, sans les pauses qu’un opérateur humain laisse entre les commandes — la note de la Cloud Security Alliance soutient qu’une détection conçue autour d’une activité au rythme des frappes au clavier y est mal adaptée.

Hades, mis en scène mais non confirmé comme en cours d’exécution

Le répertoire du 10 juillet était un serveur de distribution : 62 binaires Go compilés, au format PE Windows et ELF Linux, dont beaucoup portaient le nom de processus système légitimes — ctfmon, csrss, conhost et MicrosoftEdgeUpdate sous Windows ; kworker, multipathd et accounts-daemon sous Linux. Deux portent le nom du projet, hades_linux_amd64 et hades_windows_amd64. Hunt.io a analysé un échantillon de chaque plateforme et a constaté qu'ils provenaient de la même base de code ; les 60 autres partagent la même plage de taille et les mêmes caractéristiques de compilation, mais n'ont pas été examinés individuellement.

L’analyse statique et dynamique a révélé un canal de commande et de contrôle HTTPS déguisé en ressources web statiques : /assets/app.min.js pour le check-in, /assets/vendor.js pour l’attribution des tâches, /assets/main.js pour le téléversement. Les charges utiles sont chiffrées avec AES-256-GCM au moyen d’une clé codée en dur propre à chaque build. Les variables d’environnement incluent une date d’autodestruction, HADES_KILLDATE, et un calendrier d’heures de travail qui fait dormir l’implant en dehors d’une fenêtre configurée. La version Windows persiste via une clé Run du Registre et une tâche planifiée, s’exécute en mémoire par chargement réflexif dans un svchost.exe vidé, effectue des captures d’écran via GDI et fournit un proxy SOCKS ; la version Linux utilise une tâche cron, un PTY standard et l’exécution de shellcode. Les deux prennent en charge le transfert de fichiers fractionné et reprenable.

Les deux échantillons analysés pointaient vers des contrôleurs différents : l’exécutable Windows dwm_33b7.exe envoie des balises vers le serveur de préproduction sur le port 443, et le binaire Linux multipathd_04d0 vers 202.181.27[.]115 sur le port 12443 — l’hôte identifié grâce à l’empreinte de certificat partagée. Hunt.io note que le nommage peut être fortuit : dans la mythologie grecque, Hermès guide les âmes vers Hadès.

Ce qu’aucune source n’établit, c’est que Hades ait tourné à l’intérieur du ministère. Hunt.io a récupéré les binaires sur le propre serveur de l’opérateur. La note de la Cloud Security Alliance indique qu’aucun artefact récupéré ne montre Hades atteignant une machine du ministère, et Dark Reading rapporte que la recherche n’a pas précisé où il a été déployé. L’implant est une capacité que l’opérateur avait construite et mise en place, et non un résident confirmé sur un hôte du ministère.

Qui était derrière cela ?

Hunt.io n’a pas nommé de groupe. Il a évalué, avec un niveau de confiance faible à moyen, que l’opérateur parle chinois ou connaît intimement la langue, selon quatre indicateurs : l’historique de l’hôte en tant que contrôleur ShadowPad, une infrastructure à Hong Kong, un mot de passe de l’interface web Hermes contenant le mot chinois « Leishen », qui signifie dieu du tonnerre, et une clé API pour FOFA, un service chinois de reconnaissance des actifs Internet. Un instantané de l’environnement enregistre également le client SSH 103.97.0[.]57, sur AS133073 (HK Kwaifong Group Limited), se connectant au serveur de préproduction. Rien de tout cela ne constitue une attribution à un État ou à un cluster nommé, et Hunt.io l’affirme elle-même.

Deux choses concernant l’intrusion elle-même restent inconnues. Le chemin d’accès initial en fait partie : « La méthode d’accès initial reste inconnue », conclut le rapport. L’autre est la portée. Hunt.io indique que des cookies de session actifs, des web shells déployés et un accès au réseau interne suggèrent que l’opérateur « a pu compromettre plusieurs systèmes au sein du réseau MOF », mais il avertit également que les valeurs des cookies à elles seules ne prouvent pas une connexion, car Laravel émet des jetons de session et CSRF à tout visiteur. La compromission est une évaluation construite à partir d’artefacts, et non un inventaire confirmé des hôtes.

Ce que la Thaïlande a fait ensuite

Hunt.io indique que la société et Diachenko ont notifié le CERT national de Thaïlande et la National Cyber Security Agency le 15 juillet 2026, et que les deux ont accusé réception le jour même ; la publication a ensuite été retenue pendant une fenêtre de sept jours. Aucun avis public de ThaiCERT mentionnant le ministère n’a été trouvé dans la couverture examinée pour cet article.

Le 27 juillet, jour où The Record a rapporté l’intrusion, le Comité national de cybersécurité de Thaïlande a tenu sa deuxième réunion de 2026 et approuvé des mesures visant les menaces liées aux agents d’IA. Le compte rendu de l’agence indique que le comité a chargé ThaiCERT de surveiller, d’analyser et de suivre les menaces liées aux agents d’IA, d’alerter les agences à risque et de soutenir la réponse aux incidents et la forensique numérique ; a confié aux CERT sectoriels la mission de renforcer les contrôles et le signalement ; et a approuvé des mesures proactives, notamment des vérifications des systèmes exposés à Internet, la gestion des comptes privilégiés, la segmentation du réseau, les sauvegardes et les tests de restauration. Il a également ordonné des lignes directrices pour un usage sûr, transparent et auditable des agents d’IA au sein des organisations, ainsi que des exercices conjoints de ThaiCERT et des CERT sectoriels simulant des attaques par agents d’IA. La publication ne nomme ni le ministère des Finances ni Hunt.io, et The Record a noté que les responsables « n’ont pas directement fait référence à l’enquête de Hunt.io » tout en jugeant les mesures apparemment destinées à la menace. Tout lien causal entre la réunion et cette intrusion relève d’une inférence, et non d’une déclaration de l’agence.

Theerawut Wittayakorn, secrétaire général adjoint du Comité national de cybersécurité, a déclaré après la réunion que la Thaïlande « doit pouvoir tirer pleinement parti de l’IA tout en gérant systématiquement les risques associés », a rapporté The Record. Le ministère des Finances quant à lui est resté silencieux : The Record a rapporté le 27 juillet que le ministère n’avait pas publiquement reconnu l’incident et n’avait pas répondu à une demande de commentaire, et Dark Reading a rapporté le lendemain que le gouvernement n’avait pas commenté. L’entrée de l’archive, datée du 30 juillet, indique la même chose.

Ce qui est établi, ce qui est évalué, ce qui manque

L’archive classe l’entrée comme un incident concrétisé, de gravité critique, de confiance A, incontesté, avec un préjudice réel consigné et l’étiquette de type WEAPON ; elle n’est pas marquée comme jalon. La note de confiance décrit la documentation, et la documentation est inhabituellement directe : Hunt.io a archivé le serveur de staging des opérateurs, et non les journaux d’une victime. Elle ne décrit pas de vérification indépendante, et sur ce point le dossier est mince.

• Constaté : trois répertoires ouverts sur un seul hôte entre le 9 et le 13 juillet, contenant 585 fichiers et 470 Mo ; cinq journaux d'appels Hermes montrant LinPEAS, l'énumération SUID, le listage des conteneurs et le crawl de la racine web ; Hermes Agent exécuté en mode YOLO ; 62 binaires Go, dont Hades ; le script HiveServer2 et son UDF ; le chemin du web-shell ; des identifiants et des données de session ; aucune preuve d'exfiltration ; la notification de Hunt.io à ThaiCERT et NCSA le 15 juillet, accusée réception le jour même.

• Évalué : que l’opérateur est sinophone, avec un niveau de confiance faible à moyen ; que plusieurs systèmes ministériels ont été compromis ; que les mesures de la NCSA du 27 juillet constituaient une réponse à cette intrusion.

• Manquant : le chemin d’accès initial ; combien d’hôtes ou d’enregistrements l’opérateur a pu atteindre ; si un fichier a quitté le réseau ; toute confirmation ministérielle ; tout avis public de ThaiCERT ; tout examen forensique indépendant.

Un compte secondaire est allé plus loin que le rapport principal. Le condensé de sécurité en langue chinoise d'iThome du 27 juillet, qui résume les mêmes recherches de Hunt.io, indique que les intrus sont entrés par un shell web PHP installé sur un serveur du ministère exposé sur Internet et que l'environnement comptait au moins 47 hôtes, 54,9 To de données financières gouvernementales, 14 bases de données Microsoft SQL, des systèmes biométriques et une passerelle de bureau à distance. Aucun de ces chiffres n'apparaît dans le rapport de Hunt.io, qui précise que la méthode d'accès initial reste inconnue, et la fiche de l'archive suit le rapport. Les lecteurs qui ont vu les chiffres plus élevés doivent les considérer comme non étayés par la source primaire.

Il existe une couverture journalistique indépendante, mais pas de preuves indépendantes. The Record (27 juillet), Dark Reading (28 juillet) et la Cloud Security Alliance (26 juillet) s’appuient toutes sur les données de Hunt.io ; aucune ne décrit son propre examen forensique, son accès aux victimes ni son analyse d’échantillons. Dark Reading ajoute un entretien avec Esteban Borges, responsable de la recherche chez Hunt.io, qui déclare que l’entreprise n’a trouvé aucune preuve d’exfiltration et que les opérations fortement axées sur l’IA qu’il a observées laissent davantage de traces, et non moins. The Record ajoute la déclaration du NCSA. La note de la CSA ajoute une analyse et une mise en garde utile : aucun artefact récupéré ne montre Hades sur une machine d’un ministère. Au-delà de ces ajouts, les faits de l’incident rapportés dans la couverture remontent au même rapport initial.

Self-authored HTML card titled 'Established, assessed, missing', badged 'Evidence check', subtitle 'One primary investigation, secondary reporting that relays it, and no independent forensics.' Three columns. The first, headed 'Established' and badged 'On the record', lists: three open directories on 43.246.208[.]207 from 9 to 13 July, 585 files and 470 MB; five Hermes call logs showing LinPEAS, SUID enumeration, container listing and a web-root crawl including personnel records to 2012; Hermes Agent in YOLO mode; 62 Go binaries including Hades; HiveServer2 default NONE authentication and a HiveCmd.jar UDF; web shell at /storage/Counter/nine/.journald-cache.php; credential and session material; no evidence of exfiltration; ThaiCERT and NCSA notified 15 July. The second, headed 'Assessed' and badged 'Not proven', lists: a Chinese-speaking operator at low-to-medium confidence, from ShadowPad history, Hong Kong infrastructure, the 'Leishen' password and a FOFA key; compromise of multiple ministry systems, inferred from cookies, shells and internal access; that the 27 July NCSA measures respond to this intrusion, which the agency does not say. The third, headed 'Missing' and badged 'Open', lists: the initial access path; host and record counts; whether any file left the network; any ministry statement; any public ThaiCERT advisory; independent forensic examination. A footer lists the sources: Hunt.io, 23 July 2026; Cloud Security Alliance, 26 July 2026; The Record, 27 July 2026; NCSA Thailand, 27 July 2026; Dark Reading, 28 July 2026. The OrcaRouter logo sits bottom-right.

Ce qu'on a dit aux défenseurs

Les recommandations de Hunt.io traitent les éléments pour lesquels des correctifs clairs existent. Passez en revue le mode d’authentification de HiveServer2 et appliquez la liste de blocage des UDF ; auditez récursivement les racines web à la recherche de fichiers PHP dont le nom commence par un point et qui imitent les caches système ; mettez sudo à jour vers 1.9.5p2 ou une version ultérieure et vérifiez les versions de polkit par rapport à CVE-2021-4034 ; désactivez WebDAV sur toute instance IIS 6.0 restante ou migrez hors de cette plateforme ; alertez lorsque des processus de serveur web ouvrent des connexions sortantes vers des ports internes tels que 10000 ou 50070 ; et modifiez les identifiants par défaut des consoles d’administration GlassFish, en limitant l’accès aux réseaux de confiance. Pour les organisations qui utilisent des frameworks d’agents, la Cloud Security Alliance ajoute un contrôle qui aurait eu son importance ici : vérifiez si un mode sans supervision ou équivalent YOLO est activé quelque part, et désactivez-le, sauf s’il existe un motif consigné et accepté au titre du risque.

Hunt.io a également fait de l’incident un moyen de trouver d’autres panneaux exposés. L’interface web Hermes, selon elle, renvoie un en-tête Server et un realm Basic-auth caractéristiques, et une requête de bannière pour HermesWebUI a renvoyé environ 5 900 événements au cours du mois précédent ; une recherche de répertoires ouverts contenant le chemin /hermes-results/ de l’agent a renvoyé 575 résultats. Il s’agit de comptages issus du jeu de données d’un seul fournisseur au moment de la publication, et non d’un décompte des victimes, et ils évoluent à mesure que les panneaux apparaissent et disparaissent. L’élément utile est l’indicateur : les panneaux d’agents exposés et leurs répertoires de sortie sont découvrables, et c’est ainsi que cette opération a été révélée.

L’archive ne classe pas cette entrée parmi les jalons, et le dossier technique étaye cette retenue. LinPEAS, l’abus d’UDF Hive, les identifiants par défaut et un exploit public de 2017 sont de vieux outils ; ce qui est nouveau, c’est l’organisation de l’équipe — un agent qui procède à l’énumération en continu, et un opérateur qui effectue la préparation propre à la cible. C’est cette configuration en deux parties que documentent les journaux. Ce qu’ils ne peuvent pas documenter, c’est l’impact : jusqu’où l’opérateur est entré au ministère, ce que contenaient les fichiers du personnel, ou si quoi que ce soit a quitté le réseau. Tant que le ministère ou un enquêteur indépendant ne répond pas à ces questions, le dossier décrit une intrusion bien documentée dont le coût reste inconnu.