Hot Posts

6/recent/ticker-posts

Ma Publicité

Soutenez la Création

Aidez-moi à partager du contenu exclusif.

Soutenir

Recent Posts

Nouveau Drop

Boutique Officielle

Soutenez le blog monblog-sa-abasse et découvrez nos vêtements & accessoires exclusifs en édition limitée.

Découvrir la collection
Paiement Sécurisé
Livraison Monde

Comment j'ai stoppé une attaque de spam sur WordPress avec 4 700 lignes de code en deux jours – grâce au Codex et à Claude

Les points clés à retenir sur l'utilisation de l'IA pour stopper les vagues de spam



* Des spammeurs ont trouvé le moyen de s'introduire dans mon système et ont inondé ma base de données.

* Claude et Codex sont devenus mon équipe de développement d'urgence.

* Le correctif de 4 700 lignes a permis de renforcer les défenses et d'ajouter des outils de nettoyage.






---


Il y a environ un mois, mon site web principal a été la cible d’une nouvelle attaque. Les spammeurs utilisaient le champ « nom d’utilisateur » comme vecteur de message, en y insérant un faux domaine et des appâts liés à la cryptomonnaie tels que « vérifier le solde », « retirer des fonds », « transfert BTC » et « action requise ». WordPress m’a alors gentiment transmis cette charge utile sous la forme de milliers d’e-mails d’« inscription de nouveaux utilisateurs ».

À cette époque, mon serveur utilisait un produit de sécurité acheté dans le commerce, censé protéger mon site WordPress contre le spam d’inscription. Ce produit n’était manifestement pas à la hauteur de la tâche.

Je suis le développeur d’un plugin de sécurité WordPress conçu pour aider les utilisateurs à restreindre l’accès à leurs sites web. Comme le produit de sécurité contre le spam d’inscription pour lequel je payais ne fonctionnait pas, j’ai décidé d’intégrer une fonctionnalité anti-spam à mon plugin existant.



Capture d’écran réalisée par David Gewirtz/ZDNET


Sonder le site à la recherche de nouvelles failles


J’ai pris des captures d’écran de ma boîte Gmail, sur lesquelles figuraient plusieurs centaines d’e-mails de spam, j’ai importé ces e-mails dans Codex et je lui ai demandé de créer une routine de protection que je pourrais déployer rapidement en production au sein de mon outil. Une fois que Codex a eu terminé, j’ai déployé le plugin auprès des utilisateurs et sur mon propre site web.

Le problème est passé d’une attaque en cours à une accalmie totale en moins d’une heure. C’était début juin. Puis, la semaine dernière, les attaques sont revenues en force.

Au fil des ans, j’ai remarqué que les spammeurs ont tendance à intensifier leurs efforts. Ils sondent les sites pour tenter de trouver des failles faciles à exploiter. S’ils en trouvent une, ils s’en servent. Mais une fois que vous mettez en place des mesures de protection, les attaques ne disparaissent pas. Ils continuent de sonder le site, à la recherche de nouvelles failles. Je suis convaincu que les cybercriminels ont désormais recours à l’IA pour approfondir ces sondages.


Impossible de charger la page


Vendredi soir, mon hébergeur m’a signalé que la base de données de mon site comptait désormais plus de 39 000 comptes utilisateurs, avec plus de 700 000 enregistrements de métadonnées. Ils constataient des milliers de rejets d’inscription en continu. Je les ai également remarqués, car ma boîte de réception et mon dossier de spam recevaient de multiples variantes à un rythme assez soutenu. Le tableau de bord des comptes utilisateurs était tellement saturé qu’il était impossible de charger la page.

On m’a poliment informé que je devais nettoyer ma base de données et mettre fin à ce phénomène. Le sous-entendu implicite du message de mon hébergeur était que si je ne parvenais pas à empêcher les attaques de contaminer son infrastructure de base de données, mon site web deviendrait persona non grata.

Cet article raconte comment j’ai passé le week-end à utiliser Claude Cowork et OpenAI Codex pour riposter contre le spam, en intégrant à mon produit de sécurité des fonctionnalités de protection bien plus robustes afin de les déployer contre ces attaques.


Tour est bien sur une question de contexte


Comme je l’ai mentionné, j’ai, en parallèle de mon activité principale, un produit de sécurité assez puissant qui protège les sites WordPress. L’année dernière, j’ai utilisé Codex pour augmenter considérablement ses capacités.

À l’époque, j’avais fait passer Codex au forfait ChatGPT Pro à 200 $ par mois. Une fois ces extensions livrées, je suis revenu au forfait ChatGPT Plus à 20 $ par mois. Je développe une série de produits destinés à l’écosystème Apple. Pour cela, j’utilise Claude Code avec le forfait Max à 100 $ par mois.

