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 をご覧ください。