무슨 일인지 알고 싶어배쉬 버그셸에 액세스하기 위해 사용자 로그인이 필요한 시스템에 영향을 줍니다.
UNIX/Linux는 일반적으로 시스템에서 bash 명령을 실행하려면 인증된 사용자여야 하도록 구성되어 있지 않습니까?
최근의 "Bash 버그" 또는 취약점은 명령을 실행하기 전에 로그인이 필요한 시스템에 어떤 영향을 미치며, 누군가가 이 버그를 사용하여 로그인 기반 시스템을 손상시킬 수 있는 방법은 무엇입니까?
답변1
이것추락하다Shell Shock(일명 Bash Bug)에 관해 인터넷에서 찾은 가장 좋은 점은 다음과 같습니다.
위험은 주어진 함수에 의해 정의된 환경 변수를 임의로 정의하는 Bash 셸의 기능에 중점을 둡니다. 문제는 Bash가 함수 정의 이후에 셸 명령을 계속 처리할 때 시작되며 이를 "코드 삽입 공격"으로 분류하게 됩니다. Robert의 예를 다시 살펴보고 다음 줄을 따르겠습니다.
http-header = Cookie:() { :; }; ping -c 3 209.126.230.74
함수는 () { :: };로 정의됩니다. 쉘 명령은 ping 문과 후속 매개변수입니다. 이 명령이 Bash 셸의 컨텍스트에서 처리되면 임의의 명령이 실행됩니다. 웹 환경에서 이는 반드시 헤더를 요청할 필요는 없지만 CGI 스크립트와 같은 메커니즘을 통해 의미합니다. 경로와 쿼리 문자열이 잠재적인 공격 벡터가 될 수 있다는 점을 지적하는 것을 포함하여 더 자세한 내용을 제공하는 seclists.org의 권고를 읽어 볼 가치가 있습니다.
물론 이 특정 공격 벡터를 완화하는 한 가지 방법은 셸을 호출하는 CGI 기능을 비활성화하는 것이며 실제로 일부 사람들은 이렇게 하는 것을 권장합니다. 그러나 대부분의 경우 이는 사이트에 즉각적인 문제를 일으키지 않는지 확인하기 위해 최소한 몇 가지 광범위한 테스트가 필요한 심각한 변경 사항이 될 것이며 많은 경우 그렇게 될 것입니다.
위의 HTTP 증명은 공통 프로토콜에 대한 구현일 뿐이지만 간단하지만 효과적인 증명입니다. Telnet과 SSH, 심지어 DHCP까지 추가하기 시작하면 범위가 극적으로 증가하므로 여기서는 웹 애플리케이션 서버 활용에 대해서만 이야기하는 것이 아닙니다. (물론 SSH 인증 이후에만 위험이 존재하지만, 공개 초기 단계에서는 필연적으로 다른 공격 벡터가 나타나는 것을 볼 수 있습니다.)
답변2
웹 서버와 같이 시스템에서 실행되는 네트워크 서비스는 인증된 사용자로 실행됩니다. 이러한 서비스가 계산에 bash를 사용하는 경우(매우 일반적임) 외부 사용자는 환경 변수를 셸 명령으로 대체하여 임의의 코드를 웹 서버로 실행할 수 있습니다.