J’utilise ces deux IA afin de pouvoir vous en faire part, mais je veille à ce que chacune reste indépendante du code de l’autre. Ainsi, Codex s’occupe du produit WordPress, tandis que Claude Code gère les produits Apple.


La combinaison de services d'IA a bien fonctionné


Comme l’attaque visait mon site web, qui est protégé par le produit WordPress, c’était un projet pour Codex. Cela dit, je ne voulais vraiment pas dépenser d’argent supplémentaire pour souscrire à la formule ChatGPT à 100 $ par mois afin de résoudre ce problème.

J’ai donc décidé d’utiliser Claude Cowork pour les aspects du projet qui ne nécessitaient pas d’écriture de code, car il dispose d’une capacité d’IA bien supérieure, et d’utiliser Codex principalement pour l’écriture de code.

Dire que cette combinaison de services a bien fonctionné serait un euphémisme.


Lâcher Claude Cowork sur mon site web


Ma riposte a commencé par une traque. Comment, exactement, les malfaiteurs parvenaient-ils à s’introduire ?

J’avais bloqué la page d’inscription des utilisateurs lors de ma précédente mesure de protection. J’avais même détecté des signaux de spam (noms d’utilisateur générés par des machines ou incompréhensibles, et adresses e-mail mal formées), utilisé des champs « honeypot » pour piéger les bots, bloqué les inscriptions sans enregistrements MX valides, et vérifié les inscriptions par rapport à la liste noire StopForumSpam.

Pourtant, d’une manière ou d’une autre, les spammeurs étaient de retour en force. J’ai passé environ une heure à parcourir mon site, sans parvenir à trouver le moindre point faible. Et j’ai donc décidé de déployer une IA.


J’ai expliqué le problème à Cowork et je l’ai laissé faire


Techniquement, ce produit de sécurité fait partie de ChatGPT Codex. Mais comme j’étais sur le forfait « Plus » à 20 $, je ne voulais pas lui imposer une charge de travail supérieure à ma limite d’utilisation. Comme Claude disposait d’une marge d’utilisation bien plus importante, j’ai décidé de répartir mes efforts. J’utiliserais Claude pour diagnostiquer et vérifier, et Codex pour écrire mon code. En fin de compte, ce duo s’est avéré redoutable.

J’ai expliqué le problème à Cowork et je l’ai laissé faire. Au début, il voulait un identifiant d’administrateur, mais je lui ai expliqué que les spammeurs trouvaient des failles sans accès administrateur. L’IA a semblé comprendre, puis s’est mise à passer mon site au crible.

Au bout d’environ 40 minutes de travail acharné, elle a identifié plusieurs problèmes. Le plus flagrant était que, bien que ma page d’inscription des utilisateurs comporte un CAPTCHA, les spammeurs pouvaient soumettre des URL qui déclenchaient l’inscription sans demander de CAPTCHA. Il fallait corriger cela.


8 failles détectées


Au total, elle a détecté huit failles différentes qui permettaient aux spammeurs d’accéder aux formulaires d’inscription. Même si mon outil de sécurité vérifiait les soumissions, ces failles contournaient ces contrôles.

J’ai ensuite exporté la base de données de mon site et je l’ai importée dans Claude Cowork. Je lui ai demandé de recueillir toutes les informations possibles permettant d’identifier les comptes de spam et les pratiques de spam, en se basant sur ce qui avait historiquement réussi à passer à travers les protections.

Cowork a détecté toute une série d’indices indiquant que de nombreux comptes étaient des comptes de spam. Il a également remarqué que les spammeurs inséraient des URL dans le champ de la biographie (et non dans le champ URL).


Il faut toujours relire le travail de Claude


Claude m’a aidé à identifier les points de vulnérabilité du site et m’a indiqué les nouvelles fonctionnalités à ajouter au plugin. J’ai ensuite demandé à Claude de rédiger pour moi une instruction que je pourrais intégrer à Codex, afin qu’il puisse mettre en œuvre des correctifs pour les vulnérabilités identifiées par Claude.

Dans sa première ébauche, Claude s’est trompé et m’a fourni une instruction qui aurait généré un code extrêmement destructeur. Après une lecture attentive, j’ai expliqué le problème à Claude, qui a réécrit l’instruction. Cette fois-ci, elle était utile, et non destructrice. Il faut toujours vérifier minutieusement tout ce que produisent les IA, en particulier les instructions destinées à d’autres IA.

J’étais prêt à confier le projet à Codex.


