요약

*SCP(Session Control Protocol, Secure Copy Protocol) : 로컬 호스트와 RCP(Remote Copy Protocol)와 SSH 프로토콜을 이용하는 원격 호스트간의 파일을 전송 시 사용 됨.

1983년에 개발됨. 당시 보안이 강화된 RCP로 소개되며 서버와 클라이언트 사이에 파일을 전송하는데 SSH의 인증과 인크립션 기능을 사용함.


- 취약점 : SCP클라이언트의 불충분한 검증 때문에 발생. 악성 서버나 MiTM(man-in-the-middle)공격에 악용 가능하며, 공격자는 클라이언트의 시스템에 임의의 파일을 전송(drop)하거나 덮어쓸(overwrite) 수 있음

- SCP 클라이언트 부적절한 이름 검증 (CVE-2018-20685) : 원격 SCP 서버가 빈(‘D0777 0 \n’) 또는 점(‘D0777 0 .\n’) 디렉토리 이름을 사용해 목표 디렉토리의 권한을 변경할 수 있음

- SCP 클라이언트 송신받은 오브젝트 이름 검증 미존재 (CVE-2019-6111) : 악성 SCP 서버는 SCP 클라이언트의 목표 디렉토리에 임의의 파일을 덮어 쓸 수 있음. 재귀 명령어(-r)이 작동 시, 서버는 서브 디렉토리 또한 조작할 수 있음

- SCP 클라이언트 오브젝트 이름 이용 스푸핑 (CVE-2019-6109) : 진행 화면에 문자 인코딩이 존재하지 않아 ANSI 코드를 이용해 추가 파일들이 전송되는 것을 감추는 등의 클라이언트 아웃풋 조작 가능.

- SCP 클라이언트 stderr을 통한 스푸핑(CVE-2019-6110) : 악성 SCP 서버가 클라이언트의 아웃풋 조작할 수 있음


- 공격 시나리오 예 : 공격자가 컨트롤 하는 서버가 공격목표 대상의 홈 디렉토리에 .bash_aliases 파일을 전송하여 리눅스 유저가 새로운 쉘을 실행 시 악의적인 명령들을 실행하게 함.

- 영향 받는 제품 : SCP프로토콜을 사용하는 모든 제품 ex) OpenSSH, Putty, WinSCP

- 대응 방안 : 일부 취약점에 대한 패치 (WinSCP 5.14 이후버전으로 업데이트/OpenSSH 비공식 패치 존재) 또는 SCP 대신 SFTP(보안이 강화된 FTP)를 사용하도록 설정


관련 CVE정보

- CVE-2018-20685 : SCP client improper directory name validation

- CVE-2019-6111 : SCP client missing received object name validation

- CVE-2019-6109 : SCP client spoofing via object name

- CVE-2019-6110 : SCP client spoofing via stderr

- PoC : https://sintonen.fi/advisories/scp-client-multiple-vulnerabilities.txt


참고자료

연구진 분석 : https://sintonen.fi/advisories/scp-client-multiple-vulnerabilities.txt

출처 : https://thehackernews.com/2019/01/scp-software-vulnerabilities.html

+ Recent posts