Security/System

Shell Shock

bonggang 2020. 5. 29. 02:34

개념


리눅스 계열 OS에서 주로 사용되는 GNU bash에 존재하는 보안 취약점으로 초기 보고 이후 다양한 쉘 쇼크가 발견됐는데 보통 경변수를 통해 코드 인젝션 기법으로 특정 코드를 삽입하여 실행한다.

환경변수 env x=() 함수 뒤 자신이 원하는 명령을 삽입하여 시스템정보나 기타 권한을 탈취한다.

 

환경변수 x = (함수명){수행코드}; 공격명령

 

환경변수를 등록하는 (함수명){수행코드}; 까지는 정상적으로 동작하고 그 이후 삽입되는 공격명령은 무시되거나 오류가 발생해야 하지만 실제로는 수행되는 것이다.

 

취약점 예시


CVE-2014-6271

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

 

bash에서 해당 구문을 실행했을 때

vulnerable
this is a test

가 뜬다면 취약한 것이다.

 

-> bash에는 환경변수가 있는데 이 환경변수에 값이 아닌 함수를 등록하고 bash -c [변수명]과 같은 방법으로 변수에 등록된 함수를 실행시키는 것이다.

 

즉, 정상적인 동작일 경우 함수정의가 끝나면서인 (){}; 여기까지다. 즉, 그 뒤에 echo 명령이 있는 부분은 원래 무시되거나 에러가 나면서 실행이 안되어야한다. 그러나 실제로는 bash가 함수를 실행하기 위해 파싱하는 과정에서 중괄호의 끝인 }와 '사이에 있는 명령을 실행시켜버려 공격명령이 실행되는 것이다.

 

shellshock에 대해 공부하고자 하는 분들은 아래 블로그 글을 정독했으면 좋겠다.

(나도 다시 한 번 정독해야겠다)

https://operatingsystems.tistory.com/entry/Shellshock-CVE20146271

 

[Vul] Shellshock (CVE-2014-6271)

우선, 간략하게 CVE-2014-6271 일명 Bash shellshock 취약점에 대하여 설명하고자 한다. 이 취약점은 Akamai Technology의 Stephane Chazelas에 의해 발견되었다. CVE-2014-6271는 대부분의 Linux/Unix System에서..

operatingsystems.tistory.com

 

참고자료


https://namu.wiki/w/%EC%85%B8%EC%87%BC%ED%81%AC

https://namu.wiki/w/%EC%85%B8%EC%87%BC%ED%81%AC

https://blog.naver.com/security_reader/221886772776

https://m.blog.naver.com/renucs/220144713558

https://xerxes-break.tistory.com/278

https://operatingsystems.tistory.com/entry/Shellshock-CVE20146271