Новости и статьи

RCE в 1С-Битрикс, но есть нюанс

18.12.2025 · новости


15 декабря 2025 вышло публичное раскрытие уязвимостей CVE-2025-67886/CVE-2025-67887 в 1C-Bitrix. Патч на текущий момент не выпущен, PoC доступен.

Описание уязвимостей

Уязвимости находятся в Translate Module 1C-Bitrix, который позволяет загружать и распаковывать архивы во временную директорию. Однако система не проверяет содержимое архивов перед извлечением — это позволяет злоумышленнику включить в архив PHP-файл и специально созданный .htaccess, добиться его распаковки и выполнения на сервере.

Важно! Почему это RCE не для всех

• Для успешной эксплуатации злоумышленнику необходимо иметь права “SOURCE” и “WRITE” для Translate Module. Фактически эти права уже подразумевает возможность изменения php-файлов.

• Инфраструктуры, работающие на чистом Nginx (без Apache / без обработчика .htaccess) не подвержены полноценной RCE — PHP-файлы, как правило, отдаются как статика.
В этом случае риск смещается в сторону arbitrary file write в web-доступной зоне, а не гарантированного RCE.

• На связке nginx → Apache или чистом Apache при включённом AllowOverride сценарий ближе к «настоящей» RCE, но с правами администратора.

Коллеги из 1С-Битрикс подтверждают наши выводы в своем официальном сообщении: https://t.me/bitrixkiberbez/76

Масштаб

По данным СКИПА в Рунете около 2.000.000 инстансов 1С-Bitrix. Потенциально ~10% хостов могут быть подвержены данной проблеме.
Клиенты PentOps были своевременно уведомлены.

Оценка риска

• Официальный CVSS еще не присвоен.
• Формально CVSS высокий, но на практике — низкий из-за требуемых привилегий.
• Пересчёт CyberOK (базовый CVSS v3.1): 7.2 (Высокий)
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
• Временная метрика (на сегодня): 6.8
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H/E:P/RL:U/RC:C
• Рейтинг CyberOK RWD (Real World Danger):
3/5 — реальный риск эксплуатации

Уязвимые версии

• CVE-2025-67887: все версии Translate Module 1C-Bitrix <= 25.100.500
• CVE-2025-67886: все версии Translate Module Bitrix24 <=25.100.300

Proof of Concept

Публично доступный PoC подтвержден.

Что смотреть в логах

Последовательная цепочка загрузки локализации (ключевой индикатор):
1. /bitrix/services/main/ajax.php?action=bitrix%3Atranslate.controller.asset.grabber.upload

2. /bitrix/services/main/ajax.php?action=bitrix%3Atranslate.controller.asset.grabber.extract

3. /bitrix/services/main/ajax.php?action=bitrix%3Atranslate.controller.asset.grabber.apply

Эндпоинт apply — самый критичный, так как именно он возвращает путь к временной директории, где может находиться загруженный shell.

Рекомендации по защите и проверке

1. Срочно проверьте, кому выдан доступ к модулю — cнимите SOURCE/WRITE со всех, кроме узкого круга админов (а лучше временно закройте модуль).

2. Закройте доступ к контроллерам translate (как минимум к обработчикам распаковки) через WAF/ACL, оставив только админские IP/VPN.

3. Web-сервер:
Apache: запретите .htaccess в writable-директориях (AllowOverride None) и/или запретите handler’ы/исполнение PHP там, куда может попасть распаковка.

Nginx: убедитесь, что PHP исполняется только в ожидаемых location’ах (и точно не из upload/tmp/кэшей/временных директорий).

В аварийном режиме можно дополнительно мониторить и удалять появляющиеся .htaccess в writable-каталогах, но это костыль — правильнее резать на уровне конфигурации.

4. Проверить папку BXTEMP-XXXX-XX-XX на наличие подозрительных архивов, нестандартных подпапок и .php-файлов.
Например: /www/upload/tmp/BXTEMP-2025-12-18/16/translate

Выводы

Да, это RCE, однако всё упирается в привилегии и конфиг веб-сервера. Для успешной эксплуатации нужны права, которые и так дают доступ к инструменту PHP command line, инструмент позволяет выполнять php-код без танцев с бубном и загрузкой файлов. Проверьте права модуля «Translate» и запретите исполнение в writable-зонах — это закрывает большую часть реального риска.

Для самых бдительных эксперты СайберОК подготовили фикс:

https://github.com/cyberok-org/CVE-2025-67887

Источники

https://karmainsecurity.com/KIS-2025-08
https://blog.nginx.org/blog/converting-apache-to-nginx-rewrite-rules