Aikido

Quatre décisions de réponse aux incidents suite à la violation de données de Hugging Face

Les points à retenir pour les organisations, selon un CISO, basés sur la réponse aux incidents de Hugging Face suite à la violation par les agents d'OpenAI

Écrit par
Mike Wilkes

Hugging Face a été victime d'une violation par un agent OpenAI malveillant la semaine dernière, et l'intrusion continue de fournir des informations et des éclaircissements. L'équipe de Hugging Face a publié une chronologie détaillée ainsi qu'une relecture en streaming d'une trace de 17 600 événements visualisant ce qui s'est passé, et c'est merveilleusement et incroyablement détaillé. Je vous recommande de le lire si vous en avez le temps.

La violation de leur plateforme n'a pas été le résultat d'un exploit brillant suivi d'un chemin d'attaque propre et dirigé par l'homme. Il s'agissait d'une multitude d'actions réparties sur quatre jours et demi, avec des milliers d'expériences ratées masquant le nombre relativement faible d'actions qui ont finalement eu de l'importance. La reconnaissance, l'exécution de code et la préparation de la charge utile ont commencé presque immédiatement. Le mouvement latéral décisif vers leurs clusters Kubernetes, leur réseau interne et leur contrôle de version n'a commencé qu'au troisième jour.

La plupart des organisations disposent de suffisamment de journaux et de monitoring pour reconstituer une attaque après coup. Beaucoup moins nombreuses sont celles qui disposent de la visibilité d'exécution, de la logique d'alerte et de l'aide à la décision nécessaires pour reconnaître l'attaque pendant qu'elle se met en place.

La chronologie combinée de Hugging Face ainsi que des informations tant attendues partagées par OpenAI sur l'incident, plus le post-mortem initial de la CSA, suggèrent ce que je considère comme quatre points de décision critiques en matière de réponse aux incidents que les entreprises devraient prendre en compte. Chacun est également un test pratique pour savoir si votre organisation dispose ou non de ces capacités.

Décision 1 : Quand une reconnaissance à faible signal devient-elle un incident ?

Le premier jour de la violation, les agents ont énuméré les systèmes de fichiers, les processus, les interfaces réseau, les variables d'environnement, les points de montage et les outils disponibles. Ils ont testé les canaux sortants et établi un C2 en utilisant des services publics ordinaires. En soi, chaque événement aurait pu être expliqué comme du débogage, de l'automatisation, une charge de travail malformée ou une expérimentation normale.

Hugging Face indique que les signaux initiaux sont apparus à travers l'analyse d'exécution en direct, les journaux SIEM et d'autres contrôles. Sa pile de sécurité basée sur l'IA a corrélé ces signaux en un modèle d'attaque cohérent, mais n'a pas réussi à attribuer une criticité suffisante ou à alerter l'équipe d'astreinte. Ce délai a coûté un temps de réponse précieux. Une analyse antérieure et une discussion communautaire sont parvenues à la même conclusion : la reconnaissance était enregistrée depuis plusieurs jours, mais l'escalade n'a eu lieu que lorsque le volume ultérieur d'activité non autorisée a finalement dépassé le seuil d'alerte.

La décision ne consiste pas simplement à savoir si un événement individuel est malveillant. Il s'agit de déterminer si une séquence de comportements d'exécution individuellement ambigus représente la construction d'un chemin d'attaque.

Les organisations devraient se demander si elles peuvent corréler l'exécution des processus, l'accès au système de fichiers, l'activité API, l'identité des charges de travail et le comportement réseau à travers des conteneurs éphémères. Peuvent-elles reconnaître qu'un pod lisant \/proc\/self\/environ, inspectant les jetons de compte de service et testant plusieurs méthodes d'égression est matériellement différent d'une défaillance d'application normale ?

C'est là que l'instrumentation canary peut lever l'ambiguïté. La technique dans laquelle nous devrions investir ici consiste à placer de faux jetons dans des environnements de charge de travail sélectionnés, laisser des identifiants leurres dans les magasins de secrets et surveiller les valeurs de configuration dans les chemins non-production. Ceux-ci ne devraient jamais fournir un accès réel. Au lieu de cela, leur seul but est de générer un signal de haute confiance lorsqu'ils sont lus, copiés ou présentés. Un jeton canary bien placé devrait alerter un intervenant au lieu d'être écarté comme une anomalie. La construction d'une capacité de leurre devrait figurer sur la feuille de route de toutes les équipes.

