x86 IIS module in CI-built MSI fails to load - fuzzy.dll missing MinGW runtime DLLs (error 126)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 72/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 静か
- 技術スタック
- cpp, github-actions
- 領域
- build-system, ci-cd
調査の方向性
.github/workflows/test-ci-windows.yml から始めて、MINGW32 ビルド、x86 リリースディレクトリ、WiX heat harvest の手順を追跡します。出荷される x86 fuzzy.dll の依存関係を確認し、ワークフローから MSI をビルドします。完了とは、インストールされた x86 IIS モジュールが 32 ビットのアプリケーションプールでエラー 126 なしに読み込まれることです。
索引モデルが issue の本文から書いたものです。
説明
Describe the bug
The MSI produced by the "CI/CD for IIS Module" workflow installs an x86 IIS module that fails to load in 32-bit application pools with error 126. The x64 module loads and works correctly; only 32-bit pools are affected.
Cause: fuzzy.dll (ssdeep) is built with MinGW gcc in CI, unlike the rest of the module which is MSVC/vcpkg. The 32-bit MinGW build of fuzzy.dll imports libgcc_s_dw2-1.dll (which in turn requires libwinpthread-1.dll), but the MSI does not package these DLLs, so the x86 dependency chain breaks and ModSecurityIIS.dll cannot load. Confirmed by reading the import table of the shipped x86 fuzzy.dll - its only non-system import is libgcc_s_dw2-1.dll, which is not present in the MSI or on a standard Windows Server install.
Logs and dumps
Windows Application Event Log, event ID 2280, on any request to a site in a 32-bit application pool:
The Module DLL C:\WINDOWS\SysWOW64\inetsrv\ModSecurityIIS.dll failed to load. The data is the error.
Event data contains Win32 error 126 (ERROR_MOD_NOT_FOUND).
LoadLibraryEx on C:\Windows\SysWOW64\inetsrv\fuzzy.dll in a 32-bit process fails with error 126; after copying libgcc_s_dw2-1.dll and libwinpthread-1.dll into the same directory, fuzzy.dll, libxml2.dll and modsecurityiis.dll all load successfully.
No debug/audit/error logs are produced because the module never loads. No crash/core dump - clean load failure.
To Reproduce
- Download the MSI artifact (
modsecurityiis-installers-Release) from a "CI/CD for IIS Module" workflow run on v2/master - Install on Windows Server with IIS
- Set an application pool to "Enable 32-Bit Applications = True"
- Request any page from a site in that pool
- Site fails / event 2280 logged; x64 pools on the same server work fine
Expected behavior
x86 module loads in 32-bit application pools, as the x64 module does in 64-bit pools.
Workaround (verified in production)
Copy libgcc_s_dw2-1.dll and libwinpthread-1.dll (from MSYS2 packages mingw-w64-i686-gcc-libs and mingw-w64-i686-libwinpthread) into C:\Windows\SysWOW64\inetsrv\. The module then loads and blocks correctly in 32-bit pools.
Suggested fix
In .github/workflows/test-ci-windows.yml, copy the MinGW runtime DLLs from the MINGW32 environment into the x86 release directory alongside fuzzy.dll before the WiX heat harvest, so they are included in the MSI. (Alternatively, build ssdeep with MSVC like the other dependencies, or statically link the MinGW runtime with -static-libgcc.)
Server
- ModSecurity version: v2/master CI build (post-2.9.13, 2026)
- WebServer: IIS on Windows Server, mixed 32/64-bit application pools
- OS: Windows Server (multiple versions across a shared hosting estate)
- 主要言語
- C++
- スター
- 9.8k
- フォーク
- 1.8k
- 平均マージ
- 1日 1時間
- マージ済み PR(30日)
- 13
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
owasp-modsecurity/ModSecurity のほかの issue
-
v2: t:utf8toUnicode drops the last hex digit of code points above U+FFFF (regression since 2.9.9)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
owasp-modsecurity/ModSecurity#3684 ·
メンテナーはふだん 1 日以内に返信
-
IIS: ReadFileChunk allocates only 1 byte but reads m_dwPageSize (latent overflow)対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン2.x bug Platform - IIS pr available windows
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
owasp-modsecurity/ModSecurity#3623 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
IIS: Host header fallback is dead code (r->hostname == NULL can never be true)対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン2.x bug Platform - IIS pr available windows
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
owasp-modsecurity/ModSecurity#3621 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
IIS: Content-Length header corrupted/truncated for large responses (wrong printf format + off-by-one buffer size)対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン2.x bug Platform - IIS pr available windows
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
owasp-modsecurity/ModSecurity#3619 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
2.x bug Platform - IIS pr available windows
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
owasp-modsecurity/ModSecurity#3612 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
owasp-modsecurity/ModSecurity の issue をすべて見る
似ている issue
-
Web3 RPC: one-element batch request returns an object instead of an array (breaks ethers.js v6)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
FISCO-BCOS/FISCO-BCOS#5706 ·
メンテナーはふだん 3 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
521xueweihan/HelloGitHub#4011 ·
-
docs(simulation): Quickstart publishes UDP 14550, which the SITL images' own docs say not to doオープンstatus:needs-triage
難易度 1/5 1〜3時間 初心者へのやさしさ 78/100
PX4/PX4-Autopilot#29292 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug core p3
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
RunanywhereAI/runanywhere-sdks#1142 ·
メンテナーはふだん 1 日以内に返信
-
I/O internal correctness medium priority rt_lib
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
メンテナーはふだん 1 日以内に返信