
CVE-2026-67598 — Emlog Pro: disabled TLS certificate validation in AI assistant (MITM → API-key theft). CWE-295, CVSS 9.1. Reported by @IlhomjonR.
MITM adjacent au réseau → vol de clé API du fournisseur LLM & injection de réponse IA
Résumé · Déroulement de l'attaque · Code affecté · Preuve · Correctif · Chronologie · Références
Emlog Pro est fourni avec un assistant IA destiné à l'administration (admin/ai.php + include/service/ai.php)
qui effectue des appels HTTPS sortants vers un fournisseur LLM configuré — chat, streaming, génération
d'images — ainsi qu'un utilitaire de scraping Bing pour la commande @em-help.
Chaque utilitaire de requête sortante désactive inconditionnellement la validation des certificats TLS :
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
La vérification est désactivée quelle que soit l'URL du fournisseur configuré ou le chemin réseau ; par conséquent, tout
attaquant adjacent au réseau / homme du milieu situé entre le serveur Emlog et le
api_url peut intercepter de manière transparente la session TLS à l'aide d'un certificat forgé et :
Authorization: Bearer <apiKey> — la clé API payante du fournisseur LLM du site.query_database et update_config.Il s'agit d'un pur défaut de sécurité du transport — il n'est pas conditionné par l'interface de confirmation des appels d'outils de l'IA.
flowchart LR
A["🖥️ Emlog server<br/>AI assistant"] -->|"HTTPS request<br/>Bearer <apiKey>"| M{"😈 MITM attacker<br/>(forged cert)"}
M -->|"TLS verify DISABLED<br/>→ accepted"| P["☁️ LLM provider"]
M -.->|"🔑 reads API key"| X["Key exfiltrated"]
M -.->|"💉 forged response"| A
A -->|"acts on injected<br/>AI output"| T["⚙️ query_database /<br/>update_config tools"]
classDef bad fill:#7f1d1d,stroke:#ef4444,color:#fff;
classDef ok fill:#1e3a8a,stroke:#3b82f6,color:#fff;
class M,X bad;
class A,P,T ok;
include/service/ai.php — les appels CURLOPT_SSL_VERIFYPEER / CURLOPT_SSL_VERIFYHOST dans :
| Fonction | Rôle |
|---|---|
send() | Requête de chat LLM |
# 1. Configure the AI assistant with any OpenAI-compatible provider URL + API key.
# 2. Put a MITM proxy with an UNTRUSTED CA between Emlog and the provider:
mitmproxy --mode reverse:https://api.provider.example -p 8443
# 3. Trigger any AI chat / image-gen / @em-help request from the admin panel.
# 4. Result: request succeeds despite the untrusted cert, and the
# "Authorization: Bearer ..." header is readable in the proxy log
# → certificate validation is confirmed disabled.
Les captures d'écran de l'instance Emlog Pro 2.6.23 auditée se trouvent dans
screenshots/ — page d'accueil et connexion administrateur.
Activez la vérification TLS pour tous les appels sortants dans include/service/ai.php :
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
Les points de terminaison auto-hébergés / compatibles OpenAI avec une AC privée devraient être pris en charge via un bundle d'AC personnalisé (
CURLOPT_CAINFO) — jamais en désactivant la vérification globalement.
Lors de l'audit de la même fonctionnalité IA, Ai::queryDatabase() s'est avéré bloquer spécifiquement les
écritures SQL directes dans la table blog mais pas la table user (qui contient role / password).
Combiné au vecteur d'injection indirecte par invite via @em-help (résultats Bing en direct + FAQ
scrapée injectées dans un modèle disposant de l'accès aux outils query_database / update_config), il vaut la peine
de durcir le système en acheminant les écritures user / options via des outils à portée étroite — comme
write_article le fait déjà pour les articles de blog. Détails complets dans REPORT.md
(suivi séparé du CVE ci-dessus).
| Date | Événement |
|---|---|
| 2026-07-24 | Vulnérabilité identifiée lors de l'audit d'Emlog Pro 2.6.23 (commit ff5637e) |
| 2026-07-29 |
Publié à des fins éducatives et de sécurité défensive dans le cadre d'une divulgation coordonnée.
Découvert & signalé par Ilhomjon Rustamov (@IlhomjonR) · CNA : VulnCheck
| ID CVE | CVE-2026-67598 |
| Produit | emlog/emlog — Emlog Pro |
| Versions affectées | Emlog Pro jusqu'à 2.6.23 |
| Faiblesse | CWE-295 : Validation de certificat incorrecte |
| CVSS v4.0 | 9.1 — Critique |
| CVSS v3.1 | 7.4 — Élevé |
| Vecteur | Adjacent au réseau · Aucun privilège · MITM |
| CNA | VulnCheck · GHSA-hf85-99vj-m4c5 |
| Réservé / Publié | 2026-07-29 / 2026-08-03 |
| Chercheur | Ilhomjon Rustamov (@IlhomjonR) |
sendStream() |
| Réponse de chat en streaming |
sendImageRequest() | Génération d'images IA |
fetchSearchHtml() | Scraping Bing pour @em-help |
| CVE réservé via VulnCheck |
| 2026-08-03 | CVE-2026-67598 publié |