2014-09-25 4 views
-6

최근 bash 셸의 버그 인 shellshock 버그가 발견되었습니다. 어떻게 든 함수를 포함하는 환경 변수를 만들려면 env 명령을 사용합니다.정확히 env 명령은 무엇을합니까?

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

이러한 기능은 새 bash 쉘이 생성 될 때 실행됩니다. 나는 많은 곳에서 읽고 똑같은 설명을 들었다. 그러나 나는 여전히 매개 변수와 함께 위의 명령의 작업을 만들 수 없습니다. 누구든지 설명 할 수 있습니까?

+0

@ralph "shellshock"을 둘러싼 공포와 공황을 고려할 때 이미 주제에 대한 논의가 진행되고 있다고 가정해야합니다. – JakeGould

+0

@JakeGould : 나는 인터넷을 통해 게시물과 토론을 읽고, cudnt는 철저한 설명을 찾는다. – Haris

+0

'man env'? 그것은 버그를 방아쇠를 당기는 단지 방법입니다; 'env'가 어떻게 작동하는지 알면 exploit 자체가 어떻게 작동하는지 설명하지 않을 것입니다. – chepner

답변

1

env은 하나 이상의 환경 변수를 설정 한 다음 나머지 인수를 명령으로 실행합니다. 그것은 다음과 같은 구문 크게 다르지 않다

:

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

하나 (이 기능이 위의 예에서 사용되지는 않지만) env이 할 수있는 일이 깨끗한 환경을 만드는 것입니다; env의 첫 번째 옵션이 - (또는 -i)이면 명시 적 할당을 수행하고 명령을 실행하기 전에 환경이 정리됩니다.

+0

환경을 사용하는 것과 사용하지 않는 것 (즉, 빈 환경으로 시작할 수있는 능력) 간의 유일한 차이점은 무엇입니까? – Jeremy

+0

@ jeremy : 정상적으로 예. 'env'는 실행 파일에 대해'PATH'를 검색하기 때문에 ('#!/bin/env ...') 사용되는데,'PATH'가 검색되지 않는 곳에서만 중요합니다. – rici

+0

필자는 좋은 이유로 PATH가 검색되지 않았으며 "해결 방법"은 좋은 생각이 아니라고 덧붙여 야합니다. 그러나 여기에 범위가 있다면 그것은 탈출구입니다. – rici

관련 문제