「sudo pip」を実行するリスクは何ですか?


94

時々、実行が「間違っている」または「悪い」であると強調するコメントまたは応答に遭遇しますが、それがはるかに単純であるか、またはそのように実行します。pipsudo

pip下での実行に関連するリスクは何sudoですか?


これは、タイトルとは異なり、リスクに関する情報を提供しないこれと同じ質問ではないことに注意してください。これは、の使用を回避する方法についての問題ではありませんsudoが、具体的にはなぜ使用したいのかについての問題です。

回答:


103

で実行するpipsudo、で実行さsetup.pysudoます。つまり、インターネットから任意のPythonコードをrootとして実行します。誰かがPyPIに悪意のあるプロジェクトを作成し、それをインストールした場合、あなたのマシンへのrootアクセスを攻撃者に与えます。pipとPyPI に対する最近のいくつかの修正の前に、攻撃者は中間者攻撃を実行して、信頼できるプロジェクトをダウンロードするときにコードを挿入することもできました。


2
脅威は、pipインストールしたもののその後または実行中にのみ適用されますか?
オロメ2014年

2
しかし、それは私がそうであるかどうかに関係sudoなく、私pipはそうです、そうですか?いったんインストールされると、どのようにして到達しても、私たち全員が危険にさらされていますか?
オロメ2014年

2
@raxacoricofallapatoriusこれは私が答えるのが不快な領域になりつつあります。私が何も考えていないからではありません(私には直感があり、その理由を述べることができます)が、これらのように見える小さな変更が全体にどのように影響するかを予測することは悪名高いほどですセキュリティ。さらにsudo、パッケージを他の場所(virtualenvなど)にインストールすることで、これらの権限の問題だけでなく、これらの権限の問題も回避することは、通常、非常に簡単です。そうすることで、すべてのセキュリティ上の問題を無視する場合でも、より優れた信頼性が高まります。

2
@raxacoricofallapatorius正確な書き込み権限とディレクトリレイアウトによっては、より洗練されたマルウェアが、rootとして日常的に実行されるシステムユーティリティで使用されるコードなど、他のより信頼できるコードを上書きするのではないかと心配しています。

2
この答えは奇妙です。もちろん、何かを実行するときはsudoroot権限を与えます。それがの要点でsudoあり、確かにに固有ではありませんpip

19

明らかなセキュリティリスク(ご存じのソフトウェアをインストールする場合は実際には低いと思います)の他に、他の回答がもたらされる理由もあります。システムに付属するPythonはこのシステムの一部であり、システムを管理する場合は、ソフトウェアのインストール/アップグレード/アンインストールの場合に、パッケージマネージャーなどのシステムメンテナンス用に指定されたツールを使用します。サードパーティのツール(この例ではpip)を使用してシステムのソフトウェアの変更を開始すると、システムの状態について保証することができなくなります。さらにもう1つの理由は、sudoを使用すると、チャンスがなかったり、そうでなければ発生する可能性が非常に低い問題が発生する可能性があることです。たとえば、Pythonでのsys.executableとsys.versionの不一致をご覧ください。

ディストリビューションはこの問題を認識しており、それを軽減しようとします。たとえば、Fedora – sudo pipを安全にすることとDebian – site-packagesの代わりにdist-packagesを使用します


6

この方法でpipを使用するということは、システムに何かを許可するレベルまでそれを信頼するということです。pipだけでなく、信頼できないソースからダウンロードして実行するコードも悪意のある可能性があります。

そして、pipはそのすべての特権を必要とせず、特定のファイルとディレクトリへの書き込みアクセスのみを必要とします。システムのパッケージマネージャーを使用できず、仮想環境を利用したくない場合は、Pythonインストールディレクトリへの書き込み権限を持つ特定のユーザーを作成し、それをpipに使用できます。そうすれば、pipが実行できることと実行できないことをより適切に制御できます。そして、あなたはそのために使うことができますsudo -u


したがって、たとえば、自分に書き込み権限を許可するだけsite-packagesです。
オロメ2014年

1
いくつかのパッケージはまた、ヘルパー(のようなスクリプトをインストールとしてだけではなく、そこに@raxacoricofallapatorius、pipあなたはまた、彼らは自分自身をインストールする方のディレクトリにアクセスする必要がありますので、それ自体、IPython、ジャンゴ、pygmentsを、...)。
MattDMo

はいといいえ。私はセキュリティの専門家ではありませんが、スクリプトを実行しているユーザーに書き込み権限がない方がいいと思います。したがって、私はむしろ別のユーザーを提案します。
Cilyan 2014年

@MattDMo:はい、それは理にかなっています。しかし、これらのケースは、適切な権限がないと失敗するため、おそらく簡単に発見されます。とはいえ、それが最も安全な方法ではないでしょうか。システム全体に起こり得る最悪の事態は、とにかく何かを実行したときに何が起こるのでしょうか。唯一の違いは、Pythonのインストールを(suでなくても)自分で台無しにしてしまう可能性があるということですよね?
オロメ2014年

このようなユーザーを使用する目的でのみ作成するにはどうすればよいですかpip(新しいホームディレクトリなど、システムに他の変更を加える必要はありません)。その後、私は所有者site-packagesをそのユーザーに変更しただけだと思いますか?
オロメ2014年

1

唯一「間違っている」のsudoは、スーパーユーザーのala rootとして実行されるということです。つまり、間違ったコマンドでインストールを破壊する可能性があります。PIPは特定のプログラムのパッケージメンテナンスであるため、変更を行うにはとにかくそのようなアクセスが必要になります...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.