/ tmp noexecのマウントはどの程度便利ですか?


39

多くの人々(Securing Debian Manualを含む)は、オプション/tmpnoexec,nodev,nosuidセットでマウントすることを推奨しています。これは一般に、「多層防御」戦略の1つの要素として提示されます。これは、誰かがファイルを書き込める攻撃や、正当なアカウントはあるが他の書き込み可能なスペースを持たないユーザーによる攻撃のエスカレーションを防ぐことによるものです。

しかし、時間の経過とともに、noexecいくつかの潜在的な理由から、役に立たない手段である議論(Debian / Ubuntu開発者Colin Watsonによる最も顕著な)に遭遇しました:

  1. ユーザーは/lib/ld-linux.so <binary>、同じ効果を得るために実行できます。
  2. ユーザーは、直接実行できないスクリプトでシステム提供のインタープリターを実行できます

これらの議論を考えると、より多くの構成が必要になる可能性(たとえばdebconf、実行可能な一時ディレクトリが必要)、および利便性が失われる可能性があるため、これは価値のあるセキュリティ対策ですか?迂回を可能にする他の穴を知っていますか?


1
@neoice:/ tmpが実行可能でない場合、アプリケーションが時々壊れると聞きました。しかし、実際にそれが起こるのをまだ見ていません。TuxGuitar-1.2を見てください...それは起こります。noexecオプションなしで/ tmpがマウントされていない場合、ライブラリをアンパックしてからロードしようとするため、起動しません。

VMwareのサイトRecovery Managerが「/ tmpに」からスクリプトを実行します:IPのカスタマイズは、vCenterサイトリカバリマネージャ(2021083)でのリカバリプランのフェイルオーバーまたはテストフェイルオーバー中に失敗した:kb.vmware.com/selfservice/microsites/...

1
snappyという圧縮ユーティリティは.soファイルを/ tmpにドロップし、noexecがマウントされていると実行できないことを知っています。(デフォルトではcassandraとkafkaで使用されます)私見これは、/ tmp noexecをマウントしない理由ではなく、
snappy

回答:


31

ここに、私がこれまでに考え出したユーティリティの引数を示します。

最新のカーネルはこの/lib/ld-linux.so穴を修正し、noexecファイルシステムから実行可能ページをマッピングできないようにします。

通訳者のポイントは確かにまだ懸念事項ですが、私は人々が主張するよりも少ないと思います。私が思いつく理由は、特定の不正なシステムコールを作成することに依存している特権エスカレーションの脆弱性が数多くあるということです。攻撃者がバイナリを提供しなければ、悪のシステムコールを作成することははるかに困難です。また、スクリプトインタープリターは特権を持たない必要があります(suid perlなどのように、これは歴史的にそうではないことがあります)。したがって、攻撃に役立つには独自の脆弱性が必要です。どうやら、少なくともいくつかのエクスプロイトを実行するためにPythonを使用することが可能です。

多くの「缶詰」のエクスプロイトは、書き込み、実行の実行可能ファイルにしようとする/tmpと、そのnoexecスクリプト攻撃に落下する確率を低減(脆弱性の開示とパッチインストールの間ウィンドウで言います)。

したがって、でマウント/tmpすることにはセキュリティ上の利点がありnoexecます。

Debianのバグ追跡システムで説明されているように、rootがアクセスできないディレクトリに設定APT::ExtractTemplates::TempDirするapt.confnoexec、debconfの懸念がなくなります。


ただし、/ tmpが実行可能でない場合、アプリケーションが中断することがあると聞きました。しかし、実際にそれが起こるのをまだ見ていません。
neoice

質問にリンクされているマニュアルに記載されているように、代替を設定せずにDebconfパッケージの事前設定を台無しにします。
フィルミラー

2
はい、noexecはセキュリティに対する非常に優れた追加レイヤーであり、それによって大混乱を引き起こすものを見たことはありません。パッケージのインストールが唯一のものであり、それでもここでの回答が示すように回避することができます。私の解決策として、私はこのような別名を持っています。alias更新= "マウント-o幹部、再マウントを/ tmp && apt-getを更新&& -o NOEXEC、再マウントを/ tmpにマウント&&アップグレードapt-getを"
ヤンネPikkarainen

1
珍しいと思いますが、パッケージインストールコンテキストの外部で/ tmpから何かを実行するように書かれたパッケージは存在します(たとえば、ベルギーの電子IDカードを使用するためのミドルウェアの現在のバージョン)。
エクエーゲ

equaeghe:それはどのパッケージですか?おそらくバグとして報告されるはずです。それをどのように使用しているかにセキュリティ上の脆弱性があることは間違いないと思います。
フィルミラー

7

