협상 중 취약한 알고리즘 사용

Selection of Less-Secure Algorithm During Negotiation

설명

SSL(Secure Sockets Layer), TLS(Transport Layer Security) 1, TLS 1.1 및 TLS 1.2와 같은 알고리즘은 취약점이 있기에, 더 이상 안전하지 않습니다. 그러기에 SSL 대신 TLS를 사용하여야 하고 TLS 1.3과 같은 안전한 최신 알고리즘을 사용해야 합니다.

잠재적 영향

  • 데이터 유출: 공격자가 SSL 취약점을 악용하여 암호화된 데이터를 해독할 수 있습니다.

  • 중간자 공격: 공격자가 통신을 가로채고 변조할 수 있습니다.

해결 방법

  • 안전한 최신 프로토콜 사용하도록 설정합니다.

  • 안전한 설정 적용: 클라이언트와 서버 모두에서 안전한 설정을 적용하여 SSL가 아닌 TLS을를 사용하도록 합니다.

취약한 코드 및 안전한 코드 예시

취약한 코드

# Unsafe SSL configuration
import ssl
import socket

context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
with socket.create_connection(('example.com', 443)) as sock:
    with context.wrap_socket(sock, server_hostname='example.com') as ssock:
        print(ssock.version())

안전한 코드

설명:

  • 취약한 코드: ssl.PROTOCOL_SSLv23를 사용하여 덜 안전한 SSL 프로토콜을 허용합니다.

  • 안전한 코드: ssl.PROTOCOL_CLIENTssl.PROTOCOL_SERVER를 사용하여 자동으로 최신 버전의 안전한 알고리즘이 사용되도록 해줍니다.

  • 아래와 같이 사용하고자 하는 최소 및 최대 TLS 버전을 지정할 수도 있습니다.

참조

Last updated