
CVE-2026-89282の概念実証:Apache LoungeのWindowsインストール環境におけるプロキシDLLの検索順序ハイジャックで、サービス再起動時に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 (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 は完全な悪用を実演します。低権限ユーザーが、71 個の PE エクスポートフォワーダーを持つプロキシ VCRUNTIME140.dll を C:\Apache24\bin\ に設置します。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\ | Web コンテンツの改ざん |
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 — 悪用済み |
| 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 License。
@D0rkerDevil により独立して発見・文書化されました。完全なエクスプロイトチェーンは CVE-2026-89282 を知る前に開発されました。