多くのDebianパッケージでは、パッケージをインストールするために/ tmpが実行可能である必要があります。これらは多くの場合、バグとしてマークされています(「通常」/「ウィッシュリスト」の重大度):

https://www.google.com/#q=site:bugs.debian.org+noexec+/tmp

今日、安定したブランチに更新されたカーネルをインストールしているときに、このエラーを受け取りました。

そのため、Debian(および派生物?)は/ tmpをnoexecでマウントする準備ができていないようです...


6

以下を/etc/apt.confに追加、または/etc/apt/apt.conf.d/50remount

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};

6
PATHが変更さmount/bin/mountた場合に備えて置き換えました。君が知ることはないだろう。
Lekensteyn

4

実装することを選択したほとんどの補足セキュリティ対策には回避策がありますが、最も簡単に回避されるセキュリティ対策(/ tmp noexecのマウントや代替ポートでのSSH実行など)でさえ、デフォルトに依存する自動化またはスクリプト化された攻撃を阻止します機能する。決意のある知識豊富な攻撃者からあなたを守ることはできませんが、99%をはるかに超えて、決心した知識のある攻撃者に立ち向かうことはありません。代わりに、自動化された攻撃スクリプトから身を守ることになります。


2

まず 、多くの異なる攻撃のケースをカバーします。いくつかの既知の方法があったので、それをオフにします(修正されたものもあります)。攻撃者が/ dev / shmまたは/ tmpにコードをダウンロードすることはよくあることです。

多層防御は、最も一般的なウェイポイントを保護することであり、それぞれがそれらを阻止することで、システムがより生き残りやすくなります。安全ではありません。しかし、チャンスもあります。セカンダリペイロードを取得できない場合、それはかなりのチャンスです。

  • また、iptablesのユーザー制限によって停止される場合があります。
  • SELinuxによって停止される場合もあります。
  • また、他のエクスプロイトに簡単にアクセスできるため、停止しない可能性があります。

ポイントは、簡単にできる限り難しくし、攻撃の99%をカットすることです。

2番目: 悪い習慣(一時からの実行、ユーザーtmpdirではなく/ tmpを介した主要なアプリケーションのインストール)を停止し、データを/ tmpに残します。通常、カスタムインストーラーはTMPDIRを理解し ます。そうでない場合でも、ポイントインタイムアクションとしてのインストール時間は、セキュリティの問題を完全に無効にする有効な理由ではありません。

3番目: / tmpの匿名名前空間(「機能」)を考慮すると、そこに置くものとそこから実行するものを本当に制限したいでしょう。

Forth: 利便性はこれに関連する要素ではありません。私たちがお金のために、そして目的のためにサーバーを動かしていると仮定します:私たちはこのようなことに対して責任があります。「ああ、/ tmpをロックダウンしなかったのは、来年ソフトウェアを更新するときにさらに数分かかるからです」恐ろしいこととただうまくいくこととの間に立つのは、これだけではありません。大きな理由は?そうは思いません。

これはどう:

「敵は予告なしに攻撃できることを知った。彼らは何百ものスパイを使って食べ物を毒することもできた。だから我々は兵士に銃を渡すのをやめた。」

待って、何?

システムを保護するためにより多くの労力、経験、運を必要とする他の手段があり、人々が限られたお金や寿命を持ち、家族と一緒に時間を過ごしたいということを知ることも簡単です。


1

/ tmpをインストールするために実行可能にする必要があるアプリケーションがあります。以前の仕事で、私がそこに着く前に、管理者は/ tmp noexecをセットアップしていましたが、db2パッケージがインストールされないことがわかりました。db2パッケージをどこか別の場所に展開した場合でも、インストール手順はいくつかのファイルを/ tmpにコピーし、それを実行できることを期待しますが、もちろん許可なしで失敗しました。ファイルシステムがnoexecでマウントされていることに気付いていない場合、少し誤解を招くかもしれません。noexecなしで/ tmpを再マウントした後にのみインストールを続行できました。

とにかく、ポイントは、少なくとも1つの商用製品が/ execをnoexecでマウントしないように要求することであり、他にもあるかもしれません。本当に説得力のある理由は見つかりませんでした。より良いセキュリティが必要な場合は、代わりにselinuxを使用します。


noexec / tmpによって停止されるSamba脆弱性のエクスプロイトの分析:bobao.360.cn/learning/detail/4168.html(ChromeのGoogle翻訳を推奨。最初のエクスプロイトを破壊するだけでなく、ペイロードの大部分...)(多くの一般的な自動エクスプロイトをそのように破ることができます....)。mount -o remount,exec /tmpものをインストールする必要があるときに機能します...(はい、回避するのは簡単ですが、多くの攻撃者は気にしないようです...)
ゲルトヴァンデンバーグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.