l'audit adversarial
Ce n'est pas un audit. C'est une discipline.
N'importe qui peut lancer un contrôle de sécurité une fois et faire une capture d'écran du vert. Le plus difficile, c'est de continuer à attaquer son propre système à mesure qu'il grandit, et d'obtenir la même réponse à chaque fois. Le dernier cycle : un audit à 50 agents, ses correctifs livrés, puis un nouvel audit adversarial à 14 angles distinct, où chaque constat devait survivre à un sceptique avant de compter. Ce qui tient, tient.
ce que le dernier audit a couvert
D'abord le périmètre, la méthode et les limites. Le nombre d'agents ensuite.
Issu du dernier audit du cœur, daté du 25 septembre 2026. Le nombre d'agents indique à quel point un audit a été chargé, pas sa qualité, alors voici ce que celui-ci a réellement fait.
- Code
- Le package cœur, 162 fichiers et 17,362 lignes, à un commit fixe, plus le code de la passerelle nécessaire pour déterminer si chaque chemin est actif.
- Accès
- Le code source complet, et une base de données neuve construite à partir des migrations. Pas la base de production ; les réglages propres à la production ont été marqués non vérifiés et je les ai vérifiés ensuite.
- Méthode
- Quatre relecteurs ont chacun lu une couche en entier. Un responsable a relu chaque constat par rapport au fichier, et exécuté chaque affirmation de timing ou de motif, avant qu'il ne compte.
- Gravité
- ÉLEVÉE signifie une crise manquée ou un déni de service sur un chemin actif, une fuite entre tenants, ou de l'argent perdu. Moyenne signifie un garde-fou qui échoue en mode ouvert, un crédit créé à partir de rien, ou des données supprimées silencieusement. Chaque constat est aussi marqué actif ou latent : atteignable en production aujourd'hui, ou non.
- Désaccord
- Un constat que le responsable n'a pas pu reproduire a été écarté ou marqué non vérifié, pas intégré dans une moyenne.
- Résultat
- 2 constats de gravité ÉLEVÉE et 13 de gravité moyenne. Tous corrigés le jour même, chacun avec un test qui échouait sur l'ancien code, et la suite complète relancée en CI.
- Non couvert
- La fidélité d'environ 7,000 lignes de chaînes de sécurité traduites, la base de données de production, la configuration du serveur web, et 17 constats de gravité faible encore ouverts.
Mené en interne par des relecteurs IA que j'ai dirigés, pas une assurance indépendante par un tiers.
la cadence
Réattaqué, tour après tour. Chaque constat inter-tenants ci-dessous a été trouvé par un audit, pas signalé par un client, et corrigé.
✓ joyaux de la couronne tenus à chaque tour, isolation · argent · gouvernance · SSRF · domaines de jetons
trois des vrais
ÉLEVÉ Fuite de conversation entre tenants
La mémoire de conversation était indexée par l'expéditeur, et non par le locataire : un client ayant écrit à deux entreprises via la plateforme pouvait voir la conversation de l'une apparaître dans le prompt de l'autre. Corrigé : l'historique est indexé par entreprise au niveau du stockage, avec un test qui échoue si l'ancienne clé réapparaît. Elle a été trouvée par l'audit, et non signalée par un client.
HIGH Un fournisseur qui vide un appelant
Dans l'économie d'outils inter-tenants, un fournisseur pouvait augmenter le prix d'un outil accordé après qu'un appelant avait commencé à l'utiliser, et vider son solde. Corrigé : l'appelant consent à un prix par appel, en fail-closed. Pas de consentement, pas de facturation, et c'est appliqué avant qu'un seul crédit ne bouge.
ÉLEVÉ Crise derrière le compteur
La vérification de facturation s'exécutait avant la vérification de crise, donc un client en détresse écrivant à une entreprise à court de crédits recevait « indisponible » au lieu d'une ligne d'écoute de crise. Corrigé : la crise est prise en charge gratuitement, avant tout plafond et tout débit, sur chaque surface client.
Les angles d'analyse couvrent isolation · auth · injection · argent · gouvernance · réservation · canaux · le résident autonome · droits sur les données (GDPR/PECR) · le générateur de sites · frontend · ops. Verdict, à chaque passe : zéro critique en suspens ; l'isolation des tenants et la surface XSS sont revenues propres ; aucun contournement d'auth actif : chaque cas limite confirmé a été corrigé et redéployé.
les chiffres honnêtes
Chaque chiffre, avec son astérisque déjà attaché.
La plupart des bâtisseurs en rajoutent. Je préfère que vous fassiez confiance aux parties réelles plutôt que d'être impressionné par celles qui ne le sont pas.
Le système est honnête parce que la personne qui l'a conçu l'est. J'y ai veillé dès le départ : intégré, pas ajouté après coup.
l'invitation
Les chiffres tiennent. Astérisques compris.
Si vous voulez un bâtisseur qui attaque son propre travail aussi durement avant que quiconque le demande, et qui continue à le faire à mesure que le système grandit, parlons-en.
Posez une question sur les audits : ce qui a été trouvé, ce qui est corrigé, ce qui reste ouvert.
- Qu'est-ce qui reste ouvert ?
- Quel a été le pire problème trouvé ?
- Qui a mené ces audits ?