Said SAADISecurity Officer

Méthode

Comment je travaille

Mes principes

Une preuve pour chaque résultat

Chaque résultat porte sa source : un export, une capture, un test rejoué. Je sépare ce qui est prouvé, ce qui est seulement déclaré et ce qui est prévu.

Mesurer avant et après

Un durcissement se prouve par deux états relevés par le même script, avant et après. Sans état initial, il n'y a rien à comparer.

Un test témoin avant de conclure

Avant de conclure qu'une attaque échoue, je rejoue le test sur un cas où elle doit réussir. Sinon, je ne sais pas si c'est le test qui échoue.

Le périmètre d'abord

Avant tout test, je lis le périmètre, les exclusions et les règles de divulgation, mot pour mot. Ce qui n'est pas autorisé par écrit ne se teste pas.

La gravité réelle, sans gonfler

J'annonce un constat au niveau que je peux défendre : un Medium annoncé Medium vaut mieux qu'un Critical qui s'effondre à la revue.

Écrire aussi ce qui n'a rien donné

Un « aucun constat » établi avec méthode est un livrable : il montre ce qui a été couvert et ce qui reste à vérifier.

IA appliquée

L'IA, avec des règles écrites

J'utilise l'IA générative tous les jours. Sur mes labs et mes projets, je pilote Claude Code comme un agent d'exécution : il écrit et lance le code d'infrastructure et les scripts ; je fixe le périmètre, je relis, je vérifie les résultats et je présente le travail. Les fiches précisent le rôle de l'IA quand il est central.

Un agent qui a des droits est un compte à privilèges : je l'encadre comme tel.

  • Périmètre écrit. Runbooks et mandats rédigés pour l'agent, exclusions reprises mot pour mot.
  • Moindre privilège. Outils déclarés, jetons à droits limités, variables d'authentification retirées de l'environnement.
  • Relecture avant toute modification. Plan relu et instantané pris avant toute action qui modifie l'infrastructure.
  • Actions réservées à l'humain. Authentification, identifiants, comptes réels : l'agent s'arrête, je vérifie que l'action est dans le périmètre écrit, puis je décide.
  • Données sensibles en local. Les données confidentielles vont vers un modèle local, comme dans le projet de SOC.

Post-mortem

J'ai laissé un agent appliquer un plan sans relecture : 17 VM détruites

  1. Faits

    Sur la maquette YASSA BANK, j'ai laissé l'agent lancer tofu apply -auto-approve sans sa variable de phase. Le plan prévoyait la destruction de 17 VM, et un filtre sur la sortie l'a masqué.

  2. Cause racine

    L'agent avait le droit de détruire, et rien n'imposait de relire le plan avant de l'appliquer.

  3. Impact

    Toute la maquette à refaire, à quelques jours de la soutenance.

  4. Reprise

    Tout a été reconstruit depuis le code en 1 h 30.

  5. Correctifs

    Plan relu et destructions comptées avant chaque apply, prevent_destroy sur les VM, script qui refuse toute destruction, sortie jamais filtrée.

Sécurité des systèmes IA

Ce que j'ai vu casser

En orchestrant des agents de test d'intrusion sur des machines d'entraînement, j'ai vu des failles propres aux outils IA. C'est ce qui me fait traiter un serveur MCP comme une surface d'attaque.

  • Serveur MCP exposé. MCPJam Inspector (CVE-2026-23744) : une configuration de serveur stdio suffit à exécuter une commande.
  • Modèle piégé. Un modèle MLflow désérialisé par pickle exécute du code au chargement.
  • Jetons qui fuient. Jetons Jupyter et Flowise visibles dans la ligne de commande ou la configuration.
  • Données qui sortent. D'où le routage des données confidentielles vers un modèle local.

Bug bounty

La méthode appliquée à des programmes publics

La fiche du projet

Immunefi, Code4rena et YesWeHack, d'avril à octobre 2026 : audits de smart contracts sur des copies locales de la blockchain, tests d'autorisation d'API, toujours dans le périmètre écrit du programme. Aucune prime à ce jour, et aucun détail de faille ici : les programmes interdisent la divulgation.