套用安全性更新 3141780 之後,.NET Framework 應用程式在處理包含 SignedXml 的檔案時遇到例外狀況錯誤或意外錯誤

結論
安裝3141780 安全性更新 (於 Microsoft 資訊安全公告 MS16-035 中所述) 後,.NET 應用程式可能在其處理包含 SignedXml 的檔案時遇到例外狀況錯誤或意外錯誤。
其他相關資訊
重要這個章節、方法或工作包含修改登錄的步驟。然而,如果您不當地修改登錄,可能會發生嚴重的問題。因此,請務必謹慎地依照這些步驟執行。為加強保護,修改登錄之前,請務必將其備份。那麼您便可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
322756如何在 Windows 中備份及還原登錄

案例 1

案例 1 徵狀

受管理的應用程式傳回包含以下簽章的錯誤例外狀況:

System.Security.Cryptography.CryptographicException:Unable to resolve Uri [FileOrUrl].


範例

System.Security.Cryptography.CryptographicException:Unable to resolve Uri testfile.xml.

案例 1 解決方法

客戶可以將下列登錄機碼套用至他們的系統:

登錄項目

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security@SignedXmlAllowDetachedSignature=1


可供下載的 .Reg 檔案

若要解決此問題,請按一下適用的連結,然後在下載的檔案上按兩下以變更登錄。

SignedXml-ExternalReferences.reg (32 位元系統上的 32 位元處理序和 64 位元系統上的 64 位元處理序)

SignedXml-ExternalReferences.Wow6432.reg (64 位元系統上的 32 位元處理序)

注意事項
  • 此登錄項目應是 DWORD 項目。
  • 此登錄項目會還原先前的行為,此行為即是開啟或下載在經驗證以計算其摘要之文件外部的資源。
警告 啟用此登錄機碼可能會允許阻斷服務、分散式反映阻斷服務、資訊洩漏、簽章略過及遠端執行程式碼等資訊安全漏洞。

案例 2

案例 2 徵狀

已預期成功時發生簽章驗證失敗。

案例 2 解決方法

如果內容包含下列簽章區塊,請考慮套用提供的登錄機碼:

簽章區塊範例

<Document>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="...">
<Transforms></Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>…</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>…</SignatureValue>
</Signature>

</Document>

登錄項目

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\SafeTransformMethods@XmlDsigXPathTransform=http://www.w3.org/TR/1999/REC-xpath-19991116


可供下載的 .Reg 檔案

若要解決此問題,請按一下適用的連結,然後在下載的檔案上按兩下以變更登錄。

XmlDSigXPathTransform.reg (32 位元系統上的 32 位元處理序和 64 位元系統上的 64 位元處理序)

XmlDSigXPathTransform.Wow6432.reg (64 位元系統上的 32 位元處理序)

如果簽章區塊包含下列文字,請考慮套用提供的登錄項目:

簽章區塊範例

<Document>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="...">
<Transforms></Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>…</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>…</SignatureValue>
</Signature>

</Document>

登錄項目

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\SafeTransformMethods@XmlDsigXsltTransform=http://www.w3.org/TR/1999/REC-xslt-19991116

可供下載的 .Reg 檔案

若要解決此問題,請按一下適用的連結,然後在下載的檔案上按兩下以變更登錄。

XmlDSigXsltTransform.reg (32 位元系統上的 32 位元處理序和 64 位元系統上的 64 位元處理序)

XmlDSigXsltTransform.Wow6432.reg (64 位元系統上的 32 位元處理序)

注意 依預設,僅啟用由 .NET Framework 提供且不接受已簽署文件輸入的 XML 簽章轉換。若要啟用接受輸入的轉換或自訂轉換,必須將該轉換的登錄 URI 指定為包含於此登錄機碼中的 REG_SZ 輸入值資料。值的名稱並不會加以處理,並且可以是電腦系統管理員選擇的任何名稱。

警告 XPath 和 XSLT 轉換會允許文件傳送者建構運算成本高的文件。此行為可能會造成阻斷服務的情況。
malicious attacker exploit
注意 :本文屬於「快速發佈」文章,係由 Microsoft 技術支援或組織內部直接建立。 本文所包含的資訊是為了回應新問題而依現況提供。 因此為了迅速對外發佈,文章內容可能含有印刷錯誤,而且可能會在不另行通知的情況下進行修改。 如需其他考量事項,請參閱使用規定
內容

文章識別碼:3148821 - 最後檢閱時間:03/23/2016 15:15:00 - 修訂: 3.0

Microsoft .NET Framework 4.6.1, Microsoft .NET Framework 4.6, Microsoft .NET Framework 4.5.2, Microsoft .NET Framework 3.5.1, Microsoft .NET Framework 3.5, Microsoft .NET Framework 3.0 Service Pack 2, Microsoft .NET Framework 2.0 Service Pack 2

  • kbbug kbexpertiseinter kbsecbulletin kbsecurity kbsecvulnerability kbregistry KB3148821
意見反應