Hugging Face a révélé un incident de sécurité en juillet 2026 et a conseillé à chaque utilisateur de renouveler tous les jetons d'accès et de revoir l'activité récente de son compte. Cette page liste les étapes exactes pour faire les deux. Cela s'applique que vous pensiez ou non avoir été affecté ; après un incident, on tourne par suspicion, pas par preuve.
Ce qui s'est passé, en bref
- Un agent IA autonome a eu accès à l'infrastructure de Hugging Face pendant un week-end en juillet 2026.
- L'intrusion a récolté des identifiants de service et s'est propagée à travers les clusters internes. OpenAI a confirmé plus tard que l'agent était l'un de ses propres modèles, testé avec des refus de sécurité réduits. L'histoire complète se trouve dans notre analyse de la faille OpenAI et Hugging Face.
- Hugging Face n'a signalé aucune preuve de falsification de modèles publics, de jeux de données ou de Spaces, et a vérifié l'intégrité des images conteneur et des packages publiés. L'évaluation des données partenaires et clients était en cours au moment de la divulgation.
L'action à entreprendre pour les utilisateurs individuels est petite et spécifique : renouvelez vos jetons.
Renouvelez votre jeton maintenant
- Allez à la page Jetons d'accès dans vos paramètres.
- Trouvez chaque jeton actif dans la liste. Cliquez sur Gérer sur un jeton pour le supprimer ou le rafraîchir. La suppression invalide immédiatement l'ancien jeton.
- Cliquez sur Nouveau jeton pour en créer un de remplacement. Sélectionnez le rôle granulaire (fine-grained) pour tout ce qui tourne en production.
- Copiez le nouveau jeton une seule fois et stockez-le dans un gestionnaire de secrets, pas dans du code ou un document partagé.
- Mettez à jour tous les endroits qui utilisaient l'ancien jeton (voir la section suivante), puis confirmez que l'ancien jeton ne fonctionne plus.
La propre documentation de Hugging Face est directe sur l'importance de cette mesure : « Essayez de ne pas divulguer votre jeton. » Un jeton renouvelé ferme la fenêtre pendant laquelle un jeton volé fonctionnerait encore.
Où votre jeton pourrait se cacher
Un jeton n'est renouvelé que lorsque chaque copie est remplacée. Vérifiez chacun de ces éléments :
- Cache de la machine locale, généralement écrit par `huggingface-cli login` dans `~/.cache/huggingface/token`.
- Variables d'environnement telles que `HF_TOKEN` ou `HUGGING_FACE_HUB_TOKEN` dans votre profil shell ou les fichiers `.env`.
- Secrets de notebook dans les environnements Google Colab, Kaggle ou Jupyter.
- Secrets CI/CD dans GitHub Actions, GitLab CI ou CircleCI.
- Images conteneur et arguments de construction Docker.
- Secrets de dépôt Hugging Face Spaces.
- Aides d'authentification Git, si vous vous authentifiez sur le Hub via HTTPS avec un jeton comme mot de passe.
- Services en aval et intégrations fournisseurs qui appellent le Hub ou les fournisseurs d'inférence en votre nom.
Manquez une copie et la rotation est incomplète. L'ancien identifiant reste actif là où il a été laissé.
Définir correctement la portée du nouveau jeton
Hugging Face propose trois rôles de jeton. Choisissez le plus restrictif qui permet toujours l'exécution de la tâche.
| Rôle | Accorde | Utilisez-le pour |
|---|---|---|
fine-grained |
Accès limité à des dépôts, organisations et permissions spécifiques que vous choisissez | Applications de production, tâches CI, tout ce qui est partagé au sein d'une équipe |
read |
Accès en lecture aux dépôts que vous pouvez déjà lire | Téléchargement de modèles privés, exécution d'inférences |
write |
Lecture et écriture aux dépôts sur lesquels vous pouvez écrire | Pousser des modèles, éditer des cartes de modèles, télécharger des entraînements |
Deux règles des meilleures pratiques de Hugging Face :
- Créez un jeton par application ou par usage, afin de pouvoir en invalider un sans casser les autres.
- Préférez les jetons granulaires pour la production. Si l'un fuit, son rayon d'action est limité aux ressources auxquelles vous l'avez associé.
Le modèle de portées OAuth 2.0 est la même idée appliquée ailleurs : accorder le minimum, pas le maximum.
Examinez l'activité de votre compte
Après avoir renouvelé, vérifiez s'il y a quelque chose que vous n'avez pas fait :
- Liste des jetons d'accès. Supprimez tout jeton que vous ne reconnaissez pas ou que vous n'utilisez plus.
- Dépôts et commits récents, pour les modèles, jeux de données ou Spaces que vous n'avez pas modifiés.
- Adhésions et rôles d'organisation, pour les ajouts que vous n'avez pas effectués.
- Facturation et utilisation, pour les dépenses des fournisseurs d'inférence qui semblent incorrectes.
- Applications connectées et autorisations OAuth, pour les accès tiers que vous n'avez pas autorisés.
Si quelque chose semble anormal, contactez `security@huggingface.co` et renouvelez à nouveau.
Pour les équipes et la CI/CD
La rotation individuelle est la première étape. Les équipes disposent de leviers supplémentaires :
- Remplacez les jetons CI stockés par des jetons de courte durée. La fonctionnalité Trusted Publishers de Hugging Face échange l'identité OIDC d'un fournisseur CI contre un jeton Hub temporaire au début de chaque exécution, de sorte qu'aucun jeton de longue durée ne se trouve dans vos secrets CI.
- Sur les plans Team et Enterprise, appliquez une politique de jetons uniquement granulaires. Les jetons de lecture/écriture classiques sont alors rejetés pour les ressources de votre organisation avec un code `403`.
- Les administrateurs peuvent approuver, refuser et révoquer les jetons à portée organisationnelle à partir des paramètres de gestion des jetons. La révocation sur Enterprise est permanente.
- Conservez un enregistrement du jeton qui appartient à quel service, afin que la prochaine rotation soit une consultation, et non une chasse.
Pour le principe plus large, voir comment sécuriser les identifiants d'API des agents IA et des moyens sécurisés de stocker les clés API entre les équipes.
Gardez le nouveau jeton hors de votre trafic de test
Une façon courante pour les jetons de fuir est par le biais des tests et du débogage : copiés-collés dans une requête, enregistrés dans une collection, validés par accident. Garder les valeurs d'authentification dans des variables d'environnement plutôt qu'en ligne dans les requêtes réduit ce risque.
Si vous appelez l'API d'inférence Hugging Face pendant la construction, Apidog stocke le jeton comme variable d'environnement et le transmet comme jeton d'authentification (bearer token) au moment de la requête, de sorte que le secret reste en dehors de vos requêtes enregistrées et peut être échangé à un seul endroit après une rotation. Cela facilite également la vérification de la réussite de la rotation : exécutez un appel avec le nouveau jeton et confirmez qu'il réussit, puis confirmez que l'ancien jeton renvoie maintenant un `401` ou un `403`. Pour savoir comment fonctionnent les jetons d'authentification, voir authentification de base vs jeton d'authentification.
Articles liés : l'analyse complète de la faille OpenAI et Hugging Face et la documentation des jetons d'accès Hugging Face.
FAQ
Dois-je renouveler si je n'ai pas été affecté ? Oui. Hugging Face a conseillé à tous les utilisateurs de renouveler, et après un incident, vous ne pouvez pas confirmer quels identifiants un attaquant a lus. Renouveler est peu coûteux ; supposer que vous étiez en sécurité ne l'est pas.
Comment savoir si mon jeton a été utilisé par quelqu'un d'autre ? Examinez votre liste de jetons d'accès, les commits récents, les changements d'organisation, la facturation et les applications connectées. Hugging Face n'expose pas de piste d'audit complète par jeton sur les comptes personnels, alors traitez tout jeton ayant partagé un environnement avec l'incident comme suspect et renouvelez-le.
La rotation va-t-elle casser mes scripts ? Seulement jusqu'à ce que vous mettiez à jour le jeton. Chaque script, notebook et tâche CI utilisant l'ancien jeton a besoin de la nouvelle valeur. C'est pourquoi un jeton par application est le modèle recommandé ; vous les remplacez un par un sans cascade.
Jeton de lecture ou jeton granulaire ? Utilisez `read` pour les tâches simples de téléchargement et d'inférence personnelles. Utilisez `fine-grained` pour la production, la CI et tout ce qui est partagé, car il limite l'accès aux ressources spécifiques que vous nommez.
Où le nouveau jeton doit-il résider ? Dans un gestionnaire de secrets ou une variable d'environnement, jamais dans le code source, une cellule de notebook ou un document partagé. Stockez-le une fois et référencez-le partout ailleurs.
