Bash Code Injection Vulner특수하게 조작 된 환경 변수에 의한 Bash 코드 주입 취약점 (CVE-2014-6271, CVE-2014-7169)
주의 : 이 지식 기반의 영어 버전은 현재 자주 업데이트되고 있습니다. 최신 정보는 영어 버전을 참조하십시오.
Red Hat은 Red Hat 제품과 함께 제공되는 Bash 패키지의 모든 버전에 영향을 미치는 취약점에 대한 보고를 받았습니다. 이 취약점 CVE-2014-6271 을 사용하여 자의적인 코드를 실행할 수 있습니다. 인증되지 않은 원격 공격자가 특정 서비스 및 응용 프로그램 환경 변수를 제공할 수 있는 문제를 악용 할 수 있습니다.
Update: 2014-09-30 18:00 UTC
두개의 새로운 취약점이 사용 가능한 현재 Bash 패키지에 의해 완화되었다는 보고를 받았습니다. 자세한 정보는 FAQ 를 참조하시기 바랍니다.
Update: 2014-09-29 05:00 UTC
이 취약점을 악용하는 악성코드가 돌아다니고 있습니다. 이 취약점에 대한 자세한 내용은 다음 기술자료 를 참조하십시오.
Update: 2014-09-26 05:15 UTC
Red Hat은 CVE-2014-6271 에 대한 패치가 미흡한 것으로 인식하고 있습니다. 공격자는 특정 상황에서 취약한 시스템에서 실행하는 자의적인 명령을 포함하는 특수하게 만들어진 환경 변수를 제공 할 수 있습니다. 이 새로운 문제는 CVE-2014-7169 에 대응하고 있습니다.
Red Hat Enterprise Linux 5, 6 및 7, Red Hat Enterprise Linux 4 Extended Life Cycle Support, Red Hat Enterprise Linux 5.6 Long Life, Red Hat Enterprise Linux 5.9 Extended Update Support, Red Hat Enterprise Linux 6.2 Advanced Update Support, Red Hat Enterprise Linux 6.4 Extended Update Support, 그리고 Shift_JIS for Red Hat Enterprise Linux 5 및 6의 서브스크립션을 가지고 계신 경우CVE-2014-7169](https://access.redhat.com/security/cve/CVE-2014-7169) 에 해당하는 bash 패키지의 업데이트 버전을 사용할 수 있습니다. 또한 Red Hat Enterprise Linux 에서 특수하게 조작 된 환경 변수를 사용하여 Bash 코드 삽입 취약점 문제 해결 (CVE-2014-6271, CVE-2014-7169) 도 함께 참조하십시오.
진단 절차
Shellshock 취약점에 대한 패치가 시스템에 적용되었는지 여부를 확인하기 위해 Red Hat Access Labs has provided a script 에서 스크립트가 제공되어 있습니다. 또한 다음 명령을 실행하면 사용하는 Bash 버전을 수동으로 테스트할 수 있습니다.
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
사용하는 Bash 버전에 취약점이 포함 된 경우, 이 명령을 실행하면 vulnerable 문자 만 표시됩니다. 이 문제를 해결하는 패치를 사용하면 Bash 함수 종료 후에 어떠한 코드도 허용하지 않습니다. 이 명령을 실행했을 때 표시되는 경고 메시지의 내용은 사용하는 Bash 버전에 따라 다릅니다. 수정되지 않은 버전을 사용하는 경우는 다음과 같이 출력됩니다.
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test" vulnerable bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)' bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable' bash: error importing function definition for `BASH_FUNC_x' test
원래 CVE-2014-6271 수정 만 적용하면 다음 출력이 생성됩니다.
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test" bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x' bash: error importing function definition for `BASH_FUNC_x()' test
RHSA-2014:1306, RHSA-2014:1311 and RHSA-2014:1312 에서 제공되는 추가 패치를 설치하면 다음과 같은 결과가 출력됩니다.
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test" bash: warning: x: ignoring function definition attempt bash: error importing function definition for `BASH_FUNC_x' test
출력 내용은 아래의 "이 문제는 시스템에 어떤 영향을 가져올까요?" 절에 설명되어 있는 함수 처리가 변경 되었기 때문에 다릅니다. CVE-2014-7169 의 수정을 적용하면 파일 생성 문제로부터 시스템을 보호합니다. 다음 명령을 실행하면 사용자의 Bash가 CVE-2014-7169 영향을 받는지 여부를 테스트할 수 있습니다.
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo bash: x: line 1: syntax error near unexpected token `=' bash: x: line 1: `' bash: error importing function definition for `x' Fri Sep 26 11:49:58 GMT 2014
만일 시스템이 취약한 상태라면, 시스템이 취약한 상태라고 화면에 시간이 표시되고 /tmp/echo 파일이 생성됩니다.
시스템에 취약점 문제가 포함되지 않는 경우는 다음과 같은 결과가 출력됩니다.
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo date cat: /tmp/echo: No such file or directory
시스템이 취약한 상태의 경우 다음 명령을 실행하여 bash 패키지의 최신 버전을 업데이트하면 이 문제를 해결할 수 있습니다.
# yum update bash
이 문제는 시스템에 어떤 영향을 가져올까요?
이 문제는 Bash 쉘을 사용하여 환경 변수의 값을 해석하는 모든 제품에 적용됩니다. 응용 프로그램인 Bash 가 호출되는 경로는 많이 존재하기 때문에 이 문제는 특히 위험합니다. 응용 프로그램이 다른 바이너리를 실행할 경우, 실행을 위해 자주 Bash 가 호출됩니다. 이러한 Bash 쉘의 광범위한 사용 때문에, 이 문제는 매우 위험하며, 다음과 같이 대처해야만 합니다.
목록에 나열된 업데이트 버전 이전 버전은 모두 어느 정도 영향을 받습니다.
자세한 내용은 수정 내용을 기재한 각 문서를 참조하십시오.
CVE-2014-7169 패치를 적용하면 Bash 환경 변수를 평가하는 방법을 변경합니다. Bash 함수를 환경 변수로 직접 작성하는 응용 프로그램에 이러한 변경 사항을 인식해야합니다. 기존 함수는 같은 이름의 환경 변수에 저장해야 했습니다. 예를 들어, 함수 "compute"은 "compute" 라는 환경 변수에 저장됩니다. CVE-2014-7169 패치를 적용하면 이름은 "BASH_FUNC_compute ()" 입니다. 그 결과, "BASH_FUNC_compute()=() { }" 와 같이 환경 문자열에서 두 개의 괄호가 사용됩니다.
Bash 로 작성되는 함수는 "export -f" 명령으로 export 되는 경우에도 변경할 필요가 없습니다. Bash 는 내보낼 때 적절한 이름으로 투명하게 적용하고 함수 정의를 가져올 때 프로세스를 비활성화합니다.
이러한 환경 변수를 만들 서비스는 새로운 버전의 Bash 를 사용하도록 다시 시작해야합니다. 그러나 이 행위는 Red Hat Enterprise Linux 의 특정 버전에서 제공되는 패키지에서 사용되지는 않습니다. .
영향을받는 제품:
제품 / 채널 | 수정 된 패키지 | 수정 내용 |
---|---|---|
Red Hat Enterprise Linux 7 | bash-4.2.45-5.el7_0.4 | Red Hat Enterprise Linux |
Red Hat Enterprise Linux 6 | bash-4.1.2-15.el6_5.2 | Red Hat Enterprise Linux |
bash-4.1.2-15.el6_5.1.sjis.2 | Red Hat Enterprise Linux | |
bash-4.1.2-9.el6_2.2 | Red Hat Enterprise Linux 6.2 AUS | |
bash-4.1.2-15.el6_4.2 | Red Hat Enterprise Linux 6.4 EUS | |
Red Hat Enterprise Linux 5 | bash-3.2-33.el5_11.4 | Red Hat Enterprise Linux |
bash-3.2-33.el5_11.1.sjis.2 | Red Hat Enterprise Linux | |
bash-3.2-24.el5_6.2 | Red Hat Enterprise Linux 5.6 LL | |
bash-3.2-32.el5_9.3 | Red Hat Enterprise Linux 5.9 EUS | |
Red Hat Enterprise Linux 4 | bash-3.0-27.el4.4 | Red Hat Enterprise Linux 4 ELS |
일반적인 설정 예:
Red Hat 은 이 문제의 심각도와 다양한 설정에 어떻게 영향을 주는지 이해를 돕기 위해 분석을 실시했습니다. 다음 표는 포괄적이지는 않지만, 특정 설정 하에서 이 문제의 영향의 예와 매우 복잡한 단계 때문에 이 문제에 영향을 주는 것을 확인하는 것이 불가능한 이유를 설명하고 있습니다 . 가장 권장되는 방법은 Bash 를 수정 된 버전으로 업그레이드 하는 것 입니다.
패키지 | 설명 |
---|---|
httpd | CGI 스크립트는 이 문제에 영향을 받을 가능성이 높습니다. CGI 스크립트를 web 서버에서 실행하면 이 스크립트는 환경 변수를 사용하여 스크립트에 데이터를 전달합니다. 공격자는이 환경 변수를 제어 할 수 있습니다. CGI 스크립트가 Bash 를 호출하면 이 스크립트는 자의적인 코드를 httpd 사용자로 실행할 수 있습니다. mod_php, mod_perl 및 mod_python 환경 변수를 사용하지 않기 때문에 영향을 받지 않는 것으로 간주합니다. |
Secure Shell (SSH) | rsync와 git 등의 SSH를 사용하여 사용자가 수행 할 수 있는 원격 명령을 제한하는 것은 드물지 않습니다. 이 때,이 취약점을 이용하여 제한된 명령뿐만 아니라 어떤 명령을 실행할 수 있습니다. |
dhclient | Dynamic Host Configuration Protocol Client (dhclient)를 사용하여 네트워크 설정 정보를 DHCP 에서 자동으로 가져옵니다. 이 클라이언트는 다양한 환경 변수를 사용하여 Bash를 실행하여 네트워크 인터페이스를 설정합니다. 공격자는 악성 DHCP 서버에 연결하여 클라이언트 시스템에서 자의적인 코드를 실행할 수 있습니다. |
CUPS | CUPS 는이 문제의 영향을 받는다고 생각합니다. cups 필터를 실행할 때 사용자가 제공하는 다양한 값이 환경 변수에 저장됩니다. |
sudo | sudo 에서 실행 한 명령은 이 문제의 영향을 받지 않습니다. 특히 sudo 는 함수에서 환경 변수를 찾습니다. 이렇게 하면 Bash 의 자식 프로세스가 자의적 코드를 실행할 수 있도록 실행중인 명령이 환경 변수를 설정하게 합니다. |
Firefox | Firefox 에서는 Bash가 자의적인 명령을 실행할 수 있도록 환경 변수를 설정할 수 있다고 생각하지 않습니다. 그러나 이 작업을 허용하는 다양한 플러그인과 확장을 설치하는 것이 일반적이기 때문에 Bash를 업그레이드 할 것을 권장합니다. |
Postfix | Postfix 서버는 다양한 문자를 ?로 대체합니다. Postfix 서버는 다양한 방법으로 Bash 를 호출하지만이 서버에 의해 자의적인 환경 변수를 설정할 수 있다고 생각하지 않습니다. 그러나 필터가 환경 변수를 설정할 가능성이 있습니다. |
이 문제에 대한 자세한 분석 내용은https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack 를 참조하십시오.
자주 묻는 질문
이 FAQ는 Bash 취약점 CVE-2014-6271 대한 것입니다.
CVE-2014-6271 및 CVE-2014-7169에 대한 추가 정보는 https://securityblog.redhat.com/2014/09/26/frequently-asked-questions-about-the-shellshock-bash-flaws/ 를 참조 하십시오.
왜 CVE 가 6개나 있는 것일까요?
Bash의 최초 취약점은 CVE-2014-6271 에 할당되었습니다. 이 이슈가 공개되고난 직후, 발견자들이 비슷한 취약점이 처음 6개에 의해 차단되지 않는것을 발견하였고, 이것은 CVE-2014-7169 에 할당되었습니다. 이후, Red Hat 제품 보안 팀인 Florian Weimer 는 또다른 문제를 발견하고 CVE-2014-7186 와 CVE-2014-7187 에 할당하였습니다.
최근, 2 개의 취약점이 더 보고되었고, 비록 이 취약점의 자세한 정보가 공개되지는 않았지만, CVE-2014-6277 와 CVE-2014-6278 에 할당되었습니다. 처음 4 개의 취약점이 최신 Bash 패키지에서 현재 수정되었으며, 마지막 두개의 취약점 또한 동일하게 완화되었습니다. 글을 쓰는 시점인 2014-0930 현재에는 Bash 패키지에 더 이상 알려진 보안 취약점이 없습니다. 실제 CVE 페이지를 참조하여 취약점의 최신 정보를 확인하시기 바랍니다.
소유하는 시스템이 본 취약점의 영향을 받을 수 있습니다. 어떻게 해야할까요?
소유하는 시스템이 본 취약점의 영향을 받을 수 있습니다. 어떻게 해야할까요?
패치 후에도 이 문서에 있는 진단을 수행하여 시스템이 취약한 상태라고 생각되거나 시스템이 취약하다고 판단되는 경우, Red Hat 지원 케이스를 생성 하거나 지원팀에 전화 로 연락 주시기 바랍니다.
CVE-2014-6271 and CVE-2014-7169 업데이트를 설치 한 후 시스템이나 서비스를 재시작 할 필요가 있습니까?
만일 시스템이 전달된 Bash 함수들을 사용하고 있다면, 영향받는 서비스들을 재시작하는 것이 권고됩니다. 영향받는 상호작용중인 유저들은 다시 로긴해할 지도 모르며, 스크린 혹은 tmux 세션 또한 재시작해야될 지도 모릅니다.
Bash 업데이트는 환경에서 전달된 함수의 이름을 변경하는 문제의 수정본을 제공하고 있습니다. 만일 함수가 오래된 버전의 Bash 에 의해 전달되었다면, 업데이트 이후에 새롭게 시작된 Bash 프로세스들에 의해 문제되지 않습니다. 또한 특별하게 정의되지 않게 됩니다. 서비스를 재시작하는 것은 새로운 버전의 Bash 가 예상된 이름으로 다시 보여지게끔 함수를 전달합니다.
어떤 서비스가 재시작되어야하는지 (어떤 유저가 다시 로긴되어야 하는지) 확인하기 위해서는 업데이트 이후에 다음 명령어를 수행합니다.
$ grep -l -z '[^)]=() {' /proc/[1-9]*/environ | cut -d/ -f3
출력된 PID 들은 환경에서 오래된 전달 함수 정의를 사용하고 있는 프로세스입니다. 이 프로세스들은 재시작되어야 합니다. 어떤 서비스가 재시작되어야 하는지 확인하려면 Red Hat Enterprise Linux 7 에서는 다음 명령어를 수행합니다.
$ systemctl status <PID>
Red Hat Enterprise Linux 6 혹은 이전 버전에서는 pstree -p
혹은 ps -axuf
를 통해 확인합니다.
다른 쉘은 이 문제의 영향을 받습니까?
Red Hat은이 문제에 대해 다른 쉘을 테스트 했습니다만, Bash 에서 보여진 동작을 재현 할 수 없었습니다. 향후 다른 쉘에서 비슷한 문제가 발견되면 필요에 따라 업데이트를 릴리스 할 것입니다.
이 문제를 완화하는 방법이 있을까요?
만일 업데이트 패키지 설치가 불가능한 경우에, 보다 자세한 가능한 완화법을 위해 Mitigating the shellshock vulnerability (CVE-2014-6271 and CVE-2014-7169) 문서를 참조하십시오. 가장 좋은 완화법은 (위에 언급한) 현재 모든 보고된 취약점에 보호받기위해 최신 가능한 패키지를 설치하는 것입니다.
Red Hat 웹사이트 취약점 진술
다음 Red Hat 웹사이트들은 고객에게 업데이트가 검증된 서비스를 제공합니다.
- www.redhat.com
- access.redhat.com (Red Hat Customer Portal)
- rhn.redhat.com (Red Hat Network)
Red Hat 은 Salesforce 를 통하여 고객에게 서비스를 전달합니다. Salesforce 는 released a statement 에서 본 서비스가 이 이슈에 취약하지 않다고 발표하였습니다.
Red Hat 은 상기 웹사이트에 취약점을 공격하기 위해 실패된 시도를 관찰하고 있습니다. 우리는 우리 시스템을 안전하고 무결하고 가용하도록 지속적으로 모니터링 할 것입니다.
Comments