.NET Framework アプリケーションの例外エラーまたは予期しないエラーが、セキュリティ更新プログラム 3141780 をインストールした後で SignedXml が含まれるファイルを処理しているときに発生する

適用対象: .NET Framework 4.6.1.NET Framework 4.6.NET Framework 3.5.1

概要


いずれかの 3141780 セキュリティ更新プログラム (マイクロソフト セキュリティ情報MS16-035 に記載されています) をインストールした後で、.NET Framework アプリケーションで SignedXml が含まれるファイルを処理しているときに例外エラーまたは予期しないエラーが発生することがあります。

詳細


重要このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。レジストリを誤って変更すると、深刻な問題が発生することがあります。レジストリを変更する際には十分に注意してください。万一に備えて、編集の前にレジストリをバックアップしてください。問題が発生した場合でも、レジストリを復元できます。レジストリのバックアップ方法および復元方法の詳細を参照するには、以下のマイクロソフト サポート技術情報番号をクリックしてください。
322756 Windows でレジストリをバックアップおよび復元する方法

シナリオ 1

シナリオ 1 の現象

マネージ アプリケーションが次の署名が含まれる例外エラーを返します。

System.Security.Cryptography.CryptographicException: Uri [FileOrUrl] を解決できません。




System.Security.Cryptography.CryptographicException: 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 署名変換のみが有効になります。入力を受け付ける変換またはカスタム変換を有効にするには、このレジストリ エントリ内で REG_SZ-typed 値のデータとしてその変換の登録済み URI を指定する必要があります。値の名前は処理されないので、コンピューターの管理者が任意に選択できます。

警告 XPath および XSLT 変換を使用すると、ドキュメントの送信者がリソースを多く消費するドキュメントを構築できるようになります。これにより、サービス拒否の状況が発生する可能性があります。