'sudo pip'를 실행하면 어떤 위험이 있습니까?


97

때때로 나는 아래에서 실행하는 것이 "잘못되었다"또는 "나쁘다"라고 강조하는 코멘트 나 응답 을 접하게 되지만, 훨씬 더 간단하거나 심지어 필요한 경우 (내가 여러 도구를 설정하는 방법 포함)가 있습니다. 그렇게 실행하십시오.pipsudo

실행과 관련된 위험은 무엇입니까 pip아래는 sudo?


제목에도 불구하고 위험에 대한 정보를 제공하지 않는 질문과 동일한 질문 아닙니다. 이것은 또한 사용을 피하는 방법에 대한 질문이 아니라 sudo특히 왜 원하는지에 대한 질문 입니다.

답변:


103

당신이 실행하는 경우 pipsudo, 당신은 실행 setup.py으로 sudo. 즉, 인터넷에서 임의의 Python 코드를 루트로 실행합니다. 누군가 PyPI에 악성 프로젝트를 올려 설치하면 공격자에게 시스템에 대한 루트 액세스 권한을 부여합니다. pip및 PyPI에 대한 최근 수정 이전에 공격자는 신뢰할 수있는 프로젝트를 다운로드 할 때 중간자 공격을 실행하여 코드를 삽입 할 수도 있습니다.


2
위협 pip이 설치된 항목의 후속 실행 중에 만 적용됩니까 ?
orome 2014-01-10

2
그러나 그것은 내가 sudo할 때나 아니든 사실이 될 것입니다 pip. 일단 설치되면 어떻게 설치 되었든 우리 모두 위험에 처해 있습니까?
orome

2
@raxacoricofallapatorius 이것은 영역에 들어가서 대답하기가 불편합니다. 제가 전혀 모르기 때문이 아니라 (예감이 있고 이유를 제시 할 수 있기 때문)이 아니라 이러한 작은 변화가 전반적으로 어떻게 영향을 미치는지 예측하기가 매우 어렵 기 때문입니다. 보안. 또한 일반적으로 sudo패키지를 다른 곳에 (예 : virtualenv) 설치하여 이러한 권한 문제뿐만 아니라 이러한 권한 문제 를 방지하는 것은 매우 간단합니다 . 그렇게하면 모든 보안 문제를 무시하더라도 더 좋고 더 안정적 일 수 있습니다.

2
@raxacoricofallapatorius 정확한 쓰기 권한과 디렉터리 레이아웃에 따라 더 정교한 맬웨어가 일상적으로 루트로 실행되는 시스템 유틸리티에서 사용하는 코드와 같이 더 신뢰할 수있는 다른 코드를 덮어 쓸까 봐 걱정됩니다.

2
이 대답은 이상합니다. 물론, 무언가를 실행할 때 sudo루트 권한을 부여하십시오. 그것은의 전체 요점 sudo이며 확실히 pip.

19

명백한 보안 위험 (당신이 알고있는 소프트웨어를 설치할 때 실제로 낮다고 생각하는) 외에도 다른 답변을 가져 오는 또 다른 이유가 있습니다. 시스템과 함께 제공되는 Python은이 시스템의 일부이며 시스템을 관리하려면 소프트웨어를 설치 / 업그레이드 / 제거 할 때 패키지 관리자와 같은 시스템 유지 관리 용 도구를 사용합니다. 타사 도구 (이 경우 pip)를 사용하여 시스템 소프트웨어를 수정하기 시작하면 시스템 상태에 대해 보장 할 수 없습니다. 또 다른 이유는 sudo가 당신에게 기회가 없거나 그렇지 않으면 가질 기회가 아주 적을 문제를 가져올 수 있다는 것입니다. 예를 들어 Python에서 sys.executable과 sys.version 간의 불일치 참조

Distros는이 문제를 인식하고이를 완화하려고합니다. 예를 들어 Fedora – sudo pip를 안전하게 만들고 Debian – site-packages 대신 dist-packages .


6

그런 식으로 pip를 사용한다는 것은 시스템에 무엇이든 만들 수있는 수준까지 신뢰한다는 것을 의미합니다. pip뿐만 아니라 신뢰할 수없는 소스에서 다운로드하고 실행하는 모든 코드는 악성 일 수 있습니다.

그리고 pip에는 모든 권한이 필요하지 않으며 특정 파일 및 디렉토리에 대한 쓰기 권한 만 필요합니다. 시스템의 패키지 관리자를 사용할 수없고 가상 환경으로 가고 싶지 않다면 python 설치 디렉토리에 대한 쓰기 권한이있는 특정 사용자를 생성하여 pip에 사용할 수 있습니다. 그렇게하면 pip가 할 수있는 것과하지 않는 것을 더 잘 제어 할 수 있습니다. 그리고 당신은 sudo -u그것을 위해 사용할 수 있습니다 !


예를 들어 내가해야 할 일은 자신에게 쓰기 권한을 허용하는 것뿐입니다 site-packages.
orome 2014 년

1
@raxacoricofallapatorius는 거기뿐만 아니라 일부 패키지도 도우미 스크립트 ( pip자체, IPython, django, pygments 등)를 설치하므로 자신이 설치하는 디렉토리에 액세스해야합니다.
MattDMo

예, 아니오. 저는 보안 전문가는 아니지만 스크립트를 실행하는 사용자에게 쓰기 권한이없는 것이 더 좋다고 생각합니다. 따라서 나는 오히려 별도의 사용자를 제안합니다.
Cilyan 2014 년

@MattDMo : 네, 말이됩니다. 그러나 이러한 경우는 적절한 권한 없이는 실패하므로 쉽게 발견 될 수 있습니다. 그래도 그렇게된다면 가장 안전한 방법이 아닌가? 내 시스템 전체에 일어날 수있는 최악의 상황은 어쨌든 내가 무엇이든 실행할 때 일어날 수있는 일이다. 맞지? 유일한 차이점은 내가 파이썬 설치를 잠재적으로 망칠 수 있다는 것입니다.
orome 2014 년

사용 목적으로 만 그러한 사용자를 만들려면 어떻게해야합니까 pip(새 홈 디렉토리 등과 같은 시스템 변경 사항 없음)? 그 후에 소유자 site-packages를 해당 사용자로 변경했다고 가정 합니다. 맞습니까?
orome

1

"잘못된"유일한 점 sudo은 수퍼 유저 및 루트 역할을한다는 것입니다. 이는 잘못된 명령으로 설치를 잠재적으로 파괴 할 수 있음을 의미합니다. PIP는 특정 프로그램에 대한 패키지 유지 관리이므로 변경하려면 이러한 액세스가 필요합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.