Linux에서 권한이없는 사용자가 환경 변수를 볼 수 있습니까?


12

Linux에서 프로세스의 환경 변수가 다른 (루트가 아닌) 사용자가 관찰 할 수 있는지 확인하려고합니다.

즉각적인 사용 사례는 환경 변수에 비밀을 두는 것입니다. 이것은 웹의 여러 곳에서 안전하지 않은 것으로 논의되었지만 Linux의 정확한 노출 지점에 대해서는 언급 할 수 없었습니다.

내가하고 있습니다 없습니다 파일에 일반 텍스트 비밀을 퍼팅에 대해 이야기. 또한 루트 계정에 노출되는 것에 대해 이야기하고 있지 않습니다 (루터가 아닌 스타터로 적의 비밀을 숨기려고 시도합니다).

이 질문 은 환경 변수를 보안이 없거나 완전히 난독 화 된 것으로 분류하는 의견과 함께 내 문제 를 해결하는 것으로 보이지만 어떻게 변수에 액세스합니까?

내 테스트에서 권한이없는 사용자는 프로세스 테이블 ( 'ps auxwwe')을 통해 다른 사용자의 환경 변수를 관찰 할 수 없습니다. 환경 변수 (예 : 내보내기)를 설정하는 명령은 프로세스 테이블에 작성하지 않고 확장명으로 / proc / $ pid / cmdline에없는 쉘 내장입니다. / proc / $ pid / environ은 프로세스 소유자의 UID 만 읽을 수 있습니다.

아마도 다른 운영 체제 나 버전간에 혼란이있을 수 있습니다. 웹상의 다양한 (최근) 소스는 환경 변수의 안전을 약화 시키지만 다른 Linux 버전에 대한 스팟 확인은 이것이 적어도 2007 년으로 돌아갈 수는 없음을 나타냅니다 (아마도 더 있지만 상자가 없습니다) 테스트 할 손).

Linux에서 권한이없는 사용자가 다른 프로세스의 환경 변수를 어떻게 관찰 할 수 있습니까?

답변:


7

Gilles 가 security.stackexchange.com에 대한 비슷한 질문에 대한 매우 포괄적 인 답변 에서 설명했듯이 프로세스 환경은 프로세스를 소유 한 사용자 (및 루트)에게만 액세스 할 수 있습니다.


의미있는 게시물에 대한 링크가 있습니까?
cyc115

@ cyc115 "answer"라는 단어를 클릭하십시오 :)
guntbert

6

환경 변수는 충분히 안전합니다. 당신이 연결 한 질문은 시스템이 손상되면 구성 파일보다 환경 변수를 사용할 때의 유일한 보안 이점은 모호하다는 것입니다. 누군가가 루트 액세스 권한을 얻은 경우 둘 다 얻을 수 있음을 의미합니다.
비밀 데이터에 환경 변수를 사용하는 것이 '불분명 한'것으로 간주되는지 여부도 논쟁의 여지가 있습니다. 이것은 매우 일반적인 관행이므로 그렇게 생각하지 않습니다.

환경 변수에 저장된 데이터는 두 곳에서만 액세스 할 수 있습니다.

1. 프로세스의 실행 환경

프로세스가 실행 중일 때 해당 프로세스의 환경 변수에 액세스 할 수 있습니다 /proc/$PID/environ. 그러나 프로세스 또는 루트를 소유 한 사용자 만 해당 파일에 액세스 할 수 있습니다.

2. 환경 변수의 출처

init 스크립트를 사용하고 변수가 해당 init 스크립트에 저장된 경우 해당 스크립트를 읽어 변수를 얻을 수 있습니다.

또는 환경 변수가 다른 곳에서 온다면 어디에서든지 가능합니다.

3. 'ps'출력

예, 나는 2라고 말했고 어떤 괜찮은 시스템에서는 2가 될 것입니다. 그러나 관리자가 자신이하는 일을 모른다면 3 번 길을 열 수 있습니다.

프로세스가과 같은 방법으로 시작되면 해당 프로세스는 sh -c 'cd /foo/bar; POP=tart /my/executable'다음 sh에서 볼 수 있습니다 ps.

$ sh -c 'cd /; POP=tart sleep 10' &
[1] 3085

$ ps ax | grep POP
phemmer   3085  14   5  0.0  0.0 SN         00:00 sh -c cd /; POP=tart sleep 10

1
e한정자를 언급해야 합니다 ps. 또한 사용자가 소유 한 프로세스 환경 만 볼 수 있습니다.
Barmar

1
한 가지 더 가능한 위치 : 환경 변수가 쉘 (예 :)을 통해 설정된 경우 사용자가 저장하지 못하도록하거나 예방 조치를 취하지 않은 경우 export FOO=bar내역 파일 (예 :)에도 표시 될 수 있습니다 ~/.bash_history.
tavnab
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.