Zedmos

Sécurité de l'IA

Autorisez l'IA. Sans la perdre de vue.

Vos collaborateurs utilisent déjà des assistants que vous n'avez pas choisis, et de plus en plus les outils installés sur leurs machines font de même — des agents de code qui lisent un dépôt, des scripts qui tournent à la vitesse de la machine, des clients MCP qui appellent des outils d'eux-mêmes. Ceci les voit tous sur le fil : quel service, utilisé par qui, traitant les données où, approuvé ou non — puis vous laisse décider qui peut utiliser quoi, et inspecte ce qui sort avant que cela ne parte. Sur votre propre pare-feu, avec le modèle qui juge tournant sur votre matériel.

17
Règles de fournisseurs, assistants et agents de code
69
Détecteurs de contenu en 8 groupes
5
Classes de clients, décidées sur des preuves
0
Requêtes envoyées à un tiers pour être jugées

Ce qui va de travers, et ce qui y répond

Le risque : personne ne sait ce qui est utilisé

Les assistants arrivent sans décision d'achat. Quelqu'un s'inscrit, quelqu'un d'autre installe une extension d'éditeur, et la première réponse honnête à « quels services d'IA utilisons-nous ? » est une supposition. On ne peut pas écrire de politique pour un trafic qu'on ne sait pas nommer.

Visibilité : l'inventaire, pris sur le fil

Chaque service d'IA vu dans votre trafic, avec l'éditeur qui se trouve derrière, le lieu où il traite les données, et le fait que vous l'ayez approuvé ou non. Dix-sept règles de fournisseurs couvrent les assistants et, séparément, les agents de code — Cursor, Codeium, Windsurf, Tabnine et GitHub Copilot — plus une règle attrape-tout pour tout ce qui est par ailleurs classé comme IA. Rien n'est installé sur un portable pour obtenir cela.

Le risque : l'appelant n'est pas toujours une personne

Un agent de code qui lit un dépôt, un script avec une clé d'API empruntée, un client MCP qui appelle des outils de lui-même — tous trois atteignent le fournisseur que vos équipes utilisent, et un filtre qui ne connaît que la destination écrit la même ligne de journal pour une personne et pour une boucle.

Contrôle : une règle par type d'appelant

Navigateur, SDK, agent, MCP ou inconnu — chacun reçoit sa propre action, et une action différente par fournisseur quand cela compte. En plus : listes d'autorisation et de blocage côté client, noms d'outils qu'une requête peut porter, limite de débit par source, plafond de taille de requête. La classe est décidée avant la lecture du corps : un appelant peut donc être refusé sans inspecter un seul mot de ce qu'il a écrit.

Le risque : ce qui est tapé, et ce qui revient

La fuite, c'est la requête. Du code source, une liste de clients, un identifiant collé par commodité. Et la réponse pose son propre problème : on peut amener un assistant à écrire l'instruction qui fait les dégâts.

Protection : inspecté avant de partir

69 détecteurs de contenu en 8 groupes — identifiants nationaux de 22 pays, secrets cloud, données personnelles et de paiement, injection de requête, et huit pour les instructions qui transforment un assistant en arme contre vous : un script redirigé vers un shell, un shell inversé, une instruction d'exfiltration, une tentative de faire franchir à un agent ses propres garde-fous. Le trajet retour peut aussi être écouté ; il y marque et consigne, sans jamais bloquer.

Le verdict est rendu chez vous

Le texte non structuré est jugé par un modèle de langue qui tourne sur votre propre matériel. Aucune requête, aucun envoi de fichier et aucun extrait n'est transmis à un tiers pour être noté — c'est la différence entre un contrôle que vous pouvez inscrire dans une réponse d'appel d'offres et un contrôle qui y ajoute un sous-traitant.

Désactivé tant que vous ne l'activez pas

La classification tourne toujours : l'inventaire et la classe figurent donc dans l'enregistrement de flux dès le premier jour, et vous pouvez voir ce qui circule déjà avant de décider quoi que ce soit. Les contrôles sont un interrupteur distinct, désactivé par défaut, réglé par groupe de politique.

Cinq clients, une destination, cinq réponses différentes

Tous les cinq atteignent le même fournisseur d'IA à une minute d'intervalle. Un seul est une personne.

1Le corpsce que la requête a réellement fait"jsonrpc":"2.0" · "method":"tools/call" · tool_resultsimpossible à feindre sans le faire2Les en-têtesce que la pile du client émet sans qu'on le lui demandex-stainless-* · client hints · fetch metadatapas choisi par celui qui a écrit le script3Le User-Agentce qu'il dit être"Mozilla/5.0 (Windows NT 10.0; Win64; x64) …"une ligne, n'importe qui peut l'écriresupplanté par 1 et 2CLASSEbrowsersdkagentmcpunknown
La ligne 3 est la seule qu'un filtre par destination lit. Trois lectures d'une même requête, la plus difficile à feindre en haut. Un client qui se dit navigateur en ligne 3 et n'envoie aucun en-tête de navigateur en ligne 2 est classé d'après ce qu'il a fait, pas d'après ce qu'il a dit — et l'exploitant voit le nom qu'il prétendait porter.
Ce qui atteint le fournisseurCe que voit un filtre par destinationCe que voit ce moteur
Quelqu'un au marketingun onglet, une question
trafic vers un fournisseur d'IA
BROWSERchromeenvoie les en-têtes propres à un navigateurAutorisé
Un script nocturnerésumés en lot
trafic vers un fournisseur d'IA
SDKpython-httpxle transport SDK s'annonce lui-mêmeJournalisé
Un assistant de codelit le dépôt
trafic vers un fournisseur d'IA
AGENTclaude-coderésultats d'outils renvoyés au modèleJournalisé avec les noms d'outils
Un client MCPappelle un outil
trafic vers un fournisseur d'IA
MCPmcp-clienttrame JSON-RPC, méthode tools/callread_file refusé
Un script déguiséprétend être Chrome
trafic vers un fournisseur d'IA
SDKspoofed-chromese dit navigateur, n'envoie aucun de ses en-têtesBloquée
C'est la dernière ligne qui compte. Tout filtre qui fait confiance au User-Agent le laisse passer comme une personne — c'est précisément le trou que ceci existe pour fermer.