WordPress & PHP CVE Scanner for Agencies

Scanner CVE WordPress & PHP pour Agences

Last updated: April 2026

Dernière mise à jour : avril 2026

The WordPress Security Landscape

Le paysage sécurité WordPress

WordPress powers over 43% of all websites on the internet. That dominance makes it the single largest target for attackers. The WordPress ecosystem relies on a vast network of third-party plugins and themes—over 60,000 plugins in the official repository alone—and each one is a potential entry point for vulnerabilities. In 2024, the WordPress ecosystem saw over 5,000 disclosed CVEs, the vast majority in plugins and themes rather than WordPress core.

WordPress fait tourner plus de 43 % de tous les sites web sur internet. Cette domination en fait la cible numéro un des attaquants. L'écosystème WordPress repose sur un vaste réseau de plugins et thèmes tiers—plus de 60 000 plugins dans le répertoire officiel—et chacun est un point d'entrée potentiel pour des vulnérabilités. En 2024, l'écosystème WordPress a connu plus de 5 000 CVE divulgués, la grande majorité dans les plugins et thèmes plutôt que dans le noyau WordPress.

43% of the web runs WordPress du web tourne sous WordPress
60,000+ plugins in the official repo plugins dans le repo officiel
5,000+ CVEs disclosed in 2024 CVE divulgués en 2024

High-profile incidents have repeatedly demonstrated the scale of WordPress security risks. The Elementor Pro vulnerability in 2023 affected over 11 million sites and allowed authenticated attackers to take full control of WordPress installations. The WPGateway plugin zero-day in 2022 was actively exploited to add rogue admin accounts to over 280,000 sites. Supply chain attacks targeting popular themes—like the backdoored versions of AccessPress themes in 2022—showed that even trusted marketplace plugins can be compromised at the distribution level.

Des incidents majeurs ont répétitivement démontré l'ampleur des risques de sécurité WordPress. La vulnérabilité Elementor Pro en 2023 a affecté plus de 11 millions de sites et permettait aux attaquants authentifiés de prendre le contrôle total des installations WordPress. Le zero-day du plugin WPGateway en 2022 a été activement exploité pour ajouter des comptes admin frauduleux sur plus de 280 000 sites. Les attaques de supply chain ciblant des thèmes populaires—comme les versions piégées des thèmes AccessPress en 2022—ont montré que même les plugins de marketplace de confiance peuvent être compromis au niveau de la distribution.

For agencies managing multiple WordPress sites, the math is simple: more client sites means more attack surface. A vulnerability in a single shared plugin can put every client at risk simultaneously. Without continuous monitoring, you're relying on luck—hoping you happen to check WPScan or the WordPress security mailing list before attackers find the flaw in your client's production site.

Pour les agences gérant plusieurs sites WordPress, le calcul est simple : plus de sites clients signifie plus de surface d'attaque. Une vulnérabilité dans un seul plugin partagé peut mettre tous les clients en danger simultanément. Sans monitoring continu, vous dépendez de la chance—en espérant consulter WPScan ou la mailing list sécurité WordPress avant que les attaquants ne trouvent la faille sur le site de production de votre client.

The Composer.lock Problem

Le problème Composer.lock

Modern PHP development—whether you're building with Laravel, Symfony, or managing WordPress sites with Composer-based workflows (Bedrock, Sage, Roots)—relies heavily on Composer for dependency management. Your composer.lock file pins the exact versions of every package in your dependency tree, including transitive dependencies you never explicitly installed.

Le développement PHP moderne—que vous construisiez avec Laravel, Symfony, ou que vous gériez des sites WordPress avec des workflows basés sur Composer (Bedrock, Sage, Roots)—repose fortement sur Composer pour la gestion des dépendances. Votre fichier composer.lock fixe les versions exactes de chaque package dans votre arborescence de dépendances, y compris les dépendances transitives que vous n'avez jamais explicitement installées.

Here lies the hidden danger: transitive dependencies. When you install a WordPress plugin via Composer or add a Laravel package, that package brings its own dependencies, which bring their own dependencies, and so on. A typical Laravel project has 80-120 Composer packages. A WordPress project using Bedrock with a handful of plugins can easily reach 50+. You probably know the top-level packages you chose—but do you know what guzzlehttp/psr7, symfony/http-kernel, or league/flysystem are doing three levels deep in your dependency tree?