Que peut-on faire avec 20 $ ?


Codex, l’agent de programmation d’OpenAI, est accessible dans le cadre de l’abonnement « Plus » de ChatGPT, à 20 $ par mois. Lors d’une de mes précédentes sessions de programmation, j’avais trouvé Codex très puissant, mais la quantité de travail qu’il pouvait effectuer était assez limitée sans passer à un forfait supérieur. À l’époque, il fallait souscrire au forfait Pro à 200 $ par mois (ce que j’ai fait, pendant un mois). Aujourd’hui, il existe différents niveaux de forfait.

Je voulais voir si je pouvais créer l’intégralité du bloc de code nécessaire pour atténuer les attaques de spam, en utilisant uniquement mon abonnement ChatGPT Plus existant.

J’y suis parvenu, mais de justesse.


Un outil complet de nettoyage des comptes de spam en plusieurs étapes


J’ai utilisé Codex pour mettre en place trois systèmes principaux.



* Tout d’abord, j’ai enrichi les signaux qu’il utilise pour détecter le spam.

* Ensuite, j’ai ajouté un CAPTCHA d’inscription à tous les points d’accès ouverts par lesquels une entité malveillante pourrait tenter de s’inscrire, y compris le formulaire d’inscription standard de WordPress et d’autres points d’entrée publics, tels que l’API REST, XML-RPC, admin-ajax et les formulaires d’inscription personnalisés.

* Enfin, j’ai utilisé Codex pour ajouter un outil complet de nettoyage des comptes de spam en plusieurs étapes, qui exploite toutes les fonctionnalités d’analyse des signaux de comptes de spam afin de déterminer si un compte utilisateur est un compte de spam. Cela a nécessité l’ajout d’une toute nouvelle section de l’interface utilisateur, comprenant une analyse et une suppression par lots reprenables via le navigateur.




Ce fut un week-end de programmation intensive. À chaque heure où cet outil restait non déployé, de plus en plus de comptes d’utilisateurs étaient créés. Je menais une course contre la montre pour y mettre un terme avant que les spammeurs ou mon hébergeur ne ferment mon serveur.


Les bienfaits de la réinitialisation de Claude


Samedi, j’ai été bloqué deux fois sur Codex. La première fois, je n’ai dû attendre que quelques instants avant que le système ne se réinitialise. J’en ai profité pour aller déjeuner. Mais la deuxième fois, cela allait durer des heures, ce que je ne pouvais pas vraiment me permettre. Codex affichait ce message :



Capture d’écran réalisée par David Gewirtz/ZDNET

En cliquant sur « Mettre à niveau », vous avez la possibilité d’acheter davantage de crédits d’utilisation. Mais je n’avais aucune idée du rapport entre ces crédits et la quantité de travail que je demandais à Codex d’effectuer.



Capture d'écran réalisée par David Gewirtz/ZDNET

Puis j'ai remarqué cette option « Réinitialiser l'utilisation ». Je ne l'avais jamais vue auparavant. J'ai décidé de cliquer dessus pour voir ce qui se passerait. Voici le message affiché par Codex.



Capture d’écran par David Gewirtz/ZDNET

Je l’ai donc essayé. J’ai cliqué sur « Réinitialiser l’utilisation » et je me suis retrouvé dans Codex, à écrire davantage de code. J’ai utilisé deux de ces réinitialisations samedi, travaillant d’arrache-pied jusqu’à l’heure d’aller me coucher. Chaque réinitialisation m’a permis de gagner environ 45 minutes de temps de programmation.


Après avoir exécuté le processus de nettoyage, j’ai supprimé 15 069 des 39 314 comptes utilisateurs


Dimanche, je me suis davantage consacré aux tests qu’à la programmation. Rappelez-vous, j’avais plus de 39 000 comptes utilisateurs et plus de 700 000 enregistrements de métadonnées utilisateur à supprimer. J’ai transféré une copie de cette base de données de mon serveur vers ma machine de développement locale et j’y ai exécuté mon outil de nettoyage des comptes. Avec les appels vers le centre de traitement des comptes StopForumSpam distant, chaque test durait environ deux heures.

J’ai utilisé ma troisième réinitialisation pour gagner 45 minutes de modifications de code après mon premier test de nettoyage des comptes. Au moment où j’ai de nouveau été déconnecté, j’étais prêt à effectuer un autre test de nettoyage de deux heures. Cela (plus la pause déjeuner) m’a permis de dépasser le délai d’attente obligatoire pour ma dernière mise en production du code.

