
CVE-2026-42897 - Exchange Health Checker अंध स्थान: आउटबाउंड IIS URL Rewrite नियम चुपचाप अनदेखा कर दिए जाते हैं, जिससे EOMT शमन निदान रिपोर्टों में अदृश्य हो जाते हैं।
गंभीरता: मध्यम (CVSS 5.3)
घटक: Microsoft CSS-Exchange - HealthChecker निदान उपकरण
प्रभावित फ़ाइलें:
Diagnostics/HealthChecker/Analyzer/Get-URLRewriteRule.ps1 (L49, L72, L97)Diagnostics/HealthChecker/Analyzer/Invoke-AnalyzerIISInformation.ps1 (L442–459)
रिपोर्ट किया गया: 2026-05-15
श्रेय: मूल खोज उस शोधकर्ता द्वारा जिसने CSS-Exchange issue #2539 रिपोर्ट किया
संदर्भ:Get-URLRewriteRule.ps1, Invoke-AnalyzerIISInformation.ps1Security/src/EOMT/Mitigations/CVE-2026-42897.ps1 (L147–254)Exchange Health Checker (HealthChecker.ps1) अपने सर्वर कॉन्फ़िगरेशन ऑडिट के भाग के रूप में IIS URL Rewrite नियमों की रिपोर्ट करता है। हालांकि, नियम गणना फ़ंक्शन Get-URLRewriteRule.ps1 केवल इनबाउंड नियमों (system.webServer/rewrite/rules) को पढ़ता है और आउटबाउंड नियमों (system.webServer/rewrite/outboundRules) को चुपचाप अनदेखा कर देता है।
CVE-2026-42897 के लिए EOMT (Exchange On-premises Mitigation Tool) मिटिगेशन EOMT OWA CSP - outbound नामक एक Content-Security-Policy हेडर इंजेक्शन नियम को IIS आउटबाउंड URL Rewrite नियम के रूप में तैनात करता है। चूंकि Health Checker कभी outboundRules नहीं पढ़ता, यह मिटिगेशन नियम Health Checker रिपोर्ट में पूरी तरह से अदृश्य है।
एक Exchange व्यवस्थापक जो EOMT मिटिगेशन की पुष्टि करने के लिए Health Checker पर निर्भर है, उसे एक रिपोर्ट प्राप्त होगी जिसमें कोई आउटबाउंड CSP नियम नहीं दिखाया गया है - जो मिटिगेशन स्थिति के लिए गलत नकारात्मक परिणाम देता है और एक गलत जोखिम अनुभव पैदा करता है, या इसके विपरीत, जब मिटिगेशन लागू किया गया हो तब भी यह गलत विश्वास देता है कि कोई मिटिगेशन लागू नहीं किया गया है।
Get-URLRewriteRule.ps1 में तीन अलग-अलग कोड पथ सभी केवल .rewrite.rules से पढ़ते हैं:
Path 1 - web.config parsing (L49):
$rules = $content.configuration.'system.webServer'.rewrite.rules
Path 2 - applicationHost.config per-location (L72):
$rules = $location.'system.webServer'.rewrite.rules
Path 3 - applicationHost.config global (L97):
$rules = $ApplicationHostConfig.configuration.'system.webServer'.rewrite.rules
इनमें से कोई भी पथ .rewrite.outboundRules तक नहीं पहुंचता। लौटाया गया $rules ऑब्जेक्ट फिर Invoke-AnalyzerIISInformation.ps1 (L442–459) में पुनरावृत्त किया जाता है:
$displayRewriteRules = ($currentRewriteRules.rule | Where-Object { $_.enabled -ne "false" }).name |
Where-Object { $_ -notcontains $excludeRules }
.rule सदस्य केवल इनबाउंड <rules> संग्रह पर मौजूद है। भले ही outboundRules पढ़ा जाए, प्रदर्शन तर्क को दोनों संग्रहों से .rule को पुनरावृत्त करने के लिए अद्यतन करने की आवश्यकता होगी।
IIS URL Rewrite कॉन्फ़िगरेशन को <rewrite> के अंतर्गत दो अलग-अलग चाइल्ड के साथ संग्रहीत करता है:
<system.webServer>
<rewrite>
<!-- इनबाउंड - जो Health Checker पढ़ता है -->
<rules>
<rule name="Redirect to HTTPS" enabled="true">
<match url=".*" />
<conditions><add input="{HTTPS}" pattern="^OFF$" /></conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:0}" />
</rule>
</rules>
<!-- आउटबाउंड - Health Checker के लिए अदृश्य -->
<outboundRules>
<rule name="EOMT OWA CSP - outbound" enabled="true">
<match serverVariable="RESPONSE_Content-Security-Policy" pattern=".*" />
<action type="Rewrite"
value="default-src 'self'; script-src 'self' 'unsafe-inline';
style-src 'self' 'unsafe-inline';" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
| परिदृश्य | प्रभाव |
|---|---|
| EOMT लागू करने के बाद प्रशासक Health Checker चलाता है | रिपोर्ट में कोई आउटबाउंड CSP नियम नहीं दिखता → प्रशासक को लगता है कि मिटिगेशन गायब है |
| प्रशासक Health Checker को एकमात्र ऑडिट उपकरण के रूप में उपयोग करता है | मैन्युअल रूप से IIS कॉन्फ़िग निरीक्षण किए बिना EOMT आउटबाउंड नियमों की पुष्टि नहीं कर सकता |
| घटना प्रतिक्रिया / अनुपालन जाँच | मिटिगेशन साक्ष्य Health Checker आउटपुट से अनुपस्थित है |
| स्वचालित निगरानी जो Health Checker JSON पार्स करती है | आउटबाउंड नियम की उपस्थिति/अनुपस्थिति कभी सामने नहीं आती |
इस निर्देशिका में poc_cve_2026_42897.ps1 देखें।
स्क्रिप्ट:
web.config XML बनाता है जिसमें एक इनबाउंड नियम और EOMT EOMT OWA CSP - outbound आउटबाउंड नियम दोनों शामिल हैं।.\poc_cve_2026_42897.ps1
एक कमजोर (अनपैच) Health Checker पर अपेक्षित आउटपुट:
[*] Vulnerable path (inbound only):
Rules found: Redirect to HTTPS
MISSING: EOMT OWA CSP - outbound
[*] Patched path (inbound + outbound):
Rules found: Redirect to HTTPS, EOMT OWA CSP - outbound
Outbound rule visible: TRUE
Get-URLRewriteRule.ps1 में सुधार - प्रत्येक पथ पर दोनों संग्रह पढ़ें:
# web.config (L49)
$inbound = $content.configuration.'system.webServer'.rewrite.rules
$outbound = $content.configuration.'system.webServer'.rewrite.outboundRules
$rules = @{ inbound = $inbound; outbound = $outbound }
# applicationHost.config per-location (L72)
$inbound = $location.'system.webServer'.rewrite.rules
$outbound = $location.'system.webServer'.rewrite.outboundRules
$rules = @{ inbound = $inbound; outbound = $outbound }
# applicationHost.config global (L97)
$inbound = $ApplicationHostConfig.configuration.'system.webServer'.rewrite.rules
$outbound = $ApplicationHostConfig.configuration.'system.webServer'.rewrite.outboundRules
$rules = @{ inbound = $inbound; outbound = $outbound }
Invoke-AnalyzerIISInformation.ps1 में सुधार - दोनों संग्रहों को पुनरावृत्त करें:
$displayRewriteRules = @()
$displayRewriteRules += ($currentRewriteRules.inbound.rule |
Where-Object { $_.enabled -ne "false" }).name |
Where-Object { $_ -notcontains $excludeRules }
$displayRewriteRules += ($currentRewriteRules.outbound.rule |
Where-Object { $_.enabled -ne "false" }).name |
Where-Object { $_ -notcontains $excludeRules }
| तारीख | घटना |
|---|---|
| 2026-05-15 | EOMT परिनियोजन सत्यापन अनुसंधान के दौरान समस्या की पहचान |
| 2026-05-15 | PoC लिखा गया और मॉक IIS कॉन्फ़िग के विरुद्ध परीक्षण किया गया |
केवल अधिकृत सुरक्षा अनुसंधान के लिए। विशेष रूप से नियंत्रित प्रयोगशाला वातावरण में परीक्षण करें।