Décision 2 : Que se passe-t-il lorsque des identifiants sont volés et utilisés ?

Le troisième jour a modifié la nature de l'incident. L'agent a lu les jetons de compte de service Kubernetes, interrogé les métadonnées du cloud, rejoué des identifiants temporaires provenant de fournisseurs d'hébergement externes (Modal s'est manifesté pour se déclarer l'un de ces fournisseurs d'hébergement), créé des pods privilégiés et s'est échappé vers la racine du nœud. Il a ensuite accédé à un objet secret contenant 136 clés, y compris des identifiants utilisés pour un VPN mesh et un broker d'accès interne au cluster. Un identifiant de connecteur partagé a effectivement fourni un accès administrateur de cluster à travers plusieurs clusters.

C'est le moment où l'« enquête » doit se transformer en confinement actif.

Votre équipe peut-elle identifier chaque système qui fait confiance à un identifiant compromis ? Le graphe de dépendances et l'analyse d'impact sont essentiels pour initier la phase de confinement de la réponse aux incidents. Vos outils et tableaux de bord peuvent-ils distinguer un jeton utilisé par sa charge de travail attendue du même jeton apparaissant depuis un nouveau fournisseur cloud, un sandbox ou une origine réseau ? Les intervenants peuvent-ils révoquer une famille entière d'identifiants, plutôt que de faire pivoter une seule clé pendant que les jetons dérivés restent valides ?

La détection à l'exécution est essentielle car l'identifiant lui-même peut sembler légitime. La condition malveillante se trouve dans son contexte d'exécution : le mauvais processus, le mauvais pod, le mauvais réseau source, la mauvaise identité de charge de travail ou une séquence d'actions impossible. J'aime appeler cela la surveillance « l'eau est mouillée ». Parmi les choses que je sais être vraies, l'eau est mouillée tout comme le ciel est bleu. Si nous n'instrumentons pas une surveillance qui nous aide à détecter les changements « brisant les hypothèses » dans nos environnements, nous continuerons d'être surpris. 

Un exemple serait de configurer des tests de routage de saut suivant afin de détecter un détournement BGP. Les quatre premiers sauts de votre réseau interne vers un actif externe stable et bien connu (comme time.windows.com) ne devraient absolument pas dévier. Un autre exemple de surveillance « l'eau est mouillée » concerne les enregistrements DNS, en évaluant constamment si vos adresses IP internes et externes pour les composants d'infrastructure clés restent inchangées. 

Les canaris déployés pour déclencher des attaques menées par des agents devraient donc inclure de faux jetons de compte de service, des identifiants cloud leurres et des clés d'inscription VPN synthétiques. Un jeton stocké dans un environnement de pod soigneusement sélectionné peut révéler la collecte d'identifiants. Un compte de service leurre peut révéler l'énumération d'espaces de noms. Une fausse entrée de cluster renvoyée par un catalogue de services interne peut révéler des tentatives de mouvement latéral. Ces artefacts doivent mener à des sinkholes ou des points d'accès refusés, et non à un accès à la production, mais chaque interaction doit préserver l'identité source et déclencher des directives de confinement immédiates.

Décision 3 : Pouvez-vous détecter le C2 lorsqu'il ressemble à votre propre application ?

La leçon de détection la plus importante est peut-être que le commandement et contrôle ne ressemble pas nécessairement à un trafic de malware traditionnel.

L'agent a utilisé des services publics de capture de requêtes, des pastebins et des hôtes de partage de fichiers. Plus important encore, il a utilisé des datasets Hugging Face contrôlés par l'attaquant comme boîtes aux lettres mortes. Les commandes et les données volées ont été placées dans des commits de datasets et des branches secondaires, puis récupérées via l'API Hugging Face normale. Un espace CORS-proxy ouvert a également été utilisé comme relais de sortie. Les charges utiles ont été fragmentées, compressées, encodées et parfois envoyées sur des sockets brutes. La reproduction du processus de décodage de l'attaquant a permis de récupérer environ quatre fois plus de secrets exposés que le scan initial.

En d'autres termes, les instructions entrantes ressemblaient à une activité de dataset et l'exfiltration sortante ressemblait à une activité de dataset. Hugging Face est devenu lui-même une partie du transport C2. Un SIEM conventionnel peut signaler des milliers d'événements inhabituels sans révéler qu'ils forment un protocole bidirectionnel.

