[하루한줄] AWS CloudShell terminal escape injection 취약점

URL

Issue 2154: Terminal escape injection in AWS CloudShell

Target

  • Dell Windows device

Explain

AWS Management Console에서 사용 가능한 브라우저 기반 쉘인 AWS CloudShell에서 원격 코드 실행 취약점이 발견되어 세부 정보가 공개되었습니다.

취약점은 AWS CloudShell의 aceterm 라이브러리에서 DCS(Device Control String) 이스케이프 문자를 처리하는 과정에 존재합니다.

case '+q':
	var pt = this.currentParam
	, valid = false;

	this.send('\x1bP' + +valid + '+r' + pt + '\x1b\\');
	break;

echo -ne '\eP+q6b64\e\\' 을 입력하는 경우 위 코드에서 다음과 같이 처리됩니다. this.currenParam\eP+q 이스케이프 문자 뒤에 오는 임의의 문자열을 포함하며 this.send()에서 이를 터미널 입력 핸들러로 전달하는데, 이때 개행을 포함한 임의 코드를 삽입할 수 있습니다.

이를 악용한 해커가 타겟의 AWS 인스턴스에 /tmp/foo 파일을 생성하는 PoC는 다음과 같습니다.

$ echo -e "echo -ne "abcdef\x1bP+q\ntouch /tmp/foo\n\x1b\n"" > index.html

타겟 AWS CloudShell에서 해커의 index.html을 curl 등의 툴로 액세스 하면 취약점이 트리거 되어 원격 코드 실행이 가능합니다.