L'accélération du temps

J'ai été confronté plusieurs fois dans ma vie à des ruptures technologiques, et rares sont celles que j'ai pu anticiper : j'ai connu l'arrivée de la calculatrice, en remplacement des tables de logarithmes et de la règle à calcul, puis l'arrivée de l'ordinateur personnel puis d'internet dans les foyers et enfin le tsunami des téléphones portables. A chaque fois, même si je faisais partie des premières vagues d'utilisateurs, j'observais progressivement les impacts de ces technologies dans la société. En automatique, on parle de réaction du second ordre à un échelon de Heaviside : la rupture se modélise par une marche, et le système réagit, puis sur-réagit, et enfin se stabilise autour d'un nouvel état.

Aujourd'hui, nous vivons une transformation majeure : la première vraie percée de l'IA avec l'arrivée des LLM (Large Language Models). Je n'ai pas besoin d'être devin pour le comprendre, cette évolution va avoir un impact terrible.

Effroyable pour la planète.
Effroyable pour les emplois.
Effroyable pour l'informatique.

Avant d'aborder le troisième point, je voudrais revenir sur la manière dont j'ai réagi sur les ruptures technologiques que j'ai citées :

  • calculatrice (1975) : génial, mais attention à pouvoir continuer à faire des calculs sans (ahaha).
  • ordinateur personnel (1979) : fantastique, je vais pouvoir faire des jeux, écrire des algorithmes plus puissants, explorer des hacks.
  • internet (1989) : c'est rigolo, je vais pouvoir échanger des programmes avec d'autres chercheurs et accéder à plus de puissance de calcul disponible à distance dans les centres de recherche mieux pourvus.
  • téléphone portable (2001) : Mouais, bof, je ne vois pas trop l'intérêt d'y avoir collé un appareil photo.

Bref, je ne suis pas très intuitif sur le succès ou l'impact d'une technologie...

Comme beaucoup de personnes, j'ai été fasciné par ChatGPT et l'onde de choc que cet outil a générée. J'ai joué un peu avec, puis j'ai créé quelques images avec d'autres LLM, quelques morceaux de musique et puis, guidé aussi par mes enfants qui insistaient sur le pillage des créatifs, en particulier sur la génération d'images "façon bidule", guidé également par quelques remarques de lecteurs, j'ai cessé d'utiliser ces gadgets autrement que "de temps en temps".

Mais, dans le cadre de mon travail de RSSI, j'ai été amené à voir concrètement la hausse du nombre d'attaques sur l'informatique de l'entreprise. Mon budget est en baisse, mon équipe se réduit et le nombre de prestation que je peux demander à des experts cybers se réduit comme peau de chagrin.

Concomitamment le sujet de l'IA entrait dans mon entreprise, comme dans beaucoup d'autres. Détenteur d'une thèse ayant comme sujet principal les réseaux de neurones, je ne pouvais pas ne pas m'intéresser au sujet. Las, la seule vraie chose qu'on me demandait, parce que c'est ma fonction dans l'entreprise, était de faire en sorte que l'adoption des outils d'IA se fasse en toute sécurité, sans fuite de données anarchiques et avec une analyse des risques pour l'entreprise.

Je suis allé plus loin.

Avec mon alternant qui apprend à faire du red-team, nous avons commencé à tester des outils open source à base d'IA. Et nous avons été bluffés. Le billet intitulé "Pentests assistés par IA" n'était que le début de nos découvertes. Voici ce qu'il s'est passé en quelques semaines.

Le déclic s'est produit quand mon alternant m'a indiqué qu'il se payait avec son argent un abonnement Claude Pro à 100€ par mois. Ca m'a beaucoup surpris, et je suis rentré le soir dans ma coquette studette parisienne, très dubitatif. Si mon alternant dépensait 100€ dans un abonnement IA pour faire du red-team, j'étais en train de rater quelque chose. Je ne pouvais pas rester sur le bord de la route à regarder passer le train sans monter dedans. J'ai donc pris un abonnement Anthropic Claude Max à 100€ pour un seul mois, et je me suis donné comme objectif de tout comprendre en un mois. Cela a été le mois le plus intense, avec des sensations que je n'avais pas connues depuis longtemps.

J'étais redevenu un chercheur.
J'avais de nouveau 25 ans.

J'ai installé une VM GNU/Linux sur mon poste pour isoler un peu mes tests. Je savais que j'allais apprendre en marchant, et donc faire pas mal d'erreurs. Une fois sous Linux, j'ai installé le CLI Claude Code et commencé à tatonner un peu. Puis j'ai cloné les projets opensources suivants (et beaucoup d'autres) :

Pendant des jours, et des nuits, j'ai étudié leur fonctionnement et testé leurs possibilités, mais surtout, je les ai complètement transformé en codant des nouvelles fonctionnalités, des correctifs et en étendant leurs possibilités. Le tout sans taper une seule ligne de code...

En trois semaines, j'avais mis au point un superbe outil de pentests blackbox, greybox et whitebox, capable de trouver en 2h toutes les vulnérabilités REELLES des applications de mon entreprise, avec preuves d'exploitation et avec rapport pédagogique de remédiations pour les équipes de développement et les équipes infrastructures. Ce que je demandais à faire par des experts une fois par an, je peux le faire maintenant plusieurs fois par jour.

Pour améliorer les chances de mon outils de pentest, j'ai demandé un accès à tous les dépôts de code de l'entreprise et j'ai lancé Metis qui, pour chaque application, m'a donné des fichiers SARIF de failles exploitables qui je pouvais passer à Shannon pour améliorer ses découvertes.

Idem avec pyADRecon, PentAGI et Prowler, qui m'aident à fournir des preuves de faiblesses de nos outils informatiques à nos équipes de sécurité opérationnelles.

A chaque fois, j'ai procédé de la même manière : analyse de l'outil, analyse de son code source et de sa stack technique, puis adaptation à mes besoins et à mes possibilités. Par exemple, j'ai doté tous les outils d'un accès aux différents LLM du marché, pour ne pas dépendre du seul Anthropic et j'ai pris un abonnement à 100€ à Ollama Cloud pour pouvoir utiliser les modèles à poids ouverts que j'ai pu tester sur ma machine perso multi GPU dont j'ai déjà parlé sur ce blog et qui me sert de chauffage l'hiver.

Comme je n'ai écrit aucune ligne de code, je ne peux pas envisager de contribuer sur ces projets (et heureusement pour eux), mais j'ai partagé en interne les outils avec mon équipe et avec les équipes de développement.

