GNU/Linux >> Linux の 問題 >  >> Linux

カーネル:/dev/kmem と /dev/mem を無効化

Scale 7x 2009 のスライド デッキには、「Linux カーネルの弱体化:/dev/mem を介した悪意のあるコード インジェクション」というタイトルがあり、これらの 2 つの箇条書きが含まれています。

<ブロック引用>

これが必要なのは誰?

  • X サーバー (ビデオ メモリと制御レジスタ)
  • DOSEmu

これまでの検索で見つけたすべてのことから、これらの 2 つの弾丸が合法的な使用の最有力候補であるように思われます.

参考文献

  • /dev/mem ルートキットの Anthony Lineberry - Mick Bauer による LJ 8/2009
  • /dev/kmem が必要なのは誰?

/dev/mem を無効にした場合でも注意してください。 そして /dev/kmem そのメモリはまだダンプできます。 man proc を見てください /proc/kcore を明らかにする;それはシステムの物理メモリです。非常に優れたフォレンジック ツールキット rekall には、これを行うツールが既に含まれています。メモリをダンプします (および /boot ファイル) を分析できるようにします。

実際のところ、Ubuntu はデフォルトで /dev/kmem を無効にしています。 :

<ブロック引用>

/dev/kmem の現代的な使用法はありません 攻撃者がそれを使用してカーネル ルートキットをロードすることはもうありません。 CONFIG_DEVKMEM "n" に設定されます。 /dev/kmem デバイス ノードは Ubuntu 8.04 LTS から Ubuntu 9.04 までまだ存在しますが、実際にはカーネル内のどこにも接続されていません。

Ubuntu は /dev/mem を無効にしません アプリケーションによって必要とされるためです。

<ブロック引用>

一部のアプリケーション (Xorg) は、ユーザー空間から物理メモリに直接アクセスする必要があります。特殊ファイル /dev/mem このアクセスを提供するために存在します。以前は、攻撃者がルート アクセス権を持っていれば、このファイルからカーネル メモリを表示および変更することができました。 CONFIG_STRICT_DEVMEM 非デバイスメモリアクセスをブロックするカーネルオプションが導入されました (元の名前は CONFIG_NONPROMISC_DEVMEM ).

/proc/kcore を無効にする方法 ?

CONFIG_PROC_KCORE を有効にしないでください カーネルを構築するとき。

/dev/mem を無効にする方法 ?

さて、man mem を見てみると 作成方法について詳しく説明します:

mknod -m 660 /dev/mem c 1 1
chown root:kmem /dev/mem

rm -rf /dev/mem だけできるはずです; CONFIG_STRICT_DEVMEM を有効にしないことで、カーネルのビルド段階で無効にすることができます .

/dev/kmem を無効にする方法 ?

CONFIG_DEVKMEM であることを確認してください カーネルのビルド時に有効になっていません。

コールドブート攻撃を防ぐには?

/proc/kcore を無効にできたらどうなるでしょうか 、 /dev/mem/dev/kmem その後、暗号化されたスワップ パーティションを使用しましたか、それともスワップをまったく使用しませんでしたか?まあ、あなたのメモリは凍結され、そのようにアクセスされる可能性があります.この攻撃をどのように防ぎますか? RAM を暗号化します。 RAM をどのように暗号化しますか?できません。詳細は TRESOR をご覧ください。


Linux
  1. / dev/randomを使用してLinuxでランダムパスワードを生成する方法

  2. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  3. /dev/dm-Z デバイスから /dev/sdX および /dev/mapper/mpathY デバイスをマップする方法

  1. Linux の /dev/zero および /dev/null ファイルとは

  2. /dev/sda と /dev/sdb をどのように交換しますか?

  3. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?

  1. Linux:/dev/console 、 /dev/tty 、 /dev/tty0 の違い

  2. Linux が /dev/tty と /dev/tty0 を使用する方法

  3. Linux で /dev/random を /dev/urandom にリンクするのは間違っていますか?