
Доказательство концепции для CVE-2026-89282: перехват порядка поиска прокси-DLL в установках Apache Lounge для Windows, приводящий к повышению привилегий до SYSTEM при перезапуске службы.
Автор: Ashish Kunwar (@D0rkerDevil)
Дата: 2026-10-17
CVE: CVE-2026-89282
CWE: CWE-427 (Неконтролируемый элемент пути поиска) / CWE-732 (Неверное назначение разрешений для критического ресурса)
CVSS 3.1: 7.3 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Исправлено в: Apache Lounge 2.4.68-260920 Win64 (20 сентября 2026 г.)
Дистрибутив Apache HTTP Server для Windows от Apache Lounge (сборки до 2.4.68-260920) устанавливается с небезопасными ACL по умолчанию, которые предоставляют BUILTIN\Users право записи (WD + AD) на дерево каталогов установки, включая C:\Apache24\bin\. В сочетании со стандартным порядком поиска DLL в Windows — который для DLL, отсутствующих в реестровом ключе KnownDLLs, загружает их из каталога приложения раньше, чем из System32 — любой локальный обычный пользователь может подложить прокси-DLL, исполняющую произвольный код от имени NT AUTHORITY\SYSTEM при перезапуске службы Apache.
Данный PoC демонстрирует полную эксплуатацию: пользователь с низкими привилегиями подкладывает прокси-библиотеку VCRUNTIME140.dll с 71 PE-форвардером экспортов в C:\Apache24\bin\. При перезапуске Apache httpd.exe (работающий как LocalSystem) загружает прокси, которая перенаправляет все легитимные вызовы к настоящей DLL, одновременно исполняя полезную нагрузку с привилегиями SYSTEM в DllMain. Apache продолжает работать нормально — без сбоев и нарушений в работе.
Установщик Apache Lounge для Windows создаёт C:\Apache24\ в корне C:\, который в Windows по умолчанию наследует разрешения Authenticated Users: Modify. Установщик не ужесточает эти ACL. Это даёт любому локальному пользователю возможность записывать новые файлы в:
| Каталог | Воздействие |
|---|---|
C:\Apache24\bin\ | Перехват DLL — 21 системная DLL, подверженная перехвату |
C:\Apache24\modules\ | Прямая инъекция модулей |
C:\Apache24\conf\ | Подмена конфигурации |
C:\Apache24\htdocs\ | Модификация веб-контента |
Служба Apache24 работает как LocalSystem (SYSTEM) с типом запуска AUTO_START, поэтому любая DLL, загруженная из каталога приложения, исполняется на наивысшем уровне привилегий Windows.
# Cross-compile from Linux/macOS (mingw-w64)
x86_64-w64-mingw32-gcc -shared -o VCRUNTIME140.dll vcruntime140_hijack.c vcruntime140.def \
-Wl,--enable-stdcall-fixup -s
# Or compile on Windows (MSVC)
cl /LD vcruntime140_hijack.c /link /DEF:vcruntime140.def /OUT:VCRUNTIME140.dll
REM Create hard link to the real DLL for export forwarding
mklink /H "C:\Apache24\bin\vcruntime140_orig.dll" "C:\Windows\System32\VCRUNTIME140.dll"
REM Plant the proxy DLL
copy VCRUNTIME140.dll "C:\Apache24\bin\VCRUNTIME140.dll"
Внедрённая DLL срабатывает при следующем перезапуске службы Apache. На производственном сервере это происходит через:
httpd -k restart)После перезапуска httpd.exe загружает нашу прокси-DLL с правами SYSTEM. Полезная нагрузка DllMain выполняет:
Administrators21 системная DLL, загружаемая httpd.exe, отсутствует в разделе реестра KnownDLLs и может быть перехвачена из C:\Apache24\bin\:
| DLL | KnownDLL | Перехватываемая |
|---|---|---|
| VCRUNTIME140.dll | Нет | Да — эксплуатирована |
| ucrtbase.dll | Нет | Да |
| KERNELBASE.dll | Нет | Да |
| bcrypt.dll | Нет | Да |
| msvcp_win.dll | Нет | Да |
| CRYPTSP.dll | Нет | Да |
| rsaenh.dll | Нет | Да |
| CRYPTBASE.dll | Нет | Да |
| bcryptPrimitives.dll | Нет | Да |
| mswsock.dll | Нет | Да |
| napinsp.dll | Нет | Да |
| DNSAPI.dll | Нет | Да |
| IPHLPAPI.DLL | Нет | Да |
| winrnr.dll | Нет | Да |
| nlansp_c.dll | Нет | Да |
| wshbth.dll | Нет | Да |
| rasadhlp.dll | Нет | Да |
| fwpuclnt.dll | Нет | Да |
| ntdll.dll | Нет | Да |
| win32u.dll | Нет | Да |
| gdi32full.dll | Нет | Да |
Обычный пользователь не может самостоятельно инициировать перезапуск Apache в конфигурации Windows Server 2022 по умолчанию. Было исчерпывающе протестировано более 16 методов — все завершились неудачей:
TerminateProcess для PID httpd → ACCESS_DENIEDnet stop/start Apache24 → SDDL запрещает RP/WP для интерактивного входа/входа службыsc stop Apache24 → Access Deniedhttpd -k restart → доступ к SCM запрещёнSeShutdownPrivilege отсутствуетschtasks /ru SYSTEM → требует прав администратораТриггером служит плановое обслуживание сервера, которое неизбежно в любой производственной системе.
Незамедлительно (вручную):
icacls "C:\Apache24" /remove:g "BUILTIN\Users" /T
icacls "C:\Apache24" /grant "BUILTIN\Users:(OI)(CI)(RX)" /T
Постоянное решение: обновитесь до Apache Lounge 2.4.68-260920 или более поздней версии, в которой поставляются исправленные ACL установщика.
Эшелонированная защита: разверните политики смягчения процессов, чтобы ограничить загрузку DLL только подписанными бинарными файлами.
| Файл | Описание |
|---|---|
vcruntime140_hijack.c | Исходный код прокси-DLL — полезная нагрузка DllMain + proof-of-concept |
vcruntime140.def | Определения переадресации экспортов (71 экспорт → vcruntime140_orig.dll) |
deploy_hijack.bat | Скрипт автоматизированного развертывания |
| Дата | Событие |
|---|---|
| 2026-09-20 | Apache Lounge выпускает 2.4.68-260920 с исправлением ACL |
| 2026-09-22 | CVE-2026-89282 опубликован CERT/CC |
| 2026-10-16 | Независимое обнаружение + полный PoC (данная работа) |
| 2026-10-17 | Подтверждено как дубликат CVE-2026-89282; публичный релиз |
Данный PoC выпущен исключительно в образовательных целях и для авторизованного тестирования безопасности. Лицензия MIT.
Независимо обнаружено и задокументировано @D0rkerDevil. Полная цепочка эксплуатации разработана до того, как стало известно о CVE-2026-89282.