
CVE-2026-67598 — Emlog Pro: AI सहायक में अक्षम TLS प्रमाणपत्र सत्यापन (MITM → API-कुंजी चोरी)। CWE-295, CVSS 9.1। @IlhomjonR द्वारा रिपोर्ट किया गया।
सारांश · आक्रमण प्रवाह · प्रभावित कोड · प्रमाण · निवारण · समयरेखा · संदर्भ
| CVE ID | CVE-2026-67598 |
| उत्पाद | emlog/emlog — Emlog Pro |
| प्रभावित संस्करण | Emlog Pro 2.6.23 तक |
| कमज़ोरी | CWE-295: अनुचित प्रमाणपत्र सत्यापन |
| CVSS v4.0 | 9.1 — गंभीर |
| CVSS v3.1 | 7.4 — उच्च |
| वेक्टर | नेटवर्क-निकटवर्ती · बिना विशेषाधिकार · MITM |
| CNA | VulnCheck · GHSA-hf85-99vj-m4c5 |
| आरक्षित / प्रकाशित | 2026-07-29 / 2026-08-03 |
| शोधकर्ता | Ilhomjon Rustamov (@IlhomjonR) |
Emlog Pro एक एडमिन-मुखी AI असिस्टेंट (admin/ai.php + include/service/ai.php) के साथ आता है
जो कॉन्फ़िगर किए गए LLM प्रदाता को आउटबाउंड HTTPS कॉल करता है — चैट, स्ट्रीमिंग, इमेज
जनरेशन — साथ ही @em-help कमांड के लिए एक Bing-स्क्रैपिंग सहायक।
हर आउटबाउंड रिक्वेस्ट हेल्पर बिना शर्त TLS प्रमाणपत्र सत्यापन अक्षम कर देता है:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
सत्यापन कॉन्फ़िगर किए गए प्रदाता URL या नेटवर्क पथ की परवाह किए बिना बंद रहता है, इसलिए
Emlog सर्वर और api_url के बीच बैठा कोई भी नेटवर्क-निकटवर्ती / man-in-the-middle हमलावर
जाली प्रमाणपत्र के साथ TLS सत्र को पारदर्शी रूप से इंटरसेप्ट कर सकता है और:
Authorization: Bearer <apiKey> हेडर चुरा सकता है — साइट की भुगतान वाली LLM-प्रदाता API कुंजी।query_database और update_config टूल एक्सेस है।यह एक विशुद्ध ट्रांसपोर्ट-सुरक्षा दोष है — यह AI टूल-कॉलिंग पुष्टिकरण UI द्वारा नियंत्रित नहीं है।
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 — इनमें CURLOPT_SSL_VERIFYPEER / CURLOPT_SSL_VERIFYHOST कॉल:
| फ़ंक्शन | उद्देश्य |
|---|---|
send() | LLM चैट अनुरोध |
sendStream() | स्ट्रीमिंग चैट प्रतिक्रिया |
sendImageRequest() | AI इमेज जनरेशन |
fetchSearchHtml() | @em-help के लिए Bing स्क्रैपिंग |
# 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.
ऑडिट किए गए Emlog Pro 2.6.23 इंस्टेंस के स्क्रीनशॉट
screenshots/ में हैं — होम पेज और एडमिन लॉगिन।
include/service/ai.php में सभी आउटबाउंड कॉल के लिए TLS सत्यापन सक्षम करें:
- 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);
निजी CA वाले स्व-होस्टेड / OpenAI-संगत एंडपॉइंट को कस्टम CA बंडल (
CURLOPT_CAINFO) के माध्यम से समर्थित किया जाना चाहिए — सत्यापन को वैश्विक रूप से अक्षम करके कभी नहीं।
उसी AI सुविधा का ऑडिट करते समय, Ai::queryDatabase() को विशेष रूप से blog टेबल पर सीधे SQL
लेखन को ब्लॉक करते हुए पाया गया, लेकिन user टेबल (जिसमें role / password होता है) को नहीं।
@em-help के माध्यम से अप्रत्यक्ष-प्रॉम्प्ट-इंजेक्शन पथ (लाइव Bing परिणाम + स्क्रैप की गई
FAQ जो उस मॉडल में फीड होती हैं जिसके पास query_database / update_config टूल एक्सेस है) के साथ
मिलकर, यह user / options लेखन को संकीर्ण-दायरे वाले टूल्स के माध्यम से रूट करके हार्डनिंग के योग्य
है — जिस तरह write_article पहले से ब्लॉग पोस्ट संभालता है। पूर्ण विवरण REPORT.md में
(उपरोक्त CVE से अलग ट्रैक किया गया)।
| दिनांक | घटना |
|---|---|
| 2026-07-24 | Emlog Pro 2.6.23 (कमिट ff5637e) के ऑडिट के दौरान कमज़ोरी की पहचान |
| 2026-07-29 | VulnCheck के माध्यम से CVE आरक्षित |
| 2026-08-03 | CVE-2026-67598 प्रकाशित |
समन्वित प्रकटीकरण के भाग के रूप में शैक्षिक और रक्षात्मक-सुरक्षा उद्देश्यों के लिए प्रकाशित।
खोज एवं रिपोर्ट: Ilhomjon Rustamov (@IlhomjonR) · CNA: VulnCheck