C'est là que réside le danger caché : les dépendances transitives. Quand vous installez un plugin WordPress via Composer ou ajoutez un package Laravel, ce package apporte ses propres dépendances, qui apportent les leurs, et ainsi de suite. Un projet Laravel typique comporte 80 à 120 packages Composer. Un projet WordPress utilisant Bedrock avec quelques plugins peut facilement atteindre 50+. Vous connaissez probablement les packages de premier niveau que vous avez choisis—mais savez-vous ce que guzzlehttp/psr7, symfony/http-kernel ou league/flysystem font trois niveaux en profondeur dans votre arborescence de dépendances ?

When a CVE is published against symfony/http-foundation or monolog/monolog, it affects every project that depends on it—directly or transitively. Without scanning your composer.lock, you have no way to know whether your WordPress theme's admin panel library pulls in a vulnerable version of a Symfony component. These hidden dependencies are where the most dangerous vulnerabilities hide, precisely because nobody is watching them.

Quand un CVE est publié contre symfony/http-foundation ou monolog/monolog, il affecte chaque projet qui en dépend—directement ou transitivement. Sans scanner votre composer.lock, vous n'avez aucun moyen de savoir si la bibliothèque du panneau d'administration de votre thème WordPress inclut une version vulnérable d'un composant Symfony. Ces dépendances cachées sont là où les vulnérabilités les plus dangereuses se cachent, précisément parce que personne ne les surveille.

How to Check WordPress & PHP Vulnerabilities

Comment vérifier les vulnérabilités WordPress & PHP

Using composer audit (built-in since Composer 2.4)

Utiliser composer audit (intégré depuis Composer 2.4)

Since Composer 2.4, PHP developers have access to a built-in security checker. The composer audit command compares your installed packages against the GitHub Advisory Database and reports known vulnerabilities.

Depuis Composer 2.4, les développeurs PHP ont accès à un vérificateur de sécurité intégré. La commande composer audit compare vos packages installés avec la GitHub Advisory Database et signale les vulnérabilités connues.

Run a basic audit:

Lancer un audit basique :

$ composer audit

Found 4 security vulnerability advisories affecting 3 packages:
+-------------------+--------------------------+
| Package           | CVE                      |
+-------------------+--------------------------+
| guzzlehttp/psr7   | CVE-2023-29197 (High)   |
| symfony/http-kernel| CVE-2024-21661 (Critical)|
| monolog/monolog   | CVE-2024-51478 (Medium)  |
+-------------------+--------------------------+

For CI/CD integration, use the JSON format:

Pour l'intégration CI/CD, utilisez le format JSON :

$ composer audit --format=json
{
  "advisories": {
    "symfony/http-kernel": [
      {
        "advisoryId": "GHSA-xxxx-yyyy-zzzz",
        "cve": "CVE-2024-21661",
        "affectedVersions": ">=6.0,<6.4.3",
        "title": "Authentication bypass in HTTP kernel"
      }
    ]
  }
}

WPScan for WordPress-specific vulnerabilities

WPScan pour les vulnérabilités spécifiques WordPress

WPScan is the go-to tool for WordPress security scanning. It checks WordPress core, plugins, and themes against its proprietary vulnerability database. However, WPScan requires direct access to the running WordPress site (or at minimum the wp-content directory structure), and its free API tier is limited to 25 requests per day.

WPScan est l'outil de référence pour le scan de sécurité WordPress. Il vérifie le noyau WordPress, les plugins et les thèmes contre sa base de données de vulnérabilités propriétaire. Cependant, WPScan nécessite un accès direct au site WordPress en fonctionnement (ou au minimum à la structure du répertoire wp-content), et son API gratuite est limitée à 25 requêtes par jour.

Limitations of manual checking

Limitations de la vérification manuelle

Why Agencies Need Continuous WordPress CVE Monitoring

Pourquoi les agences ont besoin d'un monitoring CVE WordPress continu

