
CVE-2026-89282에 대한 개념 증명: Apache Lounge Windows 설치 환경에서 서비스 재시작 시 SYSTEM 권한 상승을 초래하는 프록시 DLL 검색 순서 하이재킹입니다.
작성자: 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 (2026년 9월 20일)
Apache HTTP Server의 Apache Lounge Windows 배포판(빌드 2.4.68-260920 이전)은 안전하지 않은 기본 ACL로 설치되어 BUILTIN\Users에 설치 디렉터리 트리 전체, 즉 C:\Apache24\bin\을 포함한 경로에 쓰기 권한(WD + AD)을 부여합니다. 여기에 표준 Windows DLL 검색 순서 — KnownDLLs 레지스트리 키에 없는 DLL의 경우 System32보다 애플리케이션 디렉터리에서 먼저 로드하는 방식 — 가 결합되어, 로컬 표준 사용자라면 누구나 Apache 서비스가 재시작될 때 NT AUTHORITY\SYSTEM 권한으로 임의 코드를 실행하는 프록시 DLL을 심을 수 있습니다.
이 PoC는 전체 익스플로잇을 시연합니다. 저권한 사용자가 C:\Apache24\bin\에 71개의 PE 내보내기 포워더를 가진 프록시 VCRUNTIME140.dll을 심습니다. Apache가 재시작되면 httpd.exe(LocalSystem으로 실행 중)가 이 프록시를 로드하고, 프록시는 모든 정상 호출을 실제 DLL로 포워딩하면서 동시에 DllMain에서 SYSTEM 권한의 페이로드를 실행합니다. Apache는 계속 정상적으로 서비스를 제공합니다 — 충돌도 없고, 서비스 중단도 없습니다.
Apache Lounge의 Windows 설치 프로그램은 C:\ 아래에 C:\Apache24\를 생성하는데, Windows에서는 기본적으로 Authenticated Users: Modify 권한을 상속받습니다. 설치 프로그램은 이러한 ACL을 강화하지 않습니다. 이로 인해 모든 로컬 사용자가 다음 디렉터리에 새 파일을 쓸 수 있습니다:
| 디렉터리 | 영향 |
|---|---|
C:\Apache24\bin\ | DLL 하이재킹 — 하이재킹 가능한 시스템 DLL 21개 |
C:\Apache24\modules\ | 직접적인 모듈 주입 |
C:\Apache24\conf\ | 구성 변조 |
C:\Apache24\htdocs\ | 웹 콘텐츠 수정 |
Apache24 서비스는 AUTO_START로 LocalSystem(SYSTEM) 권한으로 실행되므로, 애플리케이션 디렉터리에서 로드되는 모든 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 페이로드가 실행됩니다:
Administrators 그룹에 추가httpd.exe가 로드하는 21개의 시스템 DLL은 KnownDLLs 레지스트리 키에 없으며 C:\Apache24\bin\에서 하이재킹할 수 있습니다:
| DLL | KnownDLL | 하이재킹 가능 |
|---|---|---|
| VCRUNTIME140.dll | No | Yes — exploited |
| ucrtbase.dll | No | Yes |
| KERNELBASE.dll | No | Yes |
| bcrypt.dll | No | Yes |
| msvcp_win.dll | No | Yes |
| CRYPTSP.dll | No | Yes |
| rsaenh.dll | No | Yes |
| CRYPTBASE.dll | No | Yes |
| bcryptPrimitives.dll | No | Yes |
| mswsock.dll | No | Yes |
| napinsp.dll | No | Yes |
| DNSAPI.dll | No | Yes |
| IPHLPAPI.DLL | No | Yes |
| winrnr.dll | No | Yes |
| nlansp_c.dll | No | Yes |
| wshbth.dll | No | Yes |
| rasadhlp.dll | No | Yes |
| fwpuclnt.dll | No | Yes |
| ntdll.dll | No | Yes |
| win32u.dll | No | Yes |
| gdi32full.dll | No | Yes |
일반 사용자는 기본 Windows Server 2022 구성에서 Apache 재시작을 스스로 트리거할 수 없습니다. 16가지 이상의 방법을 철저히 테스트했지만 모두 실패했습니다:
TerminateProcess → 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
영구적: 수정된 설치 프로그램 ACL이 포함된 Apache Lounge 2.4.68-260920 이상으로 업데이트하십시오.
심층 방어: DLL 로딩을 서명된 바이너리로 제한하는 프로세스 완화 정책을 배포하십시오.
| 파일 | 설명 |
|---|---|
vcruntime140_hijack.c | 프록시 DLL 소스 — DllMain 페이로드 + 개념 증명 |
vcruntime140.def | 내보내기 포워더 정의 (71개 내보내기 → vcruntime140_orig.dll) |
deploy_hijack.bat | 자동화된 배포 스크립트 |
| 날짜 | 사건 |
|---|---|
| 2026-09-20 | Apache Lounge, ACL 수정이 포함된 2.4.68-260920 릴리스 |
| 2026-09-22 | CERT/CC에서 CVE-2026-89282 공개 |
| 2026-10-16 | 독립적 발견 + 전체 PoC (본 작업) |
| 2026-10-17 | CVE-2026-89282의 중복으로 확인됨; 공개 릴리스 |
이 PoC는 교육 및 승인된 보안 테스트 목적으로만 공개됩니다. MIT 라이선스.
@D0rkerDevil이 독립적으로 발견하고 문서화했습니다. 전체 익스플로잇 체인은 CVE-2026-89282를 알기 전에 개발되었습니다.