UNIX および Linux システム管理者ハンドブック: キャッシュされたマニュアル ページが「セキュリティ リスク」となるのはなぜですか?

UNIX および Linux システム管理者ハンドブック: キャッシュされたマニュアル ページが「セキュリティ リスク」となるのはなぜですか?

UNIX および Linux システム管理ハンドブック言う:

man は、適切なディレクトリが書き込み可能である場合、/var/cache/man または /usr/share/man にフォーマットされたページのキャッシュを保持します。ただし、これはセキュリティ上のリスクです。ほとんどのシステムでは、インストール時に一度マニュアル ページを事前フォーマットするか (catman を参照)、まったくフォーマットしません。

ここでの「セキュリティリスク」とは何でしょうか?

誰かがマニュアルページを改変して(初心者の)ユーザーを騙して望ましくない動作を実行させるというセキュリティリスクがあることは明らかです。ウルリッヒ・シュワルツの回答しかし、これを悪用できる他の方法を探しています。 ありがとうございます!

答え1

他のユーザーも使用するマニュアルページ(または実際にはあらゆるデータ)の内容をユーザーが操作できるようにするのは安全ではありません。キャッシュポイズニング古い BOFH のジョークにこうあります:

システムのルートから上のすべての情報を確認するには、次のように「read faster」スイッチを指定した「read manual」コマンドを使用します。 rm -rf /

(念のため言っておきますが、しないでくださいこのコマンドを実行します。) しかし、私がマニュアルページのキャッシュを制御している場合、man rmキャッシュされた偽のマニュアルページを表示するために入力すると、rm確かに「rm - マニュアルを読む」と表示され、「rm - ファイルまたはディレクトリを削除する」とは表示されない可能性があります。または、シェルにコードを挿入する出力ターミナルのエスケープシーケンス

答え2

問題のシステムは Web サーバーだとします。また、サーバーの管理者が、システムにインストールされているソフトウェアを Web ページ経由で一般ユーザー (または企業イントラネット) に公開しているとします。これは、画像リサイズ ツール、計算機、辞書などの単純なものかもしれません。

ソフトウェアがインストールされたときに関連付けられたマニュアル ページがあった場合、管理者は親切で思いやりのある人なので、それらのマニュアル ページを Web サービスのユーザーが利用できるようにすることも良いアイデアであると判断するかもしれません。

つまり、Webページの「ヘルプ」アイコンは、1つまたは複数の情報を取得するスクリプトを起動します。キャッシュされた— man ページを生成し、ユーザーのブラウザに送信します。

キャッシュ ディレクトリへの書き込みアクセス権を持つユーザーまたはコードは、これらのファイルを次のように変更できます。

  • 訪問したユーザーのブラウザで実行される任意のJavascriptを挿入する
  • 訪問したすべてのユーザーからテレメトリデータを収集し、後で処理/プロファイリングするためにリポジトリに転送します。
  • 認証資格情報を収集する。システムの特権ユーザー(管理者など)の資格情報も収集される可能性がある。

上記のそれぞれは、想像力と緩い道徳/倫理観を持つ人なら誰でも、さまざまな方法で悪用される可能性があります。

答え3

ディレクトリがグローバルに書き込み可能にされると、セキュリティ上の欠陥が生じます。ディレクトリの本来の目的や、それがどのように破壊されるかを無視すると、ディレクトリを書き込み可能にするだけで問題が生じます。

ディレクトリの機能とは関係のない、考えられる問題をいくつか示します。

  • ファイルシステム上にユーザーが書き込み可能な他のディレクトリがない場合、これにより、他の方法では使用できないファイルシステム上のスペースをユーザーが使用できるようになります。
  • 誰でもディレクトリにファイルを保存でき、ファイルシステムがいっぱいになってサービス拒否攻撃を引き起こす可能性があります。これが/var/logと同じファイルシステムである場合、ログの書き込みが妨げられる可能性があります。
  • このディレクトリには、想定される場所以外の場所にファイルが隠されている可能性があります。アカウントを削除してもファイルが残る可能性があり、ファイルシステムが謎の理由でいっぱいになった場合は、見つけるのが難しい場合があります。
  • 将来キャッシュされるファイルと同じ名前のファイルまたはディレクトリが作成されると、ディレクトリの目的どおりの機能が妨げられる可能性があります (ファイルの内容自体が悪意のあるものでない場合でも)。これらのファイルの権限を調整すると、自動的に修正するのが難しくなる可能性があります。

答え4

最近のディストリビューションのほとんどは、適切なパッケージがインストールされると、man ページを (troff で処理して) 事前にキャッシュします。これは問題ではありません。

この問題は、元の man ファイルが存在するが、キャッシュが空の場合 (つまり、キャッシュ ファイルが事前に生成されていない場合) に発生します。

これに対処するには 2 つの方法があります。

  1. troffでマニュアルページを実行する毎回ユーザーとして
  2. 次のように、manページをtroffで一度実行します。キャッシュディレクトリに保存する

ルートとして実行するには、manをsetuidにする必要があります。何でも例えば、コマンドライン解析により、攻撃者は昇格した権限を取得する可能性がある。

関連する情報源は次のとおりです。git は、man-db と man.c という 2 つのディレクトリに分かれています。

幸いなことに、現在ではすべての主要ディストリビューションでmanページが事前にキャッシュされるので、心配する必要はありません。

関連情報