If you're a web agency managing WordPress sites for clients, security monitoring isn't optional—it's a contractual and reputational obligation. Here's why running composer audit once a month doesn't cut it:

Si vous êtes une agence web gérant des sites WordPress pour des clients, le monitoring de sécurité n'est pas optionnel—c'est une obligation contractuelle et réputationnelle. Voici pourquoi lancer composer audit une fois par mois ne suffit pas :

OptiBot for WordPress & PHP Agencies

OptiBot pour les agences WordPress & PHP

OptiBot is a WordPress CVE checker and PHP dependency security scanner designed for agencies who manage multiple client projects. Upload your composer.lock files and get continuous vulnerability monitoring without any code access, GitHub integration, or server credentials.

OptiBot est un vérificateur de CVE WordPress et un scanner de sécurité des dépendances PHP conçu pour les agences qui gèrent plusieurs projets clients. Uploadez vos fichiers composer.lock et obtenez un monitoring continu des vulnérabilités sans aucun accès au code, intégration GitHub ou identifiants serveur.

How it works

Comment ça fonctionne

Multi-project dashboard

Dashboard multi-projets

OptiBot's dashboard is built for agencies managing 20, 50, or 100+ client sites. See every WordPress project's vulnerability status at a glance: which sites are clean, which have critical CVEs, and which need immediate attention. Filter by severity, sort by last scan date, and drill into individual project reports. No more spreadsheets tracking which client sites you've manually audited this month.

Le dashboard d'OptiBot est conçu pour les agences gérant 20, 50 ou 100+ sites clients. Voyez l'état de vulnérabilité de chaque projet WordPress d'un coup d'oeil : quels sites sont propres, lesquels ont des CVE critiques et lesquels nécessitent une attention immédiate. Filtrez par sévérité, triez par date de dernier scan et accédez aux rapports individuels de chaque projet. Fini les tableurs pour suivre quels sites clients vous avez manuellement audités ce mois-ci.

No code access required

Aucun accès au code nécessaire

OptiBot only reads package names and versions from your composer.lock. It never sees your source code, never connects to your servers, never needs WordPress admin credentials. This makes it ideal for agencies working with clients who don't share code access—just ask the client for their composer.lock (or download it via FTP) and start monitoring. Your client's intellectual property stays with them; OptiBot only needs the dependency manifest.

OptiBot ne lit que les noms de packages et les versions depuis votre composer.lock. Il ne voit jamais votre code source, ne se connecte jamais à vos serveurs, n'a jamais besoin d'identifiants admin WordPress. C'est idéal pour les agences travaillant avec des clients qui ne partagent pas l'accès au code—demandez simplement au client son composer.lock (ou téléchargez-le via FTP) et commencez le monitoring. La propriété intellectuelle de votre client reste chez lui ; OptiBot n'a besoin que du manifeste de dépendances.

Common WordPress & PHP Vulnerabilities

Vulnérabilités courantes WordPress & PHP

Understanding the vulnerability types most common in the WordPress/PHP ecosystem helps you assess risk and prioritize updates. Here are the categories that appear most frequently in WordPress CVE disclosures:

Comprendre les types de vulnérabilités les plus courants dans l'écosystème WordPress/PHP vous aide à évaluer les risques et prioriser les mises à jour. Voici les catégories qui apparaissent le plus fréquemment dans les divulgations CVE WordPress :

SQL Injection (SQLi)

Injection SQL (SQLi)

The most dangerous and most exploited vulnerability class in WordPress plugins. Poorly written $wpdb->prepare() calls, raw SQL queries with unsanitized user input, and ORM misuse in Laravel/Symfony all create SQL injection vectors. Attackers can extract the entire database—user credentials, payment information, personal data—with a single crafted request. Plugins handling custom queries (forms, search, filtering) are the most common culprits.

La classe de vulnérabilités la plus dangereuse et la plus exploitée dans les plugins WordPress. Des appels $wpdb->prepare() mal écrits, des requêtes SQL brutes avec des entrées utilisateur non assainies et le mésusage d'ORM dans Laravel/Symfony créent des vecteurs d'injection SQL. Les attaquants peuvent extraire la base de données entière—identifiants utilisateurs, informations de paiement, données personnelles—avec une seule requête forgée. Les plugins gérant des requêtes personnalisées (formulaires, recherche, filtrage) sont les coupables les plus fréquents.

