
Proof-of-Concept für CVE-2026-89282: Proxy-DLL-Suchreihenfolge-Hijacking in Apache Lounge Windows-Installationen, das bei einem Dienstneustart zu einer SYSTEM-Rechteausweitung führt.
Autor: Ashish Kunwar (@D0rkerDevil)
Datum: 2026-10-17
CVE: CVE-2026-89282
CWE: CWE-427 (Unkontrolliertes Suchpfadelement) / CWE-732 (Falsche Berechtigungszuweisung für kritische Ressource)
CVSS 3.1: 7.3 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Behoben in: Apache Lounge 2.4.68-260920 Win64 (20. September 2026)
Die Windows-Distribution von Apache HTTP Server von Apache Lounge (vor Build 2.4.68-260920) wird mit unsicheren Standard-ACLs installiert, die BUILTIN\Users Schreibzugriff (WD + AD) auf den Installationsverzeichnisbaum gewähren, einschließlich C:\Apache24\bin\. In Kombination mit der standardmäßigen Windows-DLL-Suchreihenfolge – die DLLs, die nicht im Registrierungsschlüssel KnownDLLs aufgeführt sind, aus dem Anwendungsverzeichnis vor System32 lädt – kann jeder lokale Standardbenutzer eine Proxy-DLL platzieren, die beliebigen Code als NT AUTHORITY\SYSTEM ausführt, wenn der Apache-Dienst neu gestartet wird.
Dieser PoC demonstriert die vollständige Ausnutzung: Ein Benutzer mit geringen Rechten platziert eine Proxy-VCRUNTIME140.dll mit 71 PE-Export-Forwardern in C:\Apache24\bin\. Beim Neustart von Apache lädt httpd.exe (ausgeführt als LocalSystem) den Proxy, der alle legitimen Aufrufe an die echte DLL weiterleitet, während er in DllMain eine Nutzlast mit SYSTEM-Rechten ausführt. Apache stellt den Dienst weiterhin normal bereit – ohne Absturz und ohne Beeinträchtigung.
Der Windows-Installer von Apache Lounge erstellt C:\Apache24\ unter C:\, das unter Windows standardmäßig die Berechtigungen Authenticated Users: Modify erbt. Der Installer härtet diese ACLs nicht. Dadurch kann jeder lokale Benutzer neue Dateien in folgende Verzeichnisse schreiben:
| Verzeichnis | Auswirkung |
|---|---|
C:\Apache24\bin\ | DLL-Hijack – 21 hijackbare System-DLLs |
C:\Apache24\modules\ | Direkte Modulinjektion |
C:\Apache24\conf\ | Manipulation der Konfiguration |
C:\Apache24\htdocs\ | Änderung von Webinhalten |
Der Dienst Apache24 wird als LocalSystem (SYSTEM) mit AUTO_START ausgeführt, sodass jede aus dem Anwendungsverzeichnis geladene DLL auf der höchsten Windows-Berechtigungsstufe ausgeführt wird.
# 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"
Die platzierte DLL wird beim nächsten Neustart des Apache-Dienstes ausgeführt. Auf einem Produktionsserver geschieht dies durch:
httpd -k restart)Nach dem Neustart lädt httpd.exe unsere Proxy-DLL als SYSTEM. Die DllMain-Nutzlast führt Folgendes aus:
Administrators hinzu21 von httpd.exe geladene System-DLLs befinden sich nicht im Registrierungsschlüssel KnownDLLs und können aus C:\Apache24\bin\ gekapert werden:
| DLL | KnownDLL | Hijackbar |
|---|---|---|
| VCRUNTIME140.dll | Nein | Ja — ausgenutzt |
| ucrtbase.dll | Nein | Ja |
| KERNELBASE.dll | Nein | Ja |
| bcrypt.dll | Nein | Ja |
| msvcp_win.dll | Nein | Ja |
| CRYPTSP.dll | Nein | Ja |
| rsaenh.dll | Nein | Ja |
| CRYPTBASE.dll | Nein | Ja |
| bcryptPrimitives.dll | Nein | Ja |
| mswsock.dll | Nein | Ja |
| napinsp.dll | Nein | Ja |
| DNSAPI.dll | Nein | Ja |
| IPHLPAPI.DLL | Nein | Ja |
| winrnr.dll | Nein | Ja |
| nlansp_c.dll | Nein | Ja |
| wshbth.dll | Nein | Ja |
| rasadhlp.dll | Nein | Ja |
| fwpuclnt.dll | Nein | Ja |
| ntdll.dll | Nein | Ja |
| win32u.dll | Nein | Ja |
| gdi32full.dll | Nein | Ja |
Ein Standardbenutzer kann den Apache-Neustart in einer Standardkonfiguration von Windows Server 2022 nicht selbst auslösen. Über 16 Methoden wurden erschöpfend getestet — alle schlugen fehl:
TerminateProcess auf httpd-PIDs → ACCESS_DENIEDnet stop/start Apache24 → SDDL verweigert RP/WP für interaktive/Dienst-Anmeldungsc stop Apache24 → Zugriff verweigerthttpd -k restart → SCM-Zugriff verweigertSeShutdownPrivilege nicht vorhandenschtasks /ru SYSTEM → erfordert AdministratorrechteDer Auslöser ergibt sich aus der routinemäßigen Serverwartung, die auf jedem Produktionssystem unvermeidlich ist.
Sofort (manuell):
icacls "C:\Apache24" /remove:g "BUILTIN\Users" /T
icacls "C:\Apache24" /grant "BUILTIN\Users:(OI)(CI)(RX)" /T
Dauerhaft: Aktualisieren Sie auf Apache Lounge 2.4.68-260920 oder höher, das mit korrigierten Installer-ACLs ausgeliefert wird.
Defense in depth: Setzen Sie Prozess-Mitigationsrichtlinien ein, um das Laden von DLLs auf signierte Binärdateien zu beschränken.
| Datei | Beschreibung |
|---|---|
vcruntime140_hijack.c | Proxy-DLL-Quellcode — DllMain-Payload + Proof-of-Concept |
vcruntime140.def | Export-Forwarder-Definitionen (71 Exporte → vcruntime140_orig.dll) |
deploy_hijack.bat | Automatisiertes Deployment-Skript |
| Datum | Ereignis |
|---|---|
| 2026-09-20 | Apache Lounge veröffentlicht 2.4.68-260920 mit ACL-Fix |
| 2026-09-22 | CVE-2026-89282 von CERT/CC veröffentlicht |
| 2026-10-16 | Unabhängige Entdeckung + vollständiger PoC (diese Arbeit) |
| 2026-10-17 | Als Duplikat von CVE-2026-89282 bestätigt; öffentliche Veröffentlichung |
Dieser PoC wird ausschließlich für Bildungszwecke und autorisierte Sicherheitstests veröffentlicht. MIT-Lizenz.
Unabhängig entdeckt und dokumentiert von @D0rkerDevil. Die vollständige Exploit-Kette wurde entwickelt, bevor von CVE-2026-89282 Kenntnis erlangt wurde.