En fin d’après-midi dimanche, j’étais prêt à déployer les nouveaux modules sur mon serveur. J’ai mis en ligne la nouvelle version. Je n’ai plus constaté de spam sur les comptes depuis lors. Après avoir exécuté le processus de nettoyage, j’ai supprimé 15 069 des 39 314 comptes utilisateurs. J’ai également supprimé 275 567 des 723 799 méta-enregistrements d’utilisateurs.



Capture d’écran réalisée par David Gewirtz/ZDNET

Non seulement cela a fait plaisir à mon hébergeur, mais cela m’a également permis d’accéder à nouveau au tableau de bord de mon compte utilisateur.


Comprendre l’utilisation de Codex


Soyons très clairs. Je suis impressionné par tout le travail que j’ai pu accomplir grâce à mon compte ChatGPT Plus à 20 $ par mois. J’étais prêt à acheter davantage de crédits d’utilisation ou à faire tout ce qu’il fallait pour protéger mon serveur, mais cela n’a pas été nécessaire.

Mais pourquoi ? Après avoir finalisé le déploiement de cette nouvelle version (et toutes ces fonctionnalités sont désormais mises gratuitement à la disposition de mes utilisateurs), j’ai eu le temps de réfléchir un peu plus à Codex. Que sont les réinitialisations et comment fonctionnent-elles ? Et que sont les crédits d’utilisation ? Que peuvent-ils vous apporter ?

Le 11 juin, OpenAI a déployé la fonctionnalité de réinitialisation dans un post sur X. Un porte-parole d’OpenAI m’a expliqué :
"Ils ne s’accumulent pas lors d’une utilisation normale et sont distincts des crédits achetés. Les utilisateurs Plus et Pro éligibles ont reçu une réinitialisation gratuite lors du lancement de la fonctionnalité. Il n’y a pas qu’une seule raison pour laquelle nous accordons des réinitialisations. Parfois, lorsque nous corrigeons un bug. Parfois, pour célébrer une étape importante. Et d’autres fois, c’est simplement pour le plaisir ! Les réinitialisations accumulées expirent généralement 30 jours après leur attribution".
Quant aux crédits, leur fonctionnement n’est pas non plus très clair. L’utilisation est mesurée en fonction des jetons, et non des crédits. Mais l’utilisation est facturée en crédits (et par abonnement), et non en jetons. Peut-être que si tout cela était un peu plus clair, nous n’aurions pas besoin d’une IA.

J’ai interrogé OpenAI, qui m’a suggéré de m’adresser à Codex. Voici les instructions que j’ai utilisées :
Inspecte ~/.codex/sessions, additionne les jetons d’entrée, d’entrée mise en cache et de sortie de cette fenêtre de codage, puis applique la grille tarifaire actuelle.

Comment ce décompte de jetons se compare-t-il au tarif actuel d’achat de crédits ?


L’ensemble de ma session de codage du week-end avait utilisé 166 806 884 jetons


Codex m’a indiqué que l’ensemble de ma session de codage du week-end avait utilisé 166 806 884 jetons. Si j’avais simplement payé en utilisant les tarifs de l’API, cela m’aurait coûté 146 $. Honnêtement, ce n’est pas mal du tout compte tenu de la quantité de travail que je lui ai demandé d’effectuer. En termes de crédits, Codex estime que j’aurais utilisé 3 651 crédits.

Mais cela concernait l’ensemble de mon travail du week-end, y compris les tâches incluses dans mon abonnement ChatGPT Plus. D’après le journal de mes sessions, Codex estime que le quota de ChatGPT pour les sessions courtes s’élevait à environ 500 crédits. J’aurais donc dû acheter environ 3 100 crédits pour continuer sans attendre.

Dans cette situation, la bonne décision aurait été de passer au forfait Pro à 100 $ par mois. Codex a fourni cette estimation :
"Le forfait Pro à 100 $/mois vous offre probablement environ 40 000 crédits Codex par fenêtre d’utilisation prolongée, d’après votre utilisation observée du forfait Plus, mais OpenAI ne garantit pas publiquement qu’il s’agisse d’une allocation de crédits fixe".
Pour être honnête, que cela m’ait coûté 100 dollars de plus ou 146 dollars, cela en aurait largement valu la peine. Le fait que cela n’ait pas été le cas, et que j’aie accompli tout ce que j’ai fait avec mon simple forfait à 20 dollars, est tout simplement incroyable.


À quel point est-ce incroyable ?


Au cours du week-end, en travaillant avec Codex, j’ai ajouté 4 700 lignes de code et en ai supprimé 170, soit un gain net de 4 530 lignes réparties sur 138 nouvelles fonctions procédurales. Cela ne tient pas compte de tout le code CSS et HTML, des routines de validation et de test, ni de tout le travail sur l’interface utilisateur réalisé pendant la même période.