Cross-Site Scripting (XSS)

Cross-Site Scripting (XSS)

The single most common vulnerability type in WordPress plugins by volume. Stored XSS in form builders, comment plugins, and page builders allows attackers to inject malicious JavaScript that executes in every visitor's browser. Reflected XSS through search parameters, URL arguments, and AJAX endpoints is equally prevalent. WordPress's esc_html(), esc_attr(), and wp_kses() functions exist to prevent XSS, but plugins frequently bypass or forget them.

Le type de vulnérabilité le plus courant dans les plugins WordPress par volume. Le XSS stocké dans les constructeurs de formulaires, les plugins de commentaires et les page builders permet aux attaquants d'injecter du JavaScript malveillant qui s'exécute dans le navigateur de chaque visiteur. Le XSS réfléchi via les paramètres de recherche, les arguments d'URL et les endpoints AJAX est tout aussi répandu. Les fonctions WordPress esc_html(), esc_attr() et wp_kses() existent pour prévenir le XSS, mais les plugins les contournent ou les oublient fréquemment.

Authentication Bypass

Contournement d'authentification

Vulnerabilities that allow attackers to gain admin access without valid credentials. Common patterns include broken nonce verification, missing capability checks on AJAX handlers, privilege escalation through user meta manipulation, and flawed password reset flows. Authentication bypass CVEs are particularly critical because they give attackers full control of the WordPress installation—they can install backdoors, modify content, and pivot to the underlying server.

Des vulnérabilités qui permettent aux attaquants d'obtenir un accès admin sans identifiants valides. Les schémas courants incluent la vérification de nonce cassée, les contrôles de capacité manquants sur les handlers AJAX, l'escalade de privilèges via la manipulation des meta utilisateur et les flux de réinitialisation de mot de passe défaillants. Les CVE de contournement d'authentification sont particulièrement critiques car ils donnent aux attaquants le contrôle total de l'installation WordPress—ils peuvent installer des backdoors, modifier le contenu et pivoter vers le serveur sous-jacent.

Remote Code Execution (RCE)

Exécution de code à distance (RCE)

The highest-severity category. RCE vulnerabilities allow attackers to execute arbitrary PHP code on your server. Common vectors include insecure file upload handling in media/form plugins, eval() or unserialize() with user-controlled input, and template injection in page builders. A single RCE in a WordPress plugin gives attackers full server access—they can install cryptominers, exfiltrate databases, or use your server as a pivot point for further attacks. PHP's unserialize() function has been the source of numerous RCE CVEs in both WordPress plugins and core PHP libraries.

La catégorie de sévérité la plus élevée. Les vulnérabilités RCE permettent aux attaquants d'exécuter du code PHP arbitraire sur votre serveur. Les vecteurs courants incluent le traitement non sécurisé des uploads de fichiers dans les plugins média/formulaires, eval() ou unserialize() avec des entrées contrôlées par l'utilisateur, et l'injection de templates dans les page builders. Un seul RCE dans un plugin WordPress donne aux attaquants l'accès total au serveur—ils peuvent installer des cryptomineurs, exfiltrer des bases de données ou utiliser votre serveur comme point de pivot pour d'autres attaques. La fonction unserialize() de PHP a été la source de nombreux CVE RCE dans les plugins WordPress et les bibliothèques PHP core.

Frequently Asked Questions

Questions fréquentes

Does OptiBot scan my WordPress site directly?

OptiBot scanne-t-il mon site WordPress directement ?

No. OptiBot does not connect to your WordPress site or require any server access. You upload your composer.lock file, and OptiBot analyzes the package names and versions against the OSV.dev vulnerability database. Your source code and server credentials are never needed.

Non. OptiBot ne se connecte pas à votre site WordPress et ne nécessite aucun accès serveur. Vous uploadez votre fichier composer.lock, et OptiBot analyse les noms de packages et les versions contre la base de données de vulnérabilités OSV.dev. Votre code source et vos identifiants serveur ne sont jamais nécessaires.

