
Proof-of-concept per CVE-2026-89282: dirottamento dell'ordine di ricerca delle DLL proxy nelle installazioni Windows di Apache Lounge che consente l'escalation dei privilegi a SYSTEM al riavvio del servizio.
Autore: Ashish Kunwar (@D0rkerDevil)
Data: 2026-10-17
CVE: CVE-2026-89282
CWE: CWE-427 (Uncontrolled Search Path Element) / CWE-732 (Incorrect Permission Assignment for Critical Resource)
CVSS 3.1: 7.3 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Corretto in: Apache Lounge 2.4.68-260920 Win64 (20 settembre 2026)
La distribuzione Windows di Apache HTTP Server di Apache Lounge (precedente alla build 2.4.68-260920) viene installata con ACL predefinite non sicure che concedono a BUILTIN\Users l'accesso in scrittura (WD + AD) all'albero della directory di installazione, inclusa C:\Apache24\bin\. Combinato con il normale ordine di ricerca delle DLL di Windows — che carica dalla directory dell'applicazione prima di System32 per le DLL non presenti nella chiave di registro KnownDLLs — qualsiasi utente locale standard può collocare una DLL proxy che esegue codice arbitrario come NT AUTHORITY\SYSTEM al riavvio del servizio Apache.
Questa PoC dimostra lo sfruttamento completo: un utente con privilegi limitati colloca una VCRUNTIME140.dll proxy con 71 forwarder di export PE in C:\Apache24\bin\. Al riavvio di Apache, httpd.exe (in esecuzione come LocalSystem) carica il proxy, che inoltra tutte le chiamate legittime alla DLL reale mentre esegue un payload con privilegi SYSTEM in DllMain. Apache continua a servire normalmente — senza crash e senza interruzioni.
L'installer Windows di Apache Lounge crea C:\Apache24\ sotto C:\, che su Windows eredita per impostazione predefinita i permessi Authenticated Users: Modify. L'installer non rafforza queste ACL. Ciò concede a qualsiasi utente locale la possibilità di scrivere nuovi file in:
| Directory | Impatto |
|---|---|
C:\Apache24\bin\ | Hijack DLL — 21 DLL di sistema dirottabili |
C:\Apache24\modules\ | Iniezione diretta di moduli |
C:\Apache24\conf\ | Manomissione della configurazione |
C:\Apache24\htdocs\ | Modifica del contenuto web |
Il servizio Apache24 viene eseguito come LocalSystem (SYSTEM) con AUTO_START, facendo sì che qualsiasi DLL caricata dalla directory dell'applicazione venga eseguita al massimo livello di privilegio di 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"
La DLL inserita viene attivata al successivo riavvio del servizio Apache. Su un server di produzione, ciò avviene tramite:
httpd -k restart)Dopo il riavvio, httpd.exe carica la nostra DLL proxy come SYSTEM. Il payload in DllMain esegue:
Administrators21 DLL di sistema caricate da httpd.exe non sono presenti nella chiave di registro KnownDLLs e possono essere dirottate da C:\Apache24\bin\:
| DLL | KnownDLL | Dirottabile |
|---|---|---|
| VCRUNTIME140.dll | No | Sì — sfruttata |
| ucrtbase.dll | No | Sì |
| KERNELBASE.dll | No | Sì |
| bcrypt.dll | No | Sì |
| msvcp_win.dll | No | Sì |
| CRYPTSP.dll | No | Sì |
| rsaenh.dll | No | Sì |
| CRYPTBASE.dll | No | Sì |
| bcryptPrimitives.dll | No | Sì |
| mswsock.dll | No | Sì |
| napinsp.dll | No | Sì |
| DNSAPI.dll | No | Sì |
| IPHLPAPI.DLL | No | Sì |
| winrnr.dll | No | Sì |
| nlansp_c.dll | No | Sì |
| wshbth.dll | No | Sì |
| rasadhlp.dll | No | Sì |
| fwpuclnt.dll | No | Sì |
| ntdll.dll | No | Sì |
| win32u.dll | No | Sì |
| gdi32full.dll | No | Sì |
Un utente standard non può attivare autonomamente il riavvio di Apache su una configurazione predefinita di Windows Server 2022. Sono stati testati in modo esaustivo oltre 16 metodi — tutti falliti:
TerminateProcess sui PID di httpd → ACCESS_DENIEDnet stop/start Apache24 → l'SDDL nega RP/WP all'accesso interattivo/di serviziosc stop Apache24 → Accesso negatohttpd -k restart → accesso SCM negatoSeShutdownPrivilege non possedutoschtasks /ru SYSTEM → richiede privilegi di amministratoreL'attivazione deriva dalla manutenzione ordinaria del server, che è inevitabile su qualsiasi sistema di produzione.
Immediato (manuale):
icacls "C:\Apache24" /remove:g "BUILTIN\Users" /T
icacls "C:\Apache24" /grant "BUILTIN\Users:(OI)(CI)(RX)" /T
Permanente: Aggiornare ad Apache Lounge 2.4.68-260920 o successivo, che viene distribuito con ACL del programma di installazione corrette.
Difesa in profondità: Distribuire policy di mitigazione dei processi per limitare il caricamento delle DLL ai soli binari firmati.
| File | Descrizione |
|---|---|
vcruntime140_hijack.c | Sorgente della DLL proxy — payload DllMain + proof-of-concept |
vcruntime140.def | Definizioni dei forwarder di esportazione (71 esportazioni → vcruntime140_orig.dll) |
deploy_hijack.bat | Script di distribuzione automatizzata |
| Data | Evento |
|---|---|
| 2026-09-20 | Apache Lounge rilascia 2.4.68-260920 con la correzione delle ACL |
| 2026-09-22 | CVE-2026-89282 pubblicata da CERT/CC |
| 2026-10-16 | Scoperta indipendente + PoC completo (questo lavoro) |
| 2026-10-17 | Confermata come duplicato di CVE-2026-89282; rilascio pubblico |
Questo PoC è rilasciato esclusivamente per scopi educativi e di test di sicurezza autorizzati. Licenza MIT.
Scoperto e documentato in modo indipendente da @D0rkerDevil. Catena di sfruttamento completa sviluppata prima di venire a conoscenza di CVE-2026-89282.