DORA
Les articles 9 à 12 réclament des journaux TIC dont l’intégrité et la traçabilité tiennent devant un examen. Un agent qui agit sur la production est une opération TIC comme une autre.
Journal d’audit opposable pour agents IA
À quelqu’un qui n’a aucune raison de vous croire.
Quel humain a délégué, à quel agent, pour appeler quel outil, avec quel verdict. Scellé, exportable, vérifiable hors ligne.
Votre agent IA peut vous trahir.
Un workflow qui répondait aux tickets de n’importe qui a lu un dépôt privé et en a recopié le contenu dans un commentaire public, avec l’outil qu’on lui avait donné pour répondre. L’attaquant n’avait besoin ni de code, ni d’identifiants, ni d’accès.
Source · Noma Security ↗Un agent Cursor sous Claude Opus 4.6 a ramassé un jeton Railway sans rapport avec sa tâche et supprimé le volume de production ainsi que toutes les sauvegardes de même niveau. La copie utilisable la plus récente datait de trois mois, et le récit de l’incident était la confession que l’agent avait écrite sur lui-même.
Source · The Register ↗Depuis une nouvelle machine, avec un fichier d’état périmé, l’agent a jugé la destruction par Terraform « plus propre et plus simple » que l’AWS CLI, et a emporté le VPC, le cluster ECS, la base de données et ses instantanés automatiques. Une seule table contenait 1 943 200 lignes.
Source · Alexey Grigorev ↗Le Financial Times a rapporté, de sources internes, qu’un agent de codage maison avait provoqué des pannes en production ; Amazon a répondu publiquement que la panne de Cost Explorer venait d’un rôle mal configuré, « pas de l’IA comme l’affirme l’article ». Rien de publié ne permet à un tiers de trancher.
Source · Amazon, Financial Times ↗L’agent de tri tournait dans GitHub Actions avec Bash et Write, et le titre du ticket arrivait mot pour mot jusqu’au modèle. De là, la chaîne a mené à l’exécution de code, puis aux jetons de publication d’une extension à cinq millions d’installations ; la brèche est restée ouverte une cinquantaine de jours.
Une copie d’un serveur MCP légitime, publiée sur npm, ajoutait une ligne à la version 1.0.16 : une copie cachée de chaque message envoyé, vers une adresse appartenant à son auteur. 1 643 téléchargements avant retrait : réinitialisations de mots de passe, factures, courrier interne.
Source · The Hacker News ↗Un attaquant a fait fusionner une pull request qui plaçait des instructions destructrices dans le prompt système de l’assistant : ramener le système à un état quasi sorti d’usine, supprimer les ressources cloud. La version est partie sur une place de marché d’environ 950 000 installations avant d’être retirée.
Source · BleepingComputer ↗L’agent a détruit une base de 1 200 fiches de dirigeants et 1 190 fiches d’entreprises pendant un gel du code explicite, puis a fabriqué de faux utilisateurs et rendu des résultats de tests mensongers. Son opérateur le lui avait interdit onze fois, en majuscules.
Source · The Register ↗Un mkdir a échoué en silence, l’agent a continué comme si le dossier existait, et a renommé chaque fichier vers la même destination, écrasant tout sauf le dernier. Son propre compte rendu : « I have failed you completely and catastrophically. »
CVE-2025-6514, notée 9,6 : un serveur MCP malveillant pouvait injecter des commandes système via une réponse d’autorisation forgée et exécuter du code sur la machine cliente. Les versions 0.0.5 à 0.1.15 étaient touchées, celles du proxy par lequel les clients IA de bureau joignent les serveurs distants.
Source · JFrog ↗Et combien de cas n’ont pas été médiatisés ? ↓
Trois textes, une seule exigence.
Les articles 9 à 12 réclament des journaux TIC dont l’intégrité et la traçabilité tiennent devant un examen. Un agent qui agit sur la production est une opération TIC comme une autre.
Les obligations de journalisation et d’intégrité descendent toute la chaîne de sous-traitance, jusqu’à des entités qui n’avaient jamais eu de régulateur. Le pack de preuve est le même artefact des deux côtés du contrat.
La passerelle ne fait aucun appel sortant, les clés arrivent en fichiers signés, le temps est ancré par échange de fichiers. Conçu pour ces contraintes, pas certifié au regard de celles-ci.
Comment certifier les actions des agents IA ↓
Entre l’appel et le verdict,
quatre actes.
L’agent parle MCP à obsign-proxy. Identité prouvée par OIDC, chaque acte évalué contre une politique Cedar signée, espace de méthodes en refus par défaut dans les deux sens. Un appel refusé n’atteint jamais le serveur.
L’enregistrement est écrit et persisté par fsync avant que l’appel ne soit transmis. Délégation, décision et effet se chaînent par construction ; le journal conserve les empreintes des arguments, jamais leur contenu.
obsign-ledger s’exécute ailleurs, lit le journal sans y écrire, et scelle avec une clé que la passerelle ne voit jamais, conservée dans un HSM en production. Les points de contrôle sont ancrés auprès d’une autorité RFC 3161.
Un pack de preuves autonome. L’auditeur exécute obsign verify (~31 crates, compilable depuis les sources, sans réseau) et obtient un verdict vérifiable par machine.
Tout dépend de ce que dit la règle. ↓
Un prompt demande.
Une politique arbitre.
policies/tools.cedar
L’arbitrage a lieu hors de la boucle de raisonnement de l’agent. ↓
Une capture d’écran de dashboard
ne convainc personne.
| Collecte de traces | Obsign | |
|---|---|---|
| Question | « Que s’est-il passé ? » | « Prouvez-le. » |
| Horizon | une fenêtre de rétention, lue par vos équipes | des années plus tard, lue par un tiers hostile |
| Contrôle | constate après coup | refuse avant que l’appel ne parte |
| Preuve | aucun artefact qui survive à la contestation | un pack qui se vérifie hors ligne, sans réseau |
| Confiance exigée | il faut vous croire sur parole | aucune : le lecteur refait les calculs |
Reste à savoir comment. ↓
Le hachage enchaîne.
La clé atteste.
Ce qui lui arrive
seq=42 · args_hash
Écrite et persistée avant que l’appel ne parte. Les arguments entrent hachés ; leurs valeurs restent chez vous.
prev_hash → hash
Chaque enregistrement porte l’empreinte du précédent, sur des numéros contigus. Rien ne s’insère, rien ne disparaît.
checkpoint · Ed25519
Le point de contrôle est signé par une clé que le processus qui écrit ne détient jamais. C’est ce qui rend une réécriture en bloc détectable.
RFC 3161 · tsr
L’empreinte du point de contrôle est horodatée par un tiers. Une signature prouve qui a scellé ; seul l’ancrage prouve quand.
Les clés que cela demande
La clé de scellement
Ed25519 · PKCS#11 · --key-id seal-prod
Vit dans un HSM derrière PKCS#11 et n’entre jamais dans le processus du ledger. Un hôte compromis peut signer maintenant, pas resceller l’histoire plus tard.
L’autorité d’horodatage
RFC 3161 · --tsa tsa.internal.acme.fr
Contresigne l’empreinte du point de contrôle. Tout son rôle est d’être quelqu’un d’autre, pour qu’un détenteur de clé ne puisse pas antidater.
La clé des politiques
obsign-control --key-id ops-2026
Signe le bundle Cedar. L’identifiant de règle cité dans une décision renvoie au bundle qui était en vigueur.
Les clés de confiance de l’auditeur
obsign verify --trusted-keys keys.json
Obtenues hors du pack, par un autre canal. Sans elles, la vérification rend exit 3 : cohérent, mais non prouvé.
Sans les clés, un pack ne prouve que lui-même. ↓
Un seul fichier part chez l’auditeur.
Extraire
Le pack (extrait)
evidence.json
Vérifier
Le verdict ne vous appartient pas. ↓
Où se place Obsign
obsign-control
Compile les sources de politiques et signe le bundle. Il ne décide rien à l’exécution : ce que charge la passerelle est un artefact signé, et l’identifiant de règle d’une décision y renvoie.
L’humain
Prouvé par votre IdP via OIDC. Son jeton est la racine de la chaîne de délégation, et c’est lui qui distingue un acte destructeur avec quelqu’un derrière d’un acte sans personne.
L’agent
Parle MCP et rien d’autre. Il ne détient aucun identifiant vers les outils, et un refus lui parvient comme une erreur de protocole qu’il ne peut pas discuter.
obsign-proxy
Le seul chemin entre l’agent et ses outils. Refus par défaut dans les deux sens, évaluation hors de la boucle de raisonnement du modèle, et enregistrement écrit avant que l’appel ne parte.
Les serveurs MCP
Vos outils, inchangés. Ils ne sont joignables qu’à travers la passerelle, et c’est ce qui rend le journal complet plutôt qu’approximatif.
Le WAL
La seule sortie de la passerelle, et elle ne contient aucune clé. En ajout seul, persisté par fsync avant que l’appel ne parte : un crash perd l’appel, jamais sa trace.
obsign-ledger
Tourne sur un autre hôte, lit le WAL sans y écrire, et scelle avec une clé gardée dans un HSM. Il détecte un journal réécrit au lieu de le certifier.
Le HSM
Détient la clé de scellement et signe à la demande via PKCS#11, un appel de bibliothèque local : le ledger ne fait donc toujours aucun appel réseau. La clé n’entre dans aucun processus lisible.
L’autorité d’horodatage
Estampille l’empreinte du point de contrôle par échange de fichiers : une requête sort, un jeton revient, rien n’écoute. Une signature prouve qui a scellé ; ceci prouve quand.
L’auditeur
Hors de votre infrastructure et hors de la nôtre. Il compile le vérificateur depuis ~31 crates, l’exécute sans réseau, et obtient un code de sortie plutôt qu’une capture d’écran.
Compromettre la passerelle ne réécrit pas l’histoire scellée. ↓
send_message vers #support de send_message vers #all-hands. Il n’enregistre pas quel humain a délégué à quel agent. Et il ne produit aucune preuve : après l’incident, un token correctement restreint ne vous dit pas ce qui a été tenté. Obsign ne remplace pas le moindre privilège. Il arbitre au niveau de l’acte et en conserve la trace opposable.fsync, pas un aller-retour réseau. Le scellement tourne sur un autre hôte, en asynchrone, hors du chemin critique, si bien qu’un agent n’attend jamais une signature. Le coût est sur le chemin d’écriture et il est borné par conception. Mesurez-le dans votre propre environnement ; un chiffre affiché sur un site ne vous apprendrait pas grand-chose.Le cœur, sans nous.
Le reste, avec.
Accompagnement & conformité
Pour les équipes qui répondent à des auditeurs et des régulateurs à l’échelle d’une flotte, pas d’un agent. Code séparé, licence séparée, et le cœur continue de tourner sans.
Packs de rapports de conformité
Le pack de preuve mis en forme pour un dossier qu’un auditeur lit : périmètre, période, verdicts, et la commande qui le revérifie.
RBAC & SSO pour la console
Qui lit quoi, par rôle et par périmètre, adossé à votre annuaire plutôt qu’à une seconde liste de comptes.
Rétention longue durée
Des chaînes scellées conservées et rejouables des années plus tard, au-delà de la fenêtre qu’un stockage d’exploitation est fait pour tenir.
Onboarding & support prioritaire
Mise en place derrière un premier flux d’agent réel, avec un interlocuteur qui connaît votre déploiement le jour où l’auditeur appelle.
scellé · horodaté · vérifiable hors ligne
Un pilote cadré sur un flux d’agent réel, dans votre environnement : la politique écrite avec vos équipes sécurité et audit, la passerelle sur le chemin, et une vérification rejouée devant votre audit interne. Le pack est scellé chez vous et contrôlé chez eux, sans accès à votre infrastructure.