What about WordPress plugins installed without Composer?

Et les plugins WordPress installés sans Composer ?

OptiBot analyzes composer.lock files, so it covers projects using Composer-managed WordPress workflows (Bedrock, Sage, Roots) and any PHP framework project (Laravel, Symfony). For traditional WordPress installations where plugins are installed via the admin panel without Composer, the lockfile won't include those plugins. In that case, use OptiBot for your Composer-managed dependencies and complement with WPScan for wp-admin-installed plugins.

OptiBot analyse les fichiers composer.lock, donc il couvre les projets utilisant des workflows WordPress gérés par Composer (Bedrock, Sage, Roots) et tout projet de framework PHP (Laravel, Symfony). Pour les installations WordPress traditionnelles où les plugins sont installés via le panneau d'administration sans Composer, le lockfile n'inclura pas ces plugins. Dans ce cas, utilisez OptiBot pour vos dépendances gérées par Composer et complétez avec WPScan pour les plugins installés via wp-admin.

Can I monitor both WordPress and Laravel projects together?

Puis-je surveiller des projets WordPress et Laravel ensemble ?

Absolutely. OptiBot supports composer.lock (PHP/WordPress/Laravel/Symfony), package-lock.json (Node.js/npm), requirements.txt and poetry.lock (Python), and Pipfile.lock (Python). You can monitor your entire agency portfolio—WordPress sites, Laravel APIs, Node.js frontends, Python microservices—from a single dashboard.

Absolument. OptiBot supporte composer.lock (PHP/WordPress/Laravel/Symfony), package-lock.json (Node.js/npm), requirements.txt et poetry.lock (Python), et Pipfile.lock (Python). Vous pouvez surveiller tout le portfolio de votre agence—sites WordPress, APIs Laravel, frontends Node.js, microservices Python—depuis un seul dashboard.

How quickly does OptiBot detect new WordPress CVEs?

Combien de temps met OptiBot pour détecter les nouveaux CVE WordPress ?

OptiBot re-scans all monitored projects daily against the latest OSV.dev data. When a new CVE is published and indexed by OSV.dev (typically within 24 hours of public disclosure), OptiBot will detect it on the next scan cycle and send you an email alert. For critical WordPress vulnerabilities, this means you're notified within 24-48 hours of disclosure—well ahead of the mass exploitation window.

OptiBot re-scanne tous les projets surveillés quotidiennement avec les dernières données OSV.dev. Quand un nouveau CVE est publié et indexé par OSV.dev (généralement dans les 24 heures suivant la divulgation publique), OptiBot le détectera au prochain cycle de scan et vous enverra une alerte email. Pour les vulnérabilités WordPress critiques, cela signifie que vous êtes notifié dans les 24 à 48 heures suivant la divulgation—bien avant la fenêtre d'exploitation massive.

Is OptiBot free for small agencies?

OptiBot est-il gratuit pour les petites agences ?

OptiBot offers a free plan with up to 3 projects and manual scanning—perfect for freelancers or agencies just getting started with security monitoring. For agencies managing more projects and needing daily automated monitoring, email alerts, and PDF reports, Pro (15€/month, 20 projects) and Agency (35€/month, unlimited projects) plans are available. Sign up free to start scanning your first WordPress project today.

OptiBot propose un plan gratuit avec jusqu'à 3 projets et scan manuel—parfait pour les freelances ou les agences qui débutent avec le monitoring de sécurité. Pour les agences gérant plus de projets et nécessitant un monitoring automatisé quotidien, des alertes email et des rapports PDF, les plans Pro (15€/mois, 20 projets) et Agency (35€/mois, projets illimités) sont disponibles. Inscrivez-vous gratuitement pour commencer à scanner votre premier projet WordPress dès aujourd'hui.

Start monitoring your WordPress dependencies for free

Commencez à surveiller vos dépendances WordPress gratuitement

Upload your composer.lock and get a full vulnerability report in seconds. No credit card, no server access required.

Uploadez votre composer.lock et obtenez un rapport de vulnérabilités complet en quelques secondes. Pas de carte bancaire, pas d'accès serveur nécessaire.

Start free → Commencer gratuitement →

Related pages

Pages associées