방법: APTCA 어셈블리를 부분적으로 신뢰할 수 있는 코드에 액세스할 수 없도록 만들기

AllowPartiallyTrustedCallersAttribute(APTCA) 특성을 사용하면 서명된 어셈블리에서 부분적으로 신뢰할 수 있는 코드가 완전히 신뢰할 수 있는 코드에 액세스할 수 있습니다. APTCA 특성이 어셈블리에 적용되면 어셈블리가 수명이 유지되는 동안 부분적으로 신뢰할 수 있는 호출자를 허용하는 것으로 표시됩니다. 이로 인해 어셈블리가 설치된 후에 보호된 리소스를 부분적으로 신뢰할 수 있는 코드에 노출할 경우 보안 취약점이 발생할 수 있습니다. 이 문제를 해결하려면 해당 어셈블리의 APTCA 특성을 무시하는 레지스트리 값을 설정하면 됩니다.

중요중요

어셈블리에서 부분 신뢰를 제거할 수 있는지 여부는 다음 절차에 설명된 대로 레지스트리 키에 의해 결정됩니다.응용 프로그램이 이 레지스트리 키에 액세스하는 데 필요한 ACL(액세스 제어 목록) 권한이 없는 계정을 사용하여 실행되는 경우 이 설정이 적용되지 않고 부분적으로 신뢰할 수 있는 호출자가 어셈블리에 액세스할 수 있게 됩니다.따라서 원하지 않는 권한 상승 문제가 발생할 수 있습니다.ACL 권한은 모든 어셈블리에 대해 읽을 수 있도록 이 키에 대해 구성되어야 합니다.

어셈블리에서 부분 신뢰를 제거하려면

  1. 시스템 레지스트리의 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Policy\APTCA 키 아래에 새 키를 만듭니다. 어셈블리에 대한 강력한 이름 정보가 포함된 키 이름을 사용합니다. 이 이름에는 어셈블리의 단순한 이름, 버전 번호, culture(neutral일 수 있음), 공개 키 토큰 및 파일 버전이 포함되어야 합니다. 예를 들어 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Policy\APTCA\Microsoft.Office.Interop.Visio, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, FileVersion=11.0.3216.0 키를 사용할 수 있습니다.

  2. 이름이 APTCA_FLAG이고 값이 1인 DWORD 값을 만들어 해당 어셈블리에서 부분 신뢰 가시성을 제거합니다.