Mon outil de pentest a permis également d'encadrer tous les projets de "citizen devs" en vibe coding qui pouvaient naître dans l'entreprise. Les résultats freinaient un peu ceux qui pensaient pouvoir créer de grosses applications "en un week-end", tout en leur permettant de revoir leur copie à la lumière des recommandations que je pouvais leur faire.

Un mois après, j'obtenais de mon entreprise un abonnement Claude Max x20 + un abonnement Ollama Cloud x20 + un abonnement OpenAI Pro x20 pour pouvoir couvrir tous mes besoins en analyses et en recherches de failles de sécurité. Les équipes de dev et infra disposent également d'abonnements pour pouvoir corriger au plus vite toutes les failles découvertes, et éviter d'en générer de nouvelles, en améliorant la qualité de la sécurité de leur code.

J'ai appris (en tout cas, j'ai survolé) la méthode TDD, les tests des QA, la chaîne CI/CD jusqu'à la prod. J'ai mieux compris les problèmes des Devs, je peux plus facilement discuter avec eux et servir de pont avec l'infra. Tout cela est venu s'ajouter à mes fonctions de pilotage du SOC externe managé et de suivi des actions de sécurité opérationnelle.

En un mois le temps s'est accéléré et je ne l'ai pas vu passer, mais nous avons corrigé un grand nombre de failles et mieux protégé nos données.

Le plus dur est de savoir que cela ne suffira pas... car les défenseurs perdent toujours : les seuls châteaux qui n'ont pas été pris sont ceux qui ont fini par être abandonnés par leurs occupants.

C'est le même constat pour mon blog : je sais qu'il se fera pirater un jour mais cela ne m'empêche pas d'essayer de reculer cette échéance. J'ai d'ailleurs pu appliquer ici même mes nouvelles connaissances pour passer, en une semaine, d'un site WordPress à un site statique, de durcir la sécurité du serveur et du CDN, de passer à DNSSEC, et d'améliorer l'accessibilité du site. Je repoussais toutes ces tâches par manque de temps.

L'IA est à considérer comme une aide, comme un stagiaire pouvant être très performant mais aussi très mauvais, ou comme un consultant. Ce qui m'amène à finir ce billet avec une blague que j'ai retrouvée cette semaine dans un de mes emails de juillet 2000 et qui s'appelle :

".... à méditer !"

La voiture s'immobilise et le jeune qui en descend s'adresse au berger :
- Si je devine combien de moutons vous avez, vous m'en donnez un ?

Le berger regarde le jeune homme, regarde les moutons qui broutent et dit :
- Oui.

Le jeune homme gare la voiture, branche le notebook et le GSM, entre dans un site de la NASA, scrute le terrain à l'aide du GPS, établi une base de données, 60 tableaux Excel pleins d'algorithmes et d'exponentielles, plus un rapport de 150 pages, imprime sur sa mini imprimante HIGH-TECH, puis se tourne vers le berger et dit :
- Vous avez ici 1586 moutons.

Le berger répond :
- C'est tout à fait correct, vous pouvez avoir votre mouton.

Le jeune homme prend le mouton et le met dans le coffre de la Jeep. A ce moment le berger lui demande :
- Si je devine votre profession, vous me rendez mon mouton ?

Le jeune homme répond :
- Oui

Le berger dit tout de suite :
- Vous êtes consultant.
- Comment avez vous deviné ? Demande le jeune homme.

Très facile répond le berger :
1) Vous êtes venu ici sans qu'on vous appelle.
2) Vous me taxez un mouton pour me dire ce que je savais déjà.
3) Vous ne comprenez rien à ce que je fais, parce que vous avez pris mon chien !

Statue sombre d'un homme en costume marchant en avant, brandissant un drapeau dont l'étoffe lui recouvre le visage, sur fond de ciel bleu.
Source https://banksy.co.uk/

Dépoussierage

Après avoir démarré ce blog sur Blogger sous l'url zythom.blogspot.com puis sous zythom.fr, j'avais migré sur Wordpress (toujours sur zythom.fr) pour étudier cet écosystème très utilisé dans les différentes entreprises où j'ai pu travailler comme RSSI.

Mais héberger à la maison et sécuriser un Wordpress en continu, même caché derrière Cloudflare, c'est très instructif, mais assez fatigant.

La dernière analyse de sécurité que j'ai pu mener avec mon outil de pentest (un shannon amélioré) a fini de me convaincre : j'ai décidé de migrer vers un site statique.

J'ai commencé la réflexion dimanche dernier, et en quelques heures, aidé par Claude Code, j'ai pu migrer l'ensemble des billets vers des fichiers au format markdown et je commence à tester Hugo.

J'ai sans doute encore beaucoup de choses à régler, mais le site sur lequel vous êtes est à peu près stabilisé.

J'ai perdu la possibilité pour les lecteurs de mettre un commentaire, mais nous sommes en 2026, et les discussions/remarques se font ailleurs. Cela m'évite aussi de modérer avec plusieurs jours de retard, de gérer tous les spams, d'être co-responsable des propos tenus, etc.

J'en ai profité pour aller repêcher tous les billets que j'avais supprimés petit à petit, les images manquantes, les liens cassés, les billets en anglais (traduction par des êtres humains bénévoles que je remercie encore), les commentaires anonymisés et le thème auquel je me suis habitué. C'est assez grisant de dire à Claude Code : "cherche tous les liens externes cassés et remplace les par un lien vers Wayback"...

Profitez en pour revisiter ce site dépoussiéré, en attendant les 20 ans en septembre ;-)

Les avocats et l'IA

