보안 업데이트 3141780을 적용한 후 .NET Framework 응용 프로그램에서 SignedXml이 포함된 파일을 처리하는 중에 예외 오류 또는 예상치 못한 실패가 발생함

요약
3141780 보안 업데이트(Microsoft 보안 공지 MS16-035에 설명됨)를 설치한 후 .NET Framework 응용 프로그램에서 SignedXml이 포함된 파일을 처리하는 중에 예외 오류 또는 예상치 못한 실패가 발생할 수 있습니다.
추가 정보
중요 이 절, 방법 또는 작업에는 레지스트리를 수정하는 방법에 대한 단계가 포함되어 있습니다. 그러나 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수도 있으므로 다음 단계를 주의하여 수행해야 합니다. 추가 보호 조치로 레지스트리를 수정하기 전에 해당 레지스트리를 백업하는 것이 좋습니다. 이렇게 하면 문제가 발생하는 경우 레지스트리를 복원할 수 있습니다. 레지스트리 백업 및 복원 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 참조하십시오.
322756Windows에서 레지스트리를 백업 및 복원하는 방법

시나리오 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 서명 변환만 사용됩니다. 입력을 받아들이는 변환 또는 사용자 지정 변환을 사용하도록 설정하려면 해당 변환에 대한 등록된 URI를 이 레지스트리 키 내 REG_SZ-typed 값의 데이터로 지정해야 합니다. 해당 값의 이름은 처리되지 않으며, 컴퓨터 관리자가 선택하는 어느 이름이나 될 수 있습니다.

경고 XPath 및 XSLT 변환을 통해, 문서 보낸 사람이 계산 집약적인 문서를 구성할 수 있습니다. 이로 인해 서비스 거부 상황이 발생할 수 있습니다.
malicious attacker exploit
참고 이것은 Microsoft 기술 지원 서비스 내에서 직접 작성한 “빠른 게시” 문서입니다. 여기에 포함된 정보는 발생한 문제에 대해 있는 그대로 제공됩니다. 이 문서는 즉시 참조할 수 있도록 빠르게 작성되어서 표기상의 오류가 포함되어 있을 수 있고 언제든지 예고 없이 수정될 수 있습니다. 기타 고려 사항은사용 약관을 참조하십시오.정보
속성

문서 ID: 3148821 - 마지막 검토: 03/23/2016 15:14: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
피드백