Le blog sécurité de HisnLabs

Par HisnLabs Security & Research Team · Publié · 3 min de lecture

Pourquoi un garde-fou IA doit se placer sur le chemin de la requête

Pourquoi un garde-fou IA doit se placer sur le chemin de la requête

Un garde-fou qu’une application doit penser à appeler finit tôt ou tard par être oublié : un nouveau point d’accès, une livraison pressée, un script écrit en un après-midi. L’endroit fiable pour un contrôle, c’est le chemin de la requête lui-même : rien n’atteint le modèle, et rien n’atteint l’utilisateur, sans le traverser.

C’est ainsi que Guardrino est proposé. L’API d’inspection reste, pour les applications qui veulent poser une question. Les intégrations ci-dessous placent Guardrino là où le trafic passe déjà ; la liste finale indique ce qui est disponible aujourd’hui.

Chaque chemin applique les mêmes contrôles que l’API d’inspection : une seule politique et un seul journal d’audit les couvrent tous. La documentation développeur de HisnLabs consacre une page au proxy, à LiteLLM et à MCP, avec des exemples et les limites qui subsistent.

Un proxy compatible OpenAI : une seule URL à changer

Guardrino expose POST /v1/chat/completions. Une application qui parle l’API de chat OpenAI ne change que son URL de base. Guardrino vérifie les tours de l’utilisateur, le contexte que le modèle lit comme donnée (résultats d’outils, documents, et images ou fichiers, qui passent d’abord par le service d’extraction) et la réponse. Un refus revient au format d’erreur OpenAI : la gestion d’erreurs existante de l’application continue de fonctionner.

Les réponses en streaming sont vérifiées au fil de l’eau

Une réponse qui arrive par morceaux ne peut pas être jugée seulement à la fin. Guardrino lit une réponse en streaming à mesure qu’elle grandit. Si elle enfreint la politique, le flux se termine par un événement d’erreur. Les morceaux déjà envoyés ne peuvent pas être rappelés ; quand rien ne doit être affiché avant vérification, buffer_output = true retient la réponse jusqu’à ce qu’elle ait été validée en entier.

Chaque modèle derrière LiteLLM

Les équipes qui font passer de nombreux modèles par LiteLLM ne veulent pas un garde-fou par modèle. Guardrino peut s’exécuter comme garde-fou personnalisé LiteLLM, avant et après l’appel, ou se placer devant LiteLLM avec LiteLLM pour amont. Dans les deux cas, un seul jeu de contrôles couvre chaque modèle derrière.

Outils MCP : descriptions et résultats sont aussi des entrées

Un agent lit la description d’un outil comme une instruction, et le résultat d’un outil comme une information fiable. Les deux sont des textes écrits par quelqu’un d’autre. Le proxy de sécurité MCP se place entre l’agent et ses serveurs MCP. Il vérifie les descriptions d’outils lorsque les outils sont listés, les arguments sortants (jeton canari, données personnelles, URL), et lit les résultats qui reviennent comme contexte, par fenêtres.

  • Les descriptions sont vérifiées quand les outils sont listés.
  • Les arguments sont vérifiés à la sortie.
  • Les résultats sont vérifiés au retour, comme tout document lu par le modèle.

Où en est chaque intégration

  • API d’inspection : Disponible
  • Proxy compatible OpenAI : Disponible
  • Contrôle du streaming (server-sent events) : Disponible
  • Plug-in garde-fou LiteLLM : Disponible
  • Proxy de sécurité MCP : Disponible

Le plugin LiteLLM, ses tests et des exemples prêts à l’emploi pour le proxy, le streaming et MCP sont en open source sur GitHub, sous licence Apache-2.0.

Le rôle de Guardrino et de HisnLabs

Guardrino est conçu pour se placer sur le chemin de la requête : un proxy compatible OpenAI, un garde-fou LiteLLM et un proxy de sécurité MCP sont disponibles, de sorte que le contrôle a lieu là où le trafic passe déjà.

Sources