ソースコードからルートとしてインストールすることによるセキュリティ上の問題

ソースコードからルートとしてインストールすることによるセキュリティ上の問題

セキュリティ上の理由から、ルート アカウントでソース コードからインストールするのは良い考えではないという疑問が生じました。

私の立場としては、誰かがルート アカウントを使用して、コードの解凍から始めてインストール手順を実行するかどうかは、実際には問題ではないということです。

#./configure 
#make 
#make install

とは対照的に:

$./configure
$make
$sudo make install

私の論理は次のとおりです。セキュリティ リスクが発生する場合、それはコード自体が原因であり、インストール方法によるものではないため、実際には問題ではありません。end コマンドは、最終的なバイナリと、それとともにインストールされるすべてのファイルを root を使用してインストールします。

非ルート ユーザー セッションであるかどうかに関係なく、ソース コードにマルウェアがエンコードされている場合は、何があろうとシステム内にマルウェアが存在します。したがって、どのような場合でも常にリスクがあります。

これは自分のコードとは関係なく、むしろ自分のリポジトリに関係しています。リポジトリにはアプリは含まれていないので、git hub またはそれを作成した人の Web サイトにアクセスし、ソース コードを使用してインストールします。ツリーをインストールするのと同じくらい簡単なことです。

ユーザーは、ルート アカウントにログインしているか、「通常の」ユーザー アカウントにログインしているかよりも、ソース コードをどのように入手したかについてより心配することになります。

ターミナルに書き込む内容に注意を払わないとシステムに回復不可能な損傷を与える可能性があるため、root を使用すべきではない理由についての議論はすでにすべて聞いています。sudo を使用しても同じくらいの損傷を与える可能性があるため、それ自体が冗長な議論であり、信念体系です。したがって、この議論に含まれるポイントの一部でさえありません。

これは多かれ少なかれ、イエスかノーかの質問です。はい、そうですね。長期的には、ルート アカウントを使用してソース コード アプリをコンパイルし、システムにインストールするかどうかは問題ではありません。

または

いいえ、私は間違っています。同じことを実行するには、ルート権限を使用する必要があるため、これは重要です。

答え1

ルートとして実行中のプログラムを過度に使用すると、潜在的な攻撃者に「必要な」場所だけでなく、より多くの場所を攻撃する場所を与えることになります。システムを侵害する試みは、ルート権限がなければほとんど機能しません (または困難になります)。すべてのコマンドをルートとして実行するアプローチは、すべてをルートとして実行するだけ (ディレクトリの一覧表示、イメージのオープン、音楽の再生など) にもつながり、潜在的に問題となる場所が多くなります。

意図的でない場合でも、実行するプログラムのバグは、ルートとして実行すると、はるかに大きな損害を与える可能性があります (SW からすべてのバグを除去することは事実上不可能です)。または、ユーザーが間違ったオプションを入力した場合 (可能性がはるかに高くなります)。

さらに、あなた./configureと の場合make、すべての人のためにプログラムをインストールしたくない場合があります (たとえば、あなただけに必要なライブラリがある可能性があります)。

答え2

インストールしようとしているプログラムが悪意のある、root または通常のユーザーとして実行しないでください。これには、コンパイルされたプログラムの実行と、提供されたビルド スクリプトの実行の両方が含まれます。攻撃者があなたとしてコードを実行すると、攻撃者はあなたのアカウントを所有することになります (遅くとも、そのアカウントから root を取得するとすぐに、攻撃者はあなたのマシンを所有することになります)。攻撃者のコードが実行されたのは、あなたが を実行したからmakeか、 を実行したからかは関係ありませんmake install

通常のユーザーとしてビルドし、rootとしてインストールする目的は、偶然の問題が発生することがあります。それでも、必要な場合(ドライバやシステムサービスをインストールする場合など)を除いて、自分で作成したプログラムをrootとしてインストールしないでください。自分のユーザーとして別のディレクトリにインストールし、次のようなプログラムを使用してください。収納するプログラムを標準ディレクトリ (/usr/local/binなど) で使用できるようにします。これにより、インストール手順で既存のソフトウェアが上書きされる (名前の衝突が発生する可能性がある) リスクや、意図しないディレクトリに書き込まれるリスクが軽減され、すべてのファイルが 1 か所にまとめられるため、プログラムのアンインストールが容易になります。

答え3

ユーザージョーとして、

./configure
make
sudo make install

通常は必要コードを構成またはコンパイルするにはroot権限が必要ですが、インストールするにはroot権限が必要です。必要ルートになりたいなら、ルートにならないでください。

configureとはどちらもmakeコードを実行しています。必要がないのにこれらを root として実行すると、別の攻撃ベクトルが導入されるだけです (たとえば、誰かが makefile を侵害できるかもしれませんが、ソース コードは侵害できない可能性があります)。

答え4

最終的なプログラム(およびそのインストール)は、おそらく建物よりも慎重に行われるでしょう。どれでもビルド プロセスでのミスや、ルートとして実行しているときに健全性チェックを完了できないと、システムが破損する可能性があります。リスクを可能な限り減らすことをお勧めします。

関連情報