신뢰할 수 없는 SSH 호스트 키 허용 (Paramiko Missing Host Key Validation)
Accepting Unknown SSH Host Keys when using Paramiko
설명
SSH(Secure Shell) 프로토콜에서는 원격 호스트의 신원을 확인하기 위해 호스트 키(host key) 를 사용합니다. 호스트 키 검증 없이 자동으로 허용하면 중간자 공격(Man-in-the-Middle, MitM) 에 취약해질 수 있습니다.
paramiko.SSHClient.set_missing_host_key_policy(AutoAddPolicy)를 사용하면 보안 위협이 발생할 수 있습니다.
이 정책을 사용하면 신뢰할 수 없는 호스트 키도 자동으로 허용되므로 공격자가 가짜 서버를 이용해 접속을 가로챌 가능성이 있습니다.
잠재적 영향
중간자 공격(MitM): 공격자가 가짜 SSH 서버를 설정하여 사용자의 인증 정보를 탈취할 수 있음.
세션 하이재킹: 악성 서버가 SSH 세션을 탈취하여 명령을 실행할 가능성이 있음.
데이터 조작: 공격자가 SSH 통신을 가로채고 조작할 수 있음.
해결 방법
AutoAddPolicy사용 금지AutoAddPolicy를 사용하면 인증되지 않은 호스트 키도 자동으로 저장되므로 보안에 취약함.대신,
RejectPolicy를 사용하여 신뢰할 수 없는 호스트 키를 거부해야 합니다.
신뢰할 수 있는 호스트 키를
load_host_keys()또는known_hosts파일에서 로드사전에 저장된 호스트 키를 로드하여 검증하는 것이 가장 안전한 방법입니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드:
set_missing_host_key_policy(AutoAddPolicy)를 사용하여 미검증 호스트 키를 자동으로 허용함.
안전한 코드:
load_system_host_keys()를 사용하여 로컬의~/.ssh/known_hosts파일에서 신뢰할 수 있는 호스트 키를 로드함.set_missing_host_key_policy(RejectPolicy)를 사용하여 미검증 호스트 키를 거부함.
참조
Last updated