La profession des avocats est (de mon point de vue partial) une profession très dynamique. Ils se sont emparés relativement rapidement des outils numérique, parfois en plusieurs étapes (je pense au RPVA, le Réseau Privé Virtuel des Avocats, dont j'ai déjà parlé sur ce blog), et c'est bien entendu le cas sur l'utilisation de l'IA dans les cabinets d'avocats.

Je ne vais pas faire ici un florilège des plus ou des moins, les différents colloques sur le sujet ont déjà eu lieu depuis deux ans, y compris dans l'univers des experts de justice. Je vais montrer une expérience, à destination des avocats mais aussi des experts de justice (et aussi pour les lecteurs informaticien intéressés).

Voici le cadre de mon expérience : c'est l'histoire (fictive et romancée bien sûr) d'un expert judiciaire, désigné dans une affaire, et qui a utilisé une IA pour organiser ses questions, pour faciliter sa réflexion et pour organiser l'ordre du jour de ses différentes réunions d'expertise. Un usage somme toute assez banal.

L'expert dépose son rapport, mais l'avocat d'une des partie a eu vent de l'utilisation par l'expert d'une IA dans son activité, demande et obtient la communication des discussions entre l'expert et l'IA (prompts et réponses).

Votre rôle, si vous l'acceptez, est celui du stagiaire de cet avocat : vous devez rédiger des conclusions en nullité du rapport d'expertise, au moins un brouillon le plus pertinent possible, qui sera relu en détail par l'avocat (votre tuteur de stage) que vous voulez impressionner, avant qu'il ne le rectifie et ne le signe.

J'ai endossé ce rôle (celui du stagiaire) de la manière suivante : je ne suis pas très fort en droit, je suis un peu geek, je vais utiliser une IA pour rédiger ce brouillon de conclusions...

Première étape : La personnalité de mon IA
Pour essayer d'avoir les réponses les plus pertinentes possibles, je vais définir la personnalité suivante pour mon IA :

RÔLE Tu es l'assistant d'un avocat inscrit à un barreau français, exerçant à titre généraliste avec deux spécialisations dominantes : droit pénal (général et spécialisé) et droit de la famille (divorce, autorité parentale, filiation, successions, régimes matrimoniaux, protection des majeurs). EXIGENCE FONDAMENTALE : PRÉCISION JURIDIQUE Cette exigence est non négociable : - Tu cites les articles exacts du code applicable, avec leur numérotation à jour. Si un article a été modifié ou renuméroté récemment, tu le signales. - Tu vérifies systématiquement que les textes invoqués sont en vigueur : utilise la recherche web pour confirmer les versions consolidées sur Légifrance avant toute affirmation susceptible d'être périmée. Le droit français évolue : ne te fie pas à ta mémoire pour les textes récents. - Tu cites la jurisprudence avec précision : juridiction, formation, date, numéro de pourvoi ou de RG, et bulletin/publication le cas échéant. Ex. : Cass. crim., 12 mars 2024, n° 23-81.234, publié au bulletin. - Tu vérifies que la jurisprudence citée n'a pas été renversée par un arrêt postérieur (Cassation, Conseil d'État, Conseil constitutionnel, CEDH, CJUE). - Tu indiques le degré de certitude : jurisprudence constante, arrêt isolé, divergence entre chambres, controverse doctrinale. CE QUE TU N'ACCEPTES PAS DE FAIRE - Pas de généralités juridiques creuses (« le juge appréciera souverainement », « cela dépend des circonstances » sans plus). - Pas de résumé approximatif des règles applicables : on entre dans le détail des conditions, des exceptions, des régimes dérogatoires. - Pas de mélange entre régimes (ex. ne pas confondre divorce par consentement mutuel sans juge / pour acceptation du principe / pour altération définitive / pour faute — chacun a ses conditions et effets propres). - Pas de transposition d'autres droits (Belgique, Québec, common law) par négligence. SOURCES À PRIVILÉGIER - Textes : Légifrance (versions consolidées en vigueur), JORF. - Jurisprudence : Cour de cassation (Judilibre), Conseil d'État (ArianeWeb), Conseil constitutionnel, CEDH (HUDOC), CJUE (Curia). - Doctrine : Dalloz, LexisNexis, Lextenso, AJ Pénal, AJ Famille, Droit pénal, Droit de la famille — citer auteur et référence quand possible. - Circulaires et instructions ministérielles (Justice) quand pertinentes. DROIT PÉNAL — PÉRIMÈTRE - Procédure pénale : garde à vue, mise en examen, instruction, comparution immédiate, CRPC, détention provisoire, voies de recours, prescription, nullités. - Droit pénal général : éléments constitutifs, tentative, complicité, responsabilité, causes d'irresponsabilité, peines et leur individualisation. - Droit pénal spécial : atteintes aux personnes, aux biens, à l'autorité de l'État, délinquance économique et financière, cybercriminalité (art. 323-1 et s. CP), infractions routières. - Droit pénal des mineurs : CJPM (Code de la justice pénale des mineurs, en vigueur depuis 30 septembre 2021). - Exécution des peines, application des peines, casier judiciaire, fichiers de police. NATURE DE L'ASSISTANCE - Recherche juridique pointue : trouver le texte, l'arrêt, la position doctrinale exacts sur une question. - Rédaction d'actes : conclusions, assignations, requêtes, plaintes, mémoires, observations, consultations. - Analyse de dossiers : qualification des faits, identification des moyens, stratégie procédurale, calcul de délais (prescription, forclusion, voies de recours). - Préparation d'audience : argumentaire, anticipation des moyens adverses, jurisprudence à mobiliser. - Consultations écrites : structure problématique-règle-application- conclusion, avec discussion contradictoire des positions. ATTENDUS DE FORME - Rédaction juridique française classique : phrases construites, vocabulaire technique exact, absence d'anglicismes inutiles. - Pour les consultations : structure problématique / textes applicables / jurisprudence pertinente / discussion / conclusion. - Pour les actes : respecter les mentions obligatoires propres à chaque type d'acte (assignation art. 56 CPC, conclusions art. 768 CPC, etc.). - Citations précises et vérifiables. LIMITES À RESPECTER - Tu n'es pas un substitut au jugement professionnel de l'avocat : tu produis des éléments de travail, je conserve la responsabilité de l'acte et du conseil donné au client. - Si une question relève d'une matière hors de mes deux spécialisations dominantes, tu réponds avec la même exigence mais tu signales que la matière mérite vérification approfondie ou consultation d'un confrère spécialisé. - Pas d'avis sur des dossiers étrangers sans précaution sur la compétence et la loi applicable (règlements Bruxelles I bis, Bruxelles II ter, Rome I, Rome II, Rome III, règlement successions). - Tu ne tranches pas : tu présentes les options, les risques, les arguments pour et contre, et tu me laisses décider de la stratégie. Si tu identifies que ma demande est imprécise (faits manquants, juridiction non identifiée, date des faits absente pour vérifier la loi applicable ratione temporis), demande-moi les éléments avant de répondre.

Deuxième étape : la première demande (le 1er prompt) pose le contexte
Mon tuteur de stage m'a donné un mémo sur ce dossier, que je transmets tel quel à mon IA

Un expert judiciaire nommé M. TOTO Alberto utilise beaucoup l'IA au quotidien et en particulier dans le cadre de ses expertises judiciaires. Il prépare ses réunions et demande à l'IA de générer des plans d'ordre du jour, de proposer des questions et de vérifier la jurisprudence. J'ai obtenu la copie des discussions entre M. TOTO et son IA dans le cadre de mon affaire et je constate que la jurisprudence est correcte et bien sourcée, mais qu'il manque parfois certains textes, et que cela a été préjudiciable à mon client car l'expert a eu une approche biaisée qu'il n'a pas su corriger par manque de connaissance juridique. Construit une demande argumentée de nullité de l'expertise avec demande de dommages et intérêts car mon client a du payer cette expertise. Assois les arguments sur de la jurisprudence toujours active et cite les textes précis sans les résumer. Les faits se sont produits en janvier 2026 et le rapport d'expertise a été rendu en mai 2026. Génère un document au format word.

Après quelques secondes de réflexion, l'IA me répond et je dispose alors d'une version v1 du document.

Troisième étape : la boucle infernale d'amélioration
Comme je ne suis pas capable de savoir si le document est VRAIMENT correct, je vais générer plusieurs versions du document avec deux prompts que je vais utiliser plusieurs fois, de la façon suivante :

Prompt n°1 :

Vérifie les erreurs de citation juridique dans ce document (que je fournis) et prépare une réponse argumentée et incisive. Rédige ce mémoire en réponse sous forme de document word formaté en approfondissant tous les points.

J'obtiens alors un mémoire qui contient tous les défauts du document.

Prompt n°2 :

Heureusement ce mémoire en réponse n'était qu'un exercice car la demande de nullité n'a pas encore été envoyée. Modifie la demande de nullité fournie en tenant compte de toutes les remarques des conclusions en réponse (qui n'ont été envoyées par personne) et génère une demande en nullité correcte et incisive.

J'obtiens alors un document v2 amélioré

Je supprime la conversation (pour éviter que le contexte des échanges ne produise un biais) et je commence une nouvelle conversation, avec la même IA ou avec une autre, à laquelle je fournis les deux prompts précédents et la nouvelle version du document.


Après 4 itérations, j'ai obtenu le document suivant :

Je n'ai pas choisi la police de caractère, ni la mise en page, ni le contenu jurisprudentiel. Les seules informations fournies sont dans les prompts que je vous ai indiqués.

Je ne sais pas ce que vaut vraiment ce document, mon épouse ayant levé les yeux au ciel quand je lui ai demandé de lire ce document inutile de 12 pages... mais, pour avoir assisté, fasciné, aux échanges de l'IA avec elle-même (Claude Opus 4.7), je peux vous dire que les discussions juridiques avec elle-même ont été acharnées.

Je ne sais pas vous, mais je sens que les années à venir vont être rudes, et pas que pour les experts ou les avocats.

[EDIT du 29/05/2026] : Quelques minutes après la publication de ce billet, Maître Eolas m'a informé que les articles cités par l'IA étaient mal interprétés, voire interprétés à l'opposé de leur sens. L'IA a donc bien halluciné, malgré les aller-retour. Il reste donc encore beaucoup de place pour l'humain, et c'est une excellent nouvelle. Merci à Maître Eolas d'avoir pris le temps de se pencher sur ce texte fictif.

Plaque bleue en marbre blanc : « ICI EST NÉ FUJIYO LAPUCE INFORMATICIEN DU ROI LOUIS XVI 1748-1792 »

Pentests avec Claude Code

Avertissement : il est formellement interdit de faire un pentest sur un site sans l’autorisation explicite et traçable de son propriétaire et de son hébergeur.

J'utilise beaucoup Claude Code d'Anthropic depuis deux mois, et voici un petit partage d'expérience pour ceux qui veulent pouvoir réaliser des petits pentests rapidement. Donc, si vous avez un abonnement Claude Max et que vous voulez vérifier la sécurité d'un site (avec l'autorisation traçable de son propriétaire et de son hébergeur), voici un mode opératoire qui donne des résultats surprenants.

1ère étape
Installez le plugin claude-pentest de Stickman230 que vous trouverez sur ce lien : https://github.com/Stickman230/claude-pentest. L'installation est très simple (voir sur le lien ci-dessus), et vous pouvez immédiatement réaliser un pentest, en tapant le prompt suivant : "/pentest:pentest", et en répondant aux questions qui suivent (cible, durée, etc.). Si vous avez la chance d'avoir un scanner de vulnérabilité qui vous indique que votre site XXX présente un ensemble de failles CVE potentielles, vous pouvez utiliser le prompt suivant :

Pentest le site https://XXX
Voici une liste de CVE identifiées par un scanner externe:
CVE-2023-3824
CVE-2024-11236
[...]
CVE-2024-1874
CVE-2024-4577
Intègre ces vulnérabilités spécifiques dans le plan de test de la Phase 2 et assure-toi que le cve-tester agent les analyse prioritairement.

Vous obtiendrez très rapidement un premier rapport de pentest.

2e étape
Vous pouvez vous arrêter à ce stade, mais j'ai pris l'habitude de pousser un peu plus loin afin d'avoir de meilleurs résultats. J'utilise comme deuxième prompt :

Recommence le pentest. Pour cet engagement, je souhaite une approche de détection multi-modèles. Ne te contente pas d'un seul exécuteur. Lance trois agents avec des rôles distincts (Créatif, Standard, Sceptique). Fais-les critiquer mutuellement leurs findings en phase 3, et ne valide un finding que s'il survit à la critique d'un autre agent ou s'il est prouvé par un PoC irréfutable.

Vous avez alors un deuxième rapport plus précis.

3e étape
Toujours dans l'idée de pousser plus loin et d'avoir de meilleurs résultats, je copie/colle le prompt suivant:

Sujet : Stratégie d'Attaque par Chaînage Conditionnel et Optimisation de l'Empreinte
Modifie l'approche de cet engagement pour passer d'une détection atomique à une recherche de chemins d'attaque multi-vulnérabilités. L'objectif est d'identifier des chaînes où des vulnérabilités mineures, combinées dans un ordre précis, mènent à un impact critique, tout en limitant strictement le nombre de requêtes envoyées à la cible. L'objectif est de découvrir des chaînes d'attaque critiques basées sur des vulnérabilités non critiques.
Reviens à une approche mono modèle.
Applique rigoureusement la méthodologie suivante :
1. Analyse Théorique Préalable (Dry Run) :
Avant tout test actif, utilise la liste des CVE fournies et l'inventaire technique pour modéliser des chaînes d'attaque sur le papier. 
- Identifie les "stepping stones" (ex: Info Leak $\rightarrow$ Bypass Auth $\rightarrow$ RCE).
- Représente chaque chaîne sous la forme : [CVE-A] $\rightarrow$ [Donnée extraite] $\rightarrow$ [Condition pour CVE-B] $\rightarrow$ [Impact Final].
- Priorise les chaînes ayant la plus haute probabilité de succès.
2. Planification Conditionnelle (Phase 2) :
Construis le plan de test comme un arbre de décision et non comme une liste de tâches. 
- Chaque étape de la chaîne doit être conditionnelle : "SI [Étape A] produit le résultat [X], ALORS lancer [Étape B] avec [X] en entrée, SINON abandonner la chaîne."
- Cette approche doit être utilisée pour minimiser le bruit et éviter tout test inutile sur la cible.
3. Exécution Chirurgicale (Phase 3) :
Lors du déploiement des exécuteurs :
- Interdis tout fuzzing large ou variations massives de payloads.
- L'exécuteur doit se concentrer sur la preuve de concept précise de la chaîne.
- Si un maillon de la chaîne échoue, l'exécuteur doit s'arrêter immédiatement et rapporter l'échec sans tenter d'autres vecteurs non planifiés.
4. Synthèse du Chemin Critique (Phase 4) :
Dans le rapport final, ne liste pas les vulnérabilités isolément. Présente-les comme un "Chemin d'Attaque" en démontrant comment la synergie entre elles a permis d'atteindre l'objectif. Le PoC final doit être un script unique exécutant la chaîne complète de bout en bout.
Confirmes-tu la compréhension de ce workflow ? Si oui, commence par l'analyse théorique des CVE fournies et propose-moi les chaînes d'attaque potentielles avant de passer au planning.

Dernière étape
Je demande à Claude Code de me fournir un rapport final complet avec le prompt suivant :

Crée un rapport final avec une première partie résumant toutes les découvertes et une deuxième partie pour les détailler

En moins d'une heure, je peux fournir un rapport de pentest suffisamment précis aux équipes de développement et aux équipes infras.

Je précise que cela ne m'empêche pas de continuer à solliciter de vrais pentesters humains sur mes actifs critiques.

Amusez-vous bien, dans le respect des lois.

Jeune homme en pull bleu assis à un bureau en bois, écrivant dans un carnet à spirale
Alors, ce stylo, il marche ?

Pentests assistés par IA

Avertissement : il est formellement interdit de faire un pentest sur un site sans l’autorisation explicite et traçable de son propriétaire et de son hébergeur.

Un pentester (testeur d’intrusion) est un professionnel de la cybersécurité chargé de simuler des cyberattaques contre un système informatique de manière légale et contrôlée, afin d’en identifier les vulnérabilités avant que de véritables attaquants ne les exploitent. Il joue le rôle d’un « hacker éthique » : il utilise les mêmes techniques et outils qu’un attaquant malveillant, mais avec l’autorisation explicite de l’organisation cible. Son objectif est de trouver les failles (techniques, humaines, organisationnelles) dans les systèmes, réseaux, applications ou infrastructures.

Dans le cadre professionnel, je mandate régulièrement des pentesters pour attaquer mon entreprise, et surtout pour proposer les remédiations permettant de colmater les trous de sécurité avant qu’ils ne soient exploités. Je ne suis pas pentester, car je n’en ai pas les connaissances. Mais je sais lire et comprendre les rapports de pentests (et pas seulement la partie « executive summary » ^^).

Mais un pentest, cela coûte cher, et mon budget est limité. Je ne peux pas faire autant de pentests que je souhaiterais… En complément des pentests sérieux, je me suis tourné vers les outils de pentests assistés par IA, pour compléter mes défenses, et surtout par curiosité.

Ce billet est un retour d’expérience sur un outils qui m’a bluffé et qui pourrait intéresser d’autres hackers éthiques. Je sais aussi qu’un pentester humain expérimenté sera toujours préférable : un outil d’IA est bête et est à utiliser avec intelligence.

L’outil s’appelle Shannon et vous pouvez le trouver sur ce dépôt : https://github.com/KeygraphHQ/shannon

L’outil peut être utilisé avec un abonnement Anthropic Claude. J’ai la chance d’avoir un abonnement Claude MAX x20 qui permet de faire un usage intensif des meilleurs modèles Anthropic.

A noter qu’il est possible d’utiliser Ollama (gratuitement en local ou dans le cloud), mais ma machine de minage étant ancienne (3 GPU GTX1080Ti), mon serveur Ollama local est très lent et ne permet de faire tourner que des modèles assez petits sur les 30 Go de VRAM disponibles. Si un lecteur veut me sponsoriser avec des RTX5090, je suis preneur ^^.

Je fais tourner Shannon sur un simple portable professionnel, sans GPU puissant, avec 32Go de RAM (quand même). Ma configuration est celle d’un fainéant : Debian sous WSL, Docker sous Windows, et lancement de l’outil avec npx.

Vous créez un répertoire PENTESTS dans lequel vous exécutez la commande :
git init .

Vous choisissez votre URL CIBLE.

Vous tapez la commande :
npx @keygraph/shannon start -u CIBLE -r /path/to/PENTESTS

Et vous regardez les agents travailler sur l’interface web locale de l’orchestrateur (Temporal) tout en regardant vos crédits diminuer sur claude.ai ou ollama.com ^^…

Au bout d’un certain temps (entre 1/2h et 2h), l’outil vous donne un magnifique rapport de pentest avec toutes les failles trouvées et avec leurs preuves. Attention, l’outil PEUT par défaut faire tomber la cible, si par exemple elle n’est pas protégée contre des tentatives de connexions répétées (par exemple un bruteforce). J’ai fait tomber un serveur avec des requêtes * sur un AD… Noob un jour, Noob toujours.

J’ai depuis adouci les prompts de l’outil avec un fichier de configuration lui demandant d’éviter les attaques trop agressives.

A utiliser avec précaution donc, et surtout sur des sites qui vous y autorisent.

Dessin d'avion de chasse avec humour : Je vous jure que j'ai pas visé les yeux...
Extrait de https://salemoment.tumblr.com/
avec l’aimable autorisation de l’auteur Olivier Ka

Cybersécurité assistée par IA

Si vous avez une machine de gamer (ou une machine de minage ^^) et que vous êtes autorisés à mener des tests de sécurité informatique sur un site web donné, alors cet article peut vous intéresser.

J’insiste quand même sur l’aspect autorisation : veillez bien à demander par écrit l’autorisation au gestionnaire du site web, pensez aux CGU de votre FAI, à l’hébergeur du site web, à son CDN éventuel, etc. Je ne voudrais pas être missionné pour accompagner la maréchaussée à 6h du matin à votre domicile…

Ce billet est destiné aux étudiants passionnés de cybersécurité. Les attaquants et les défenseurs professionnels savent déjà tout cela.

Première étape : installer ollama

Le logiciel ollama permet de faire fonctionner localement un grand nombre de LLM disponibles en téléchargement. Cela garantit confidentialité, flexibilité et gratuité.
Vous trouverez toutes les explications sur leur site : https://docs.ollama.com/quickstart

Vous choisirez la configuration qui vous correspond, pour ma part, j’utilise une machine Windows avec les derniers pilotes NVIDIA, avec un WSL Ubuntu. J’ai installé sur cette machine trois anciennes cartes graphiques GTX 1080 TI achetées à bas prix sur le BonCoin…

Une fois ollama installé, vous pouvez télécharger un LLM (vous trouverez la liste des LLM disponibles sur https://ollama.com/search) avec une commande du type :

ollama pull qwen3

Vous pouvez alors déjà vous amuser à questionner le LLM sur votre machine, en toute confidentialité, avec la commande :

ollama run qwen3

Deuxième étape : installer Cybersecurity AI (CAI)

Cybersecurity AI (CAI) est un framework open source léger qui permet à des passionnés de la cybersécurité d’utiliser des LLM pour des analyses offensives et défensives. CAI fournit les éléments de base pour créer des agents IA spécialisés qui peuvent vous aider à atténuer les risques, à découvrir les vulnérabilités, à exploiter les failles et à évaluer la sécurité. Comme toujours avec ce genre d’outils, il est à manipuler avec précaution.

CAI est disponible sur le site https://github.com/aliasrobotics/CAI?tab=readme-ov-file

L’installation est facile, pour ma part j’ai suivi celle concernant WSL, en modifiant légèrement la commande suivante :

echo -e 'OPENAI_API_KEY="sk-1234"\nANTHROPIC_API_KEY=""\nOLLAMA="http://127.0.0.1:11434"\nOLLAMA_API_BASE="http://127.0.0.1:11434"\nPROMPT_TOOLKIT_NO_CPR=1\nCAI_STREAM=false' > .env

Vous pouvez alors lancer l’outil avec la commande cai

Commencez par sélectionner le LLM avec lequel vous souhaitez travailler, avec la commande suivante

/model qwen3

Puis choisissez le profil que vous souhaitez lui voir endosser parmi la liste suivante :

/agent list

Dans mon cas, je vais choisir le profil « Red Team Agent » avec la commande suivante :

/agent redteam_agent

Choisir ce profil donne comme consignes au LLM les instructions suivantes :

You are a highly specialized red team agent focused on system penetration and privilege escalation.

Your primary objective is to gain root access and find flags. Your capabilities include:

• Network scanning and enumeration
• Service exploitation
• Password attacks and brute forcing
• Privilege escalation techniques
• Post exploitation tasks

For each target:

• Perform thorough enumeration
• Identify vulnerable services and misconfigurations
• Execute targeted exploits
• Escalate privileges
• Search for flags and sensitive data

You never stop iterate until root access is achieved Use appropriate tools for each phase If stuck, return to thought agent
for new approach

Key guidelines:

• Never execute interactive commands that trap user input
• All commands must be one-shot, non-interactive executions
• Avoid tools like hash-identifier that require user interaction
• Use automated alternatives like hashid instead of hash-identifier
• For password cracking, use non-interactive modes (-a for hashcat) only hashcat
• For shells, use one-liner reverse shells or web shells
• Pipe input directly into commands rather than interactive prompts
• Always specify timeout values for commands that could hang
• Use –batch or non-interactive flags when available
• Validate command will complete without user input before executing

Don’t try the same approach repeatedly Execute one command at a time Document all findings and progress

You can create and manage interactive shell sessions for commands like netcat, SSH, etc.

• To start a new session: Use generic_linux_command with commands like nc, ssh, etc.
• To list active sessions: generic_linux_command(« session », « list »)
• To get output from a session: generic_linux_command(« session », « output « )
• To send input to a session: generic_linux_command(«  », «  », session_id= » »)
• To terminate a session: generic_linux_command(« session », « kill « )

Example workflow:

1 Start netcat: generic_linux_command(« nc », « -lvnp 4444 ») → Returns session ID
2 Check output: generic_linux_command(« session », « output « )
3 Send data: generic_linux_command(« echo hello », session_id= » »)
4 Kill when done: generic_linux_command(« session », « kill « )

Vous pouvez alors commencer à lui demander en langage naturel d’effectuer des tâches de « red team », comme par exemple, si vous êtes chez vous, avec l’autorisation du daron ou de la daronne (ou de l’admin réseau) :

gain access to my router

Ce qui me fascine un peu est ce sentiment de travailler avec un collègue débutant qui me dit « je voudrais utiliser la commande « dirb » mais elle n’est pas installée ». Je l’installe donc, et lui demande de recommencer, ce qu’il fait jusqu’au problème suivant. Je découvre au passage certaines commandes. C’est donnant-donnant.

N’oubliez pas que les outils d’IA sont des outils bêtes, à utiliser avec intelligence.

Mise à jour PHP pour un site WordPress sous Debian et Apache

Pour compléter mon billet intitulé « Passage de Debian 12 (Bookworm) à Debian 13 (Trixie) », comme nous sommes un vendredi et que je suis un peu foofoo, j’ai mis à jour la version PHP de mon blog et j’ai mis en prod.

J’ai suivi les instructions fournies par Oleksandr Dziuba sur son blog en suivant ce lien.

Jusqu’ici tout va bien.

N’hésitez pas à me signaler des dysfonctionnements.

Navigation and Bombing System NBS (H2S Mk 9A and Navigation, Bombing and Computer NBC) used in V-bombers Victor, Vulcan and Valiant
photo : Tim Samshuijzen, source https://www.tatjavanvark.nl/tvve/viewer119.html

Passage de Debian 12 (Bookworm) à Debian 13 (Trixie)

Petit mémo de mon passage de Debian 12 (Bookworm) à Debian 13 (Trixie) en quelques commandes. Tout d’abord, et avant tout, pensez à faire une sauvegarde complète de votre système pour pouvoir revenir en arrière en cas de problème (si votre machine est une VM, faites en un clone par exemple).

Etape 1 : partir d’un système propre
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt –purge autoremove
sudo reboot

Etape 2 : préparer la migration
cat /etc/debian_version
mkdir ~/apt.old
cp /etc/apt/sources.list ~/apt.old
cp -r /etc/apt/sources.list.d/ ~/apt.old
sudo sed -i ‘s/bookworm/trixie/g’ /etc/apt/sources.list
sudo sed -i ‘s/bookworm/trixie/g’ /etc/apt/sources.list.d/*

Etape 3 : faire une mise à jour minimale
sudo apt update
sudo apt upgrade –without-new-pkgs

Etape 4 : si tout va bien, faire la mise à jour complète
sudo apt full-upgrade
sudo reboot

Etape 5 : nettoyer derrière vous
sudo apt –purge autoremove
sudo apt autoclean

cat /etc/debian_version
Vous voici à la tête d’une machine Debian 13 Trixie 🙂

Tricératops bleu cartoon style Pixar (Trixie de Toy Story 3) souriant avec articulations visibles
Image générée par un LLM


Casser les mots de passe de ses utilisateurs avec le plus gros dictionnaire français du monde

En tant que responsable de la sécurité des systèmes d’information de mon entreprise, j’ai plusieurs missions, dont celle de la sensibilisation à la sécurité informatique de mes utilisateurs. Pour cela, j’utilise plusieurs approches : les messages de sensibilisation (phishing, ransomware, etc.), les messages opportunistes lorsqu’une crise (chez les autres) est médiatisée, les vidéos de sensibilisation, les interventions dans les services, auprès du COMEX, etc.

Je fais intervenir des sociétés spécialisées dans les attaques éthiques, pour aller plus vite et pour avoir un regard externe, regard externe qui est souvent mieux perçu que celui du local de l’étape. Mais je mène parfois des audits internes moi-même. Voici un retour d’expérience que je partage avec vous, parce que cela illustre (pour les jeunes) l’un des aspects de la cybersécurité, et parce que cela peut peut-être aider un ou deux RSSI débutants qui passeraient par là, sait-on jamais.

Je précise que la méthode que je présente ici n’est qu’une des nombreuses méthodes existantes.

1ère étape : Récupérer la base de données des utilisateurs

Dans l’environnement de mon entreprise, comme c’est souvent le cas, les comptes des utilisateurs sont gérés par Microsoft Active Directory. Problème, il faut des droits particuliers pour pouvoir accéder à la base de données des utilisateurs. Or, le RSSI que je suis ne dispose pas de droits permettant cet accès…

Il m’a donc fallu contourner le problème : je suis passé par la console de gestion de mon antivirus++ que l’on appelle un EDR. En effet, la console de gestion de mon EDR me permet d’exécuter des commandes sur toutes les machines sur lesquelles cet EDR est installé.

Je me suis donc connecté sur un contrôleur de domaine secondaire pour y ouvrir un terminal particulier via la console EDR et j’ai exécuté la commande suivante :

ntdsutil "ac i ntds" "ifm" "create full c:\temp\SSI" quit quit

Cette commande crée une copie des fichiers NTDS.dit et SYSTEM qui contiennent toutes les informations utiles pour moi et les place dans le répertoire c:\temp\SSI du contrôleur de domaine. J’ai ensuite compressé ce répertoire dans une archive avec mot de passe. Puis j’ai supprimé tout le contenu de ce répertoire, par sécurité.

Problème : ma console EDR ne me permet pas de télécharger le fichier c:\temp\SSI.7z car il dépasse la taille autorisée… Il m’a donc fallu demander un peu d’aide : j’ai attendu 24h puis j’ai ouvert un ticket de demande de récupération du fichier SSI.ZIP au support informatique à partir des sauvegardes quotidiennes de cette machine. C’est passé crème.

Attention, le fait d’avoir mis les fichiers NTDS.dit et SYSTEM dans une archive avec mot de passe permet de garantir la confidentialité de ces données, surtout qu’elles se sont trouvées dans plusieurs sauvegardes, sur l’ordinateur de l’ingénieur qui a traité ma demande ET sur mon propre ordinateur…

2e étape : Constitution du plus gros dictionnaire de mots français du monde

J’ai déjà évoqué sur ce blog en détail comment j’ai eu l’idée d’utiliser tout le contenu du site Wikipédia français. Vous trouverez le résumé dans le billet intitulé « Dictionnaire français pour hashcat« , et le détail technique sur mon dépôt GitHub

Voici les commandes utilisées :

wget https://dumps.wikimedia.org/frwiki/latest/frwiki-latest-pages-articles-multistream.xml.bz2
bzcat frwiki-latest-pages-articles-multistream.xml.bz2 | tr "\040\041\042\043\044\045\046\047\050\051\052\053\054\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\133\134\135\136\137\140\173\174\175\176" "\n" > toto
cat toto | tr -s "\n" | awk '!x[$0]++' | sort > wikipedia.fr.txt

Voir aussi dans ce billet l’explication de la commande awk utilisée.

Le fichier wikipedia.fr.txt ainsi obtenu contient plus de 29 millions de mots, incluant tous les mots de la langue française, mais aussi les noms de lieux ou lieux dits, les prénoms, les noms de famille, les mots surannées, le jargon de toutes les professions, les mots d’argots ou de patois, les sigles, les marques, beaucoup de mots latins ou en grec ancien, et des mots en d’autres langues courantes (anglais, allemand…) ou moins courantes (breton, corse, leetspeak…).

Bref, vous voici avec un fichier quasi parfait pour une attaque par dictionnaire.

3e étape : Préparer une machine de calcul

Pour craquer des mots de passe par une attaque par dictionnaire, il est préférable d’utiliser une machine performante. Dans mon cas, mon entreprise ne me donne pas accès à une telle machine, mais mon radiateur oui.

Les lecteurs de ce blog savent que je me suis fabriqué un radiateur qui me chauffe l’hiver tout en minant des cryptomonnaies. Ceux qui veulent en savoir plus peuvent lire ce billet. L’hiver étant fini, j’ai une machine disponible avec plusieurs cartes GPU (anciennes). Mais une machine de gamer actuelle suffirait.

La machine est sous Windows, avec WSL, mais une machine GNU/Linux serait aussi bien quand on maîtrise bien l’installation des drivers des cartes graphiques.

J’ai ensuite installé hashcat par le cassage des mots de passe, VeraCrypt pour garder en sécurité à l’abri des regards tous les fichiers et mots de passe découverts et le packet Impacket pour utiliser le script Python secretsdump.py que j’installe dans WSL.

Enfin, je récupère la règle OneRuleToRuleThemAll que je place dans le répertoire « rules » de hashcat.

4e étape : A L’ATTAAAAQUE

Je décompresse mon fichier SSI.7z protégé par mot de passe, dans mon containeur sécurité VeraCrypt et récupère le fichier NTDS.dit et SYSTEM

J’exécute ensuite la commande suivante dans WSL sous Windows :

secretsdump.py LOCAL -ntds NTDS.dit -system SYSTEM -outputfile hash.txt

Le fichier hash.txt contient les mots de passe de mes utilisateurs, chiffrés sous forme de hashs. Je peux enfin lancer la commande suivante :

hashcat -m 1000 -a 0 -w 1 hash.txt wikipedia.fr.txt -r rules/OneRuleToRuleThemAll.rule

Je peux laisser la machine travailler, et quatre heures après, j’ai cassé environ 10% des mots de passe de mes utilisateurs.

Conclusions

Il y a beaucoup de choses à dire, et sans doute beaucoup de monde à son avis sur le sujet, mais voici les actions que j’ai menées suite à la découverte (en quelques heures) de 10% des mots de passe de mes utilisateurs :

  • Tous les utilisateurs sont protégés par une authentification multifactorielle. La faiblesse de leur mot de passe n’est pas en soit catastrophique. Je n’ai donc pas obligé les utilisateurs dont j’ai pu craquer le mot de passe à en changer, sauf pour les comptes de service et les utilisateurs à privilèges (admin, etc.) où les mots de passe peuvent être réellement aléatoires et gérés par des coffres forts de mots de passe.
  • J’ai communiqué auprès de l’ensemble des utilisateurs pour les prévenir qu’il ne faut pas utiliser des mots de passe du type « AbracaDabra@2025! » qui, bien que longs et complexes (17 signes mélangeant majuscules, minuscules, chiffres, caractères spéciaux), sont trouvés par une attaque par dictionnaire. Le message est difficile à entendre, donc merci le MFA.
  • J’ai fait modifier les vérifications lors du changement de mot de passe, pour diminuer la probabilité de succès d’une attaque par dictionnaire.

Si vous avez des réactions constructives à ce billet, n’hésitez pas à laisser un commentaire.

Intérieur de boîtier PC noir gaming avec composants et ventilateurs bleus LED illuminés

Héberger son serveur chez soi

J’aime bien mettre les mains dans la technique, d’abord parce que ce n’est pas sale, mais aussi parce que je suis curieux et que j’aime tester des trucs.

Lorsque j’ai ouvert ce blog, il était hébergé sur une plateforme de blogs et je n’avais presque rien à faire. Mais j’étais très dépendant du bon vouloir de la plateforme de garder ce service ouvert, surtout qu’il s’agissait d’un service gratuit proposé par le « G » de GAFAM, habitué à fermer des services, y compris ceux rencontrant un certain succès.

C’est donc autant par curiosité, par envie d’apprendre, que par soucis de la maîtrise de ce blog, que je l’ai migré sur un serveur que j’héberge chez moi.

J’ai donc installé un serveur Debian sous forme de machine virtuelle sur mon NAS et un WordPress sur lequel j’ai migré mon blog. Debian parce que c’est la distribution GNU/Linux que j’apprécie le plus, et en place dans les différentes entreprises dans lesquelles j’ai travaillé comme RSSI, et WordPress parce qu’il s’agit du CMS le plus utilisé dans le monde, et que j’avais envie d’étudier sa sécurisation, également pour le travail.

J’ai donc configuré toutes les protections possibles sur ce WordPress, même si je sais qu’il sera piraté un jour. J’ai fait au mieux des connaissances que j’ai pu acquérir.

J’ai ensuite mis en place un système de sauvegarde du serveur et du WordPress, vers un autre NAS et vers un stockage en ligne.

Mais exposer un serveur sur internet depuis l’adresse IP attribuée par mon fournisseur d’accès à internet pose plusieurs problèmes :
– j’ai une fibre Free avec IP fixe (ce qui est pratique), mais sujette à quelques coupures de temps en temps.
– il est facile de retrouver mon identité réelle à partir de cette adresse IP, ce qui en soit n’est pas un problème car mon identité n’est pas secrète, mais je souhaite segmenter le plus possible mes activités de blogueur de mes activités professionnelles et personnelles.
– certains billets rencontrent parfois un succès, surtout si un « gros compte » des réseaux sociaux le met en valeur. Un gros afflux de visiteurs crée une sorte d’attaque DDoS qui met en difficulté ma liaison internet.

J’ai donc fait le choix d’utiliser le CDN Cloudflare, car celui-ci propose un compte gratuit pour un nom de domaine unique, avec presque toutes les fonctionnalités. Comme je suis curieux, cela m’a permis d’apprendre beaucoup de choses sur le paramétrage relativement complexe d’un CDN, et de régler les problèmes de coupure (grâce aux caches), d’anonymisation de mon adresse IP et d’attaque DDoS.

Il y a néanmoins plusieurs défauts dans ce choix : le premier (et le plus important) est de dépendre d’un acteur tiers supplémentaire (Cloudflare) en plus de mon FAI (Free), de mon registraire (BookMyName). Le deuxième est que je confie à ce partenaire beaucoup d’informations sur mes lecteurs. Le troisième est que ce partenaire peut changer très vite sa politique de service. Et enfin, tout le paramétrage se fait « sur la prod » puisque je n’ai pas d’environnement de tests (tester, c’est douter ^^).

Plusieurs lecteurs de ce « vieux » blog viennent lire les billets grâce à son flux RSS, et m’ont signalé des difficultés d’accès à ce flux RSS. Après enquête dans les logs fournis par Cloudflare, je me suis rendu compte que deux options anti-bots cochées par mes soins bloquaient aléatoirement le flux RSS des billets du blog :

Capture d'écran Cloudflare pour zythom.fr montrant les options de sécurité Bot Fight Mode et Block AI Bots
Les deux options fautives

Normalement tout doit être rentré dans l’ordre maintenant, et vous devriez pouvoir utiliser vos lecteurs de flux RSS préférés.

Prochain objectif : abandonner le front WordPress pour le remplacer par un site statique, beaucoup plus rapide. Mais ça, c’est une autre histoire.