
CVE-2026-67598 — Emlog Pro: отключена проверка TLS-сертификата в AI-ассистенте (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 встроен ИИ-ассистент для администраторов (admin/ai.php + include/service/ai.php),
который выполняет исходящие HTTPS-запросы к настроенному LLM-провайдеру — чат, потоковая передача,
генерация изображений — а также вспомогательный модуль для скрейпинга Bing для команды @em-help.
Каждый вспомогательный модуль исходящих запросов безусловно отключает проверку TLS-сертификатов:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
Проверка отключена независимо от настроенного URL провайдера или сетевого пути, поэтому любой
злоумышленник из соседней сети / MITM-атакующий, находящийся между сервером Emlog и
api_url, может незаметно перехватить TLS-сессию с помощью поддельного сертификата и:
Authorization: Bearer <apiKey> — платный API-ключ LLM-провайдера сайта.query_database и update_config.Это чистый дефект безопасности транспортного уровня — он не ограничен интерфейсом подтверждения вызова ИИ-инструментов.
flowchart LR
A["🖥️ Сервер Emlog<br/>ИИ-ассистент"] -->|"HTTPS-запрос<br/>Bearer <apiKey>"| M{"😈 Злоумышленник MITM<br/>(поддельный сертификат)"}
M -->|"Проверка TLS ОТКЛЮЧЕНА<br/>→ принято"| P["☁️ LLM-провайдер"]
M -.->|"🔑 читает API-ключ"| X["Ключ похищен"]
M -.->|"💉 поддельный ответ"| A
A -->|"действует на внедрённый<br/>ИИ-вывод"| T["⚙️ инструменты query_database /<br/>update_config"]
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() | Генерация изображений ИИ |
fetchSearchHtml() | Скрейпинг Bing для @em-help |
# 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/ — главная страница и вход в админ-панель.
Включите проверку TLS для всех исходящих вызовов в 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);
Самостоятельно размещённые / OpenAI-совместимые конечные точки с частным CA следует поддерживать через собственный набор CA (
CURLOPT_CAINFO) — ни в коем случае не отключая проверку глобально.
В ходе аудита той же ИИ-функции было обнаружено, что Ai::queryDatabase() особым образом блокирует
прямые SQL-записи в таблицу blog, но не в таблицу 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 | CVE зарезервирован через VulnCheck |
| 2026-08-03 | Опубликован CVE-2026-67598 |
Опубликовано в образовательных целях и для защиты информации в рамках скоординированного раскрытия.
Обнаружил и сообщил Ilhomjon Rustamov (@IlhomjonR) · CNA: VulnCheck