Poodle SSL 3.0 Fallback 공격에 대한 취약성을 완화하려고합니다 . 관리자는 이미 서버에 대한 인바운드 연결을 위해 TLS를 위해 SSL을 비활성화하기 시작했습니다. 그리고 우리 팀은 웹 브라우저에서 SSL을 비활성화하도록 조언했습니다. 이제 System.Net.HttpWebRequest를 통해 다양한 서비스와 HTTPS 연결을 시작하는 .NET 코드베이스를 살펴보고 있습니다. 이러한 연결이 TLS에서 SSL 로의 대체를 허용하는 경우 MITM 공격에 취약 할 수 있다고 생각합니다. 지금까지 제가 결정한 내용입니다. 누군가 내가 옳다는 것을 확인하기 위해 이것을 다시 확인해 주시겠습니까? 이 취약점은 완전히 새로운 것이므로 .NET에서 취약점을 완화하는 방법에 대한 Microsoft의 지침을 아직 보지 못했습니다.
.NET의 보안 통신을 뒷받침하는 System.Net.Security.SslStream 클래스에 대해 허용되는 프로토콜은 System.Net.ServicePointManager.SecurityProtocol 속성을 통해 각 AppDomain에 대해 전역 적으로 설정 됩니다.
.NET 4.5에서이 속성의 기본값은
Ssl3 | Tls
(백업 할 문서를 찾을 수는 없지만)입니다. SecurityProtocolType은 Flags 속성이있는 열거 형이므로이 두 값 의 비트 단위 OR 입니다. 다음 코드 줄을 사용하여 환경에서이를 확인할 수 있습니다.Console.WriteLine (System.Net.ServicePointManager.SecurityProtocol.ToString ());
이것은 단지로 변경해야합니다
Tls
아마, 또는Tls12
앱의 모든 연결을 시작하기 전에 :System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;
중요 : 이 속성은 여러 비트 플래그를 지원하기 때문에 SslStream이 핸드 셰이크 중에 지정되지 않은 다른 프로토콜로 자동으로 폴백 되지 않는다고 가정합니다 . 그렇지 않으면 여러 플래그를 지원하는 요점이 무엇입니까?
TLS 1.0 대 1.1 / 1.2 업데이트 :
Google 보안 전문가 Adam Langley에 따르면 TLS 1.0은 올바르게 구현되지 않으면 나중에 POODLE에 취약한 것으로 밝혀 졌으므로 TLS 1.2로만 전환하는 것을 고려해야합니다.
.NET Framework 4.7 이상용 업데이트 :
아래 Prof Von Lemongargle이 언급했듯이 .NET Framework 4.7 버전부터는 기본 설정으로 OS가 가장 안전한 TLS 프로토콜 버전을 선택할 수 있으므로이 해킹을 사용할 필요가 없습니다. 자세한 내용 은 .NET Framework 를 사용한 TLS (전송 계층 보안) 모범 사례 를 참조하세요.