협상 중 취약한 알고리즘 사용
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_CLIENT및ssl.PROTOCOL_SERVER를 사용하여 자동으로 최신 버전의 안전한 알고리즘이 사용되도록 해줍니다.아래와 같이 사용하고자 하는 최소 및 최대 TLS 버전을 지정할 수도 있습니다.
참조
Previous신뢰할 수 없는 SSH 호스트 키 허용 (Paramiko Missing Host Key Validation)NextDeprecated된 `ssl.wrap_socket` 사용
Last updated