Aller au contenu
Blog

WordPress · LearnPress · LatePoint

WordPress : LearnPress (9.8) et LatePoint (9.1), deux plugins exploitables sans compte — CVE-2026-104736 et CVE-2026-110653

CVE-2026-104736 LearnPress (9.8, injection d'objet PHP) et CVE-2026-110653 LatePoint (9.1, contournement d'OTP) : versions touchées, exposition, mesures.

4 min de lectureCVE-2026-104736CVE-2026-110653

Le 17 octobre 2026, NVD a publié deux CVE critiques sur des plugins WordPress très répandus dans leur catégorie : LearnPress, plugin de cours en ligne (LMS), et LatePoint, plugin de prise de rendez-vous.

Point commun : aucune des deux ne demande de compte sur le site. Les mécanismes, eux, n'ont rien à voir — et c'est ce qui les rend intéressantes.

PluginCVECVSS 3.1Classe de failleBornes NVD
LearnPressCVE-2026-1047369.8Injection d'objet PHP (CWE-502)≤ 4.4.10
LatePointCVE-2026-1106539.1Contournement d'authentification par race condition (CWE-287)≤ 5.7.4

Scores publiés par Wordfence (CNA) ; NVD n'a pas encore analysé ces entrées. Aucune n'est au CISA KEV à la date de rédaction. Les bornes sont « jusqu'à et y compris » : NVD ne donne pas de version corrigée. Vérifie la page du plugin avant de considérer une version comme sûre.


LearnPress — CVE-2026-104736

Vecteur : AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (9.8)

Le paramètre checkout-email de l'action AJAX de paiement est nettoyé par sanitize_text_field(), qui ne retire pas la syntaxe d'un objet PHP sérialisé. La valeur est stockée dans la table de session de LearnPress, puis relue par LP_Session_Handler::get() et passée à unserialize() sans restriction allowed_classes lors des requêtes suivantes.

Résultat : un visiteur anonyme peut faire désérialiser un objet PHP de son choix.

Ce que « injection d'objet PHP » implique

À elle seule, une injection d'objet ne fait rien : il faut une chaîne de gadgets (« POP chain »), c'est-à-dire une classe chargée sur le site dont les méthodes magiques (__destruct, __wakeup…) produisent un effet utile à l'attaquant. La description NVD ne mentionne pas de chaîne présente dans LearnPress lui-même.

Mais sur un site WordPress réel, avec des dizaines de plugins chargés, la question n'est pas si une chaîne existe, c'est laquelle. C'est pour cette raison que la faille est notée 9.8 : l'issue typique est l'exécution de code, la suppression de fichiers ou la lecture de données sensibles, selon ce que le reste du site embarque.

Exposition : tout site où le tunnel de paiement LearnPress est actif.


LatePoint — CVE-2026-110653

Vecteur : AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N (9.1)

LatePoint permet aux clients de se connecter avec un code OTP à 6 chiffres envoyé par email ou SMS, limité à 10 tentatives. Le compteur de tentatives est incrémenté à partir d'une valeur lue en mémoire, sans garde WHERE attempts < 10 sur l'UPDATE ni verrou de ligne.

En envoyant des requêtes concurrentes au point de terminaison auth__verify_otp, un attaquant dépasse largement les 10 essais avant que le verrouillage ne s'applique, et peut brute-forcer le code. Le nonce qui protège ce point de terminaison n'aide pas : il est fourni à n'importe qui par les endpoints publics request_otp et resend_otp.

Condition : connaître l'adresse email ou le numéro de téléphone d'un client enregistré. Impact : accès complet au compte de ce client — rendez-vous et données personnelles.

C'est un bel exemple de faille qui ne se voit pas à la lecture d'une fonction : chaque ligne est correcte, c'est leur exécution simultanée qui ne l'est pas. Les références NVD pointent vers le code de la version 5.7.4 et vers un fichier de la version 5.7.5 ; vérifie dans le journal des modifications du plugin si cette version corrige la faille.

Enjeu RGPD : pour un cabinet, une clinique ou un salon, les données de rendez-vous sont souvent sensibles. Une prise de compte client est une violation de données au sens du RGPD.


Détection

  • LearnPress : contenu anormal dans la table de session LearnPress (chaînes commençant par O: ou a: dans des champs censés contenir un email) ; fichiers PHP récents dans wp-content/ ; nouveaux comptes administrateurs.
  • LatePoint : rafales de requêtes vers auth__verify_otp sur une même adresse en quelques secondes ; demandes d'OTP que les clients n'ont pas faites ; connexions clients depuis des IP inhabituelles.
  • Les deux : journaux d'accès du serveur web filtrés sur admin-ajax.php, où passent ces actions.

Pour les six plugins critiques publiés la veille, voir notre article du 16 octobre.


Mitigation

  1. Identifier les sites concernés : wp plugin list sur chaque instance.
  2. Mettre à jour au-delà des bornes NVD dès qu'une version corrigée est publiée ; à défaut, désactiver le plugin ou, pour LatePoint, la connexion client par OTP.
  3. LatePoint : un limiteur de débit au niveau du serveur web ou du WAF sur admin-ajax.php réduit fortement la fenêtre de brute-force.
  4. LearnPress : en cas de doute, purger la table de session du plugin et auditer les fichiers récemment modifiés.

Pourquoi surveiller en continu vos plugins WordPress

Huit plugins critiques en deux jours, entre cet article et celui de la veille. Sur un parc de sites WordPress, la seule question utile est « lequel de mes sites a lequel de ces plugins, dans quelle version ».

Avec cveo.tech, inventorie tes plugins WordPress avec leur version et reçois une alerte dès qu'une CVE critique les touche.

Chaque lundi

Les CVE critiques de la semaine, dans votre boîte mail

Un email par semaine : les vulnérabilités CVSS ≥ 9 publiées ces sept derniers jours, et nos dernières analyses. Rien d'autre.

Double confirmation par email. Désinscription en un clic, à tout moment.

Surveillez votre propre parc

Recherche CVE, inventaire de parc et alertes email, gratuitement.