|
[ CVE-2017-9800] Apache svn-ssh Command Execution 침해사고분석팀 2017.09.01 |
|
개요Apache Subversion에 임의의 코드 실행 취약점이 발견되었다. 해당 취약점은 svn+ssh:// URL을 제대로 처리하지 못해 발생하는 것으로, svn+ssh:// URL에 포함되어 있는 ProxyCommand 문자열 뒤에 나오는 문자를 쉘 명령으로 해석하여 실행하게 된다. [CVE 정보]
CVE-2017-9800
[취약한 버전]
Apache Software Foundation Subversion 1.9.0 through 1.9.6
Apache Software Foundation Subversion 1.0.0 through 1.8.18 [취약한 함수]
ra_svn_open()
확인 내역먼저 Subversion에 대해서 알아보도록 하자.
Subversion(서브버전)
- 자유 소프트웨어 버전 관리 시스템 - 명령행 인터페이스에서 사용하는 명령어를 따서 “SVN” 이라고 줄여서 부름 - 제한이 있던 CVS를 대체하기 위해 2000년부터 콜랩넷에서 개발 됨 - 현재는 아파치 최상위 프로젝트로서 전 세계 개발자 커뮤니티와 함께 개발되고 있음 - 서버-클라이언트 모델을 따름 - 서버는 작업하는 컴퓨터 내에 둘 수도 있고, 전산망에 연결된 별도의 컴퓨터에 두고 사용 할 수 있음 - 서브버전 서버와 클라이언트는 http, https, svn, svn+ssh 의 규약으로 통신 함 Apache Subversion 취약점은 CVE-2017-1000117 Git 취약점과 유사한 취약점으로 Apache에서 발생한 취약점이다.
해당 취약점과 관련된 취약한 함수는 ra_svn_open() 함수로, 해당 함수는 svn+ssh:// URL 처리 시 호출되는 함수이다. 이 함수는 open_session() 함수를 호출하여 트래픽을 터널링하기 위해 SSH 세션을 생성한다. open_session() 함수는 저장소 URL을 인수로 사용하여 SSH 바이너리를 실행한다. 이때, 저장소 URL에 존재하는 -o 옵션을 제대로 처리하지 못함으로 ProxyCommand 뒤에 나오는 문자열에 대해서 SSH 클라이언트에서 쉘 명령으로 해석하고 이를 실행하게 된다.
다음은 해당 취약점 테스트 진행 시, 발생 한 트래픽 정보이다. 각 프로토콜별로 테스트를 진행 하였으며, 테스트 완료 시엔 ProxyCommand={touch, POC}를 명령어로 실행하게 되여 실행 시킨 저장소에 POC 파일을 생성하게 된다.
1. HTTP or HTTPS
![]() [그림1] 301 Redirect
[그림2] 200 OK2. SVN
[그림3] SVN대응방안1. 벤더사 패치 해당 벤더사에서 제공한 보안 권고문을 참고하여, 취약한 버전에 대해 패치를 진행 한다.
http://subversion.apache.org/security/CVE-2017-9800-advisory.txt
2. Sniper 제품군 대응현황
Sniper-IPS [3665] Apache Subversion svn-ssh URL Comman Execution
Sniper-UTM [805374198] Apache Subversion svn-ssh URL Comman Execution
[805374199] Apache Subversion svn-ssh URL Comman Execution.A
Sniper-APTX [2851] Apache Subversion svn-ssh URL Command Execution
[2852] Apache Subversion svn-ssh URL Command Execution.A
참고http://subversion.apache.org/security/CVE-2017-9800-advisory.txt http://blog.recurity-labs.com/2017-08-10/scm-vulns http://securitytracker.com/id?1039127 |

[그림2] 200 OK
[그림3] SVN