
Технический анализ CVE-2026-24072, локального повышения привилегий в mod_rewrite Apache HTTP Server, включая первопричину, исправления и Docker-лабораторию для проверки.
CVE-2026-24072 — это уязвимость локального повышения привилегий средней степени серьезности в Apache HTTP Server 2.4.66 и более ранних версиях. Она позволяет локальным авторам
.htaccessчитать произвольные файлы в файловой системе с привилегиями пользователяhttpd, используя вычисление выраженийap_exprвнутриmod_rewrite,mod_setenvifиmod_proxy_fcgi.
| Поле | Значение |
|---|
| ID CVE | CVE-2026-24072 |
| Серьезность | Средняя (локальное повышение привилегий / раскрытие информации) |
| Затронутые версии | Apache HTTP Server <= 2.4.66 |
| Исправлено в | Apache HTTP Server 2.4.67 |
| Вектор атаки | Локальный (требуется доступ на запись к .htaccess) |
CVE-2026-24072-analysis.mdmod_rewrite.diff, mod_setenvif.diff, mod_proxy_fcgi.diffexamples/Движок вычисления выражений Apache (ap_expr) предоставляет функции для проверки файловой системы:
file(path) — читает содержимое файлаfilesize(path) — возвращает размер файла-d path, -e path, -f path, -s path, -L path, -h path, -x path — проверки файловой системыВ 2.4.66 и более ранних версиях такие модули, как mod_rewrite (через RewriteCond expr=...), mod_setenvif (через SetEnvIfExpr) и mod_proxy_fcgi (через условные выражения ProxyFCGIBackendType), разбирали и вычисляли выражения ap_expr без передачи флага AP_EXPR_FLAG_RESTRICTED при работе в контексте .htaccess. Это означало, что любой локальный пользователь, имеющий возможность записать файл .htaccess, мог использовать эти функции выражений для проверки или чтения файловой системы с полными привилегиями процесса httpd.
Исправление концептуально простое: при разборе выражений ap_expr в контексте .htaccess необходимо передавать флаг AP_EXPR_FLAG_RESTRICTED.
Все три пропатченных модуля используют одну и ту же идиому для определения контекста разбора .htaccess:
int in_htaccess = cmd->pool == cmd->temp_pool;
Когда Apache разбирает файлы .htaccess, пул конфигурации для каталога (cmd->pool) совпадает с временным пулом (cmd->temp_pool). Это хорошо известное внутреннее соглашение Apache для определения контекста .htaccess (для каталога) в отличие от контекста основного сервера/виртуального хоста.
| Файл | Описание |
|---|---|
CVE-2026-24072-analysis.md | Полный технический анализ и оценка воздействия |
mod_rewrite.diff | Патч для modules/mappers/mod_rewrite.c |
mod_setenvif.diff | Патч для modules/metadata/mod_setenvif.c |
mod_proxy_fcgi.diff | Патч для modules/proxy/mod_proxy_fcgi.c |
httpd-2.4.66/ | Дерево исходного кода уязвимой версии Apache |
httpd-2.4.67/ | Дерево исходного кода исправленной версии Apache |
examples/ | Файлы .htaccess proof-of-concept |
Этот репозиторий включает Docker-лабораторию для тестирования, которая позволяет переключаться между уязвимым и пропатченным модулями mod_rewrite для проверки работоспособности исправления:
# Сборка и запуск лаборатории
make build
make up
# Запуск полной автоматизированной матрицы тестов (оба варианта)
make test
Лаборатория использует файл-маркер (/opt/sentinel/secret.txt), который доступен для чтения только пользователю daemon (пользователь, под которым работает httpd). В уязвимой сборке выражения .htaccess могут читать и сопоставлять содержимое маркера. В исправленной сборке разбор завершается ошибкой not available in restricted context.
Полное руководство см. в docs/TESTING.md.
| Файл | Описание |
|---|---|
CVE-2026-24072-analysis.md | Полный технический анализ и оценка воздействия |
mod_rewrite.diff | Патч для modules/mappers/mod_rewrite.c |
mod_setenvif.diff | Патч для modules/metadata/mod_setenvif.c |
mod_proxy_fcgi.diff | Патч для modules/proxy/mod_proxy_fcgi.c |
httpd-2.4.66/ | Дерево исходного кода уязвимой версии Apache |
httpd-2.4.67/ | Дерево исходного кода исправленной версии Apache |
examples/ | Файлы .htaccess proof-of-concept |
docker/ | Docker-файлы сборки для тестовой лаборатории |
scripts/ | Скрипты переключения и тестирования |
tests/ | Тестовые фикстуры и матрица |
docs/TESTING.md | Полное руководство по тестированию |
docs/session/ | Экспорт сессии из процесса проектирования |
Этот репозиторий предназначен только для образовательных и защитных целей. Примеры proof-of-concept предназначены для того, чтобы помочь специалистам по безопасности понять эту уязвимость и защититься от нее. Не используйте эти методы на системах, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.