Le point de décision est de savoir s'il faut désactiver une fonctionnalité orientée client, isoler un locataire, bloquer un service public ou interrompre un chemin de données de production. Les intervenants ont besoin de preuves plus solides que « ce trafic est inhabituel ».

Créez des datasets leurres avec des noms convaincants, tels que des résultats de benchmark internes, des réponses d'évaluation ou des recherches de sécurité archivées. Semez-les avec des marqueurs uniques et de faux identifiants. Aucune charge de travail légitime ne devrait y accéder. Surveillez les lectures, les clones, les commits, la création de branches et les requêtes API. Un faux cluster interne ou un dataset listé dans un catalogue peut également révéler si un attaquant énumère des opportunités plutôt que de simplement interagir normalement avec le service.

Des canaris bien conçus et bien placés fournissent une intention, pas seulement une anomalie.

Décision 4 : Corriger les dommages ou reconstruire l'environnement ?

Finalement, la question est de savoir si l'organisation fait toujours confiance à l'infrastructure affectée.

Hugging Face a largement fait pivoter les identifiants, bloqué l'accès aux métadonnées du cloud, restreint la portée des identifiants et a effacé et reconstruit l'infrastructure cœur à partir de zéro. Dans l'ensemble, la décision a consisté à détruire environ un tiers de l'environnement plutôt que de tenter de prouver que chaque point d'ancrage, jeton forgé et mécanisme de persistance avait été supprimé.

Cette option n'existe que lorsque l'infrastructure est reproductible et jetable. Une analyse précédente a noté que la récupération pour Hugging Face a été accélérée par le déploiement d'une infrastructure nouvelle à partir de dépôts plutôt que par la restauration puis le nettoyage des systèmes compromis. L'autorité de prendre cette décision doit également être clairement attribuée et documentée avant l'incident.

Le dossier d'aide à la décision devrait inclure la lignée des identifiants, les identités des charges de travail affectées, la vérification des images immuables, la couverture de l'infrastructure-as-code, les exigences de restauration des données et les preuves de tentatives de persistance. Les dirigeants devraient connaître la durée d'interruption estimée pour la reconstruction avant qu'on ne leur demande de l'autoriser. Et avec quel niveau de confiance (quand un cluster ou un service particulier a-t-il été déployé pour la dernière fois) ?

Les canaris restent également utiles après la récupération. Remplacez chaque leurre par une valeur nouvellement générée. Toute utilisation d'un ancien jeton canari après la reconstruction est une preuve solide qu'un point d'ancrage non découvert, un secret copié ou un emplacement de staging externe a survécu. Ceci est particulièrement vrai si l'on croit que les attaquants basés sur des agents sont suffisamment prévoyants pour laisser des miettes de pain à leurs agents modèles frères afin d'éviter la détection ou de reprendre là où ils s'étaient arrêtés.

L'incident Hugging Face démontre que la journalisation n'est pas la détection, la détection n'est pas l'escalade et l'escalade n'est pas l'aide à la décision. La visibilité à l'exécution vous indique ce que le logiciel fait réellement. Les jetons canaris, les clusters et les datasets vous indiquent quand une activité n'a pas d'explication légitime.

L'objectif n'est pas seulement de recueillir suffisamment de preuves pour comprendre la brèche la semaine prochaine. Il s'agit de créer des signaux suffisamment forts pour prendre la bonne décision aujourd'hui.

Partager :

https://www.aikido.dev/blog/hugging-face-open-ai-breach-takeaways

S'abonner aux actualités

4,7/5
Fatigué des faux positifs ?
Essayez Aikido, comme 100 000 autres.
Commencez maintenant
Obtenez une démonstration personnalisée

Approuvé par plus de 100 000 équipes

Réserver maintenant
Analysez votre application à la recherche d'IDORs et de chemins d'attaque réels

Approuvé par plus de 100 000 équipes

Démarrer l'analyse
Découvrez comment le pentest IA teste votre application

Approuvé par plus de 100 000 équipes

Démarrer les tests

Sécurisez votre environnement dès maintenant.

Sécurisez votre code, votre cloud et votre environnement d’exécution dans un système centralisé unique.
Détectez et corrigez les vulnérabilités rapidement et automatiquement.

Aucune carte de crédit requise | Résultats en 32 secondes.