Pour un programmeur expérimenté à temps plein, ce travail aurait probablement nécessité entre 25 et 45 jours d’ingénierie, soit jusqu’à huit semaines. Le travail d’analyse de base de données effectué par Claude aurait sans doute ajouté quatre à cinq jours supplémentaires à ce délai.

Mais j’ai réussi à faire tout cela en un week-end, grâce aux 120 $ que je dépense chaque mois pour Claude et ChatGPT. Si j’avais dû tout faire seul, il m’aurait été impossible de consacrer deux mois entiers exclusivement à la programmation de mesures d’atténuation.


Le « codage intuitif » ne consiste pas à rester les bras croisés et à laisser les IA faire tout le travail


Mais soyons clairs. Ce genre de « codage intuitif » ne consiste pas à rester les bras croisés et à laisser les IA faire tout le travail. Je passe constamment d’une IA à l’autre, travaillant avec l’une pendant que l’autre réfléchit. J’y ai consacré 12 heures samedi et au moins huit heures supplémentaires dimanche. Ma supervision active et mon implication ont été absolument essentielles au processus.

Au cours du processus, Codex a commis de nombreuses erreurs qu’il a fallu corriger. Claude a commis une erreur qui aurait pu détruire mon serveur, et à un autre moment, il a perdu trois heures à s’engager dans une piste complètement erronée, pour découvrir trop tard qu’il était impossible d’y arriver par là.

Mais ne sous-estimez pas le travail accompli. J’ai réalisé une intervention de grande envergure en un week-end, qui aurait autrement pris des mois à un programmeur dédié à plein temps.


J’ai pu collaborer avec ma petite équipe de Codex et Cowork


Il y a également un avantage considérable, bien qu’intangible. Par le passé, j’étais seul lorsque je devais résoudre des problèmes de serveur. Souvent, mes serveurs exécutaient mon propre code, et c’était à moi qu’il incombait de gérer les attaques et les problèmes. Demander de l’aide aurait impliqué des frais de consultation considérables. Même si un ou plusieurs de mes amis avaient été disposés ou capables de m’aider, il aurait fallu des jours pour les mettre au courant de la situation.

J’ai donc repoussé les attaques tout seul. J’ai pu collaborer avec ma petite équipe de Codex et Cowork. Je ne saurais trop insister sur l’énorme différence que cela représente. Certes, ils peuvent parfois manquer de perspicacité. Et oui, ce n’était pas ce que j’avais prévu de faire ce week-end. Et oui, c’était stressant, car chaque heure sans solution signifiait davantage d’incursions.

Mais, au final, je n’étais pas seul. J’avais deux partenaires compétents qui ont pu se mettre au courant en quelques minutes. Ils m’ont aidé à diagnostiquer le problème, à développer, tester et déployer une intervention de grande envergure en deux jours. J’ai posé des questions et j’ai (pour la plupart) obtenu des réponses constructives et utiles.


J’ai demandé à Claude : « Peux-tu fournir une consigne plus claire à Codex ? »


J’ai demandé à Claude : « Peux-tu fournir une consigne plus claire à Codex ? » et j’ai demandé à Codex : « As-tu des tâches d’analyse que tu souhaites que je confie à Claude ? » Et c’est ce qu’ils ont fait. Les deux IA ont été informées de la présence de l’autre au sein de l’équipe, et aucune n’a manifesté de réticence du fait qu’il s’agissait de produits concurrents.

Je sais que l’on parle régulièrement de la suppression d’emplois provoquée par l’IA, en particulier chez les programmeurs et les rédacteurs. Mais en tant que travailleur indépendant qui assume à lui seul tout le poids de la dette technique de ma petite entreprise (et des plus de 20 000 installations de serveurs pour mes utilisateurs), bénéficier de l’aide des IA m’a ouvert les yeux, même à ce stade avancé de l’IA générative.

Je suis fatigué et un peu à bout après un week-end très intense. Mais je suis sorti de cette expérience de cyberattaque avec un sentiment que je n’avais jamais, jamais éprouvé auparavant en gérant une crise de cyberattaque : c’était en fait amusant.


Source : "ZDNet.com"


http://dlvr.it/TTKtYC

Enregistrer un commentaire

0 Commentaires

Comments

Nouveau Drop

Boutique Officielle

Soutenez le blog monblog-sa-abasse et découvrez nos vêtements & accessoires exclusifs en édition limitée.

Découvrir la collection
Paiement Sécurisé
Livraison Monde

Ad Code

Soutenez la Création

Aidez-moi à partager du contenu exclusif.

Soutenir