ディスカッション (11件)
Linuxカーネルにおける新たな特権昇格(LPE: Local Privilege Escalation)脆弱性、「Dirtyfrag」についての報告です。この脆弱性は広範囲のLinux環境に影響を及ぼす可能性があり、権限の低いユーザーがルート権限を取得できてしまうリスクを孕んでいます。現在、詳細な解析が進められており、システム管理者やエンジニアは速やかなパッチ適用と監視の強化が求められています。
"エンバーゴが破られたため、これらの脆弱性に対するパッチもCVEも存在しません"
リンク: https://github.com/V4bel/dirtyfrag
詳細な解説: https://github.com/V4bel/dirtyfrag/blob/master/assets/write-up.md
重要な点:
"Copy Failはこの研究を始めるきっかけでした。特にDirty Frag脆弱性チェーン内のxfrm-ESP Page-Cache Writeは、Copy Failと同じシンクを共有しています。しかし、これはalgif_aeadモジュールが利用可能かどうかに関係なくトリガーされます。言い換えれば、広く知られているCopy Failの緩和策(algif_aeadのブラックリスト化)が適用されているシステムであっても、Linuxは依然としてDirty Fragに対して脆弱なままです"
緩和策(テストや検証はしていません!):
"責任ある開示スケジュールとエンバーゴが破られたため、どのディストリビューションにもパッチは存在しません。脆弱性が発生するモジュールを削除するために、以下のコマンドを使用してください"
sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
緩和策に関する議論によると、再起動が必要か、すでにエクスプロイトされたマシンでは上記実行後に以下を実行する必要があるようです:
sudo echo 3 > /proc/sys/vm/drop_caches
何が原因でエンバーゴが破られたのか気になる。漏洩したのか、それとも第三者が独自に見つけたのか?
これ、根本原因とエクスプロイトの手法がCopy Failと非常に似てるね。
LLMに依存しすぎると失われてしまうものがあることをうまく示している。それは「探索」だよ。
AIを使って脆弱性研究をすると、創造性が大きく削がれると感じる。質問して即座に回答を得るだけのワークフローだと、周辺にあるものが見えなくなるんだ。まさに魔法のランプみたいなもので、質問したことの答えは手に入るけど、それ以上の発見はない。
Copy Failを発見した研究者は、怪しい点に気づいた後、AIにかなり頼っていた。もし彼が自分自身で大量のコードをくまなく調べていたら、この双子のようなバグを見つける機会がもっとたくさんあったはずだよ。
同時に、もう少し誘導的なプロンプトを使えば、最新のLLMなら彼のためにこのバグを見つけられただろうという気もするけどね。
協力し合うことでかえってパフォーマンスが落ちるという、非常に珍しい負の相乗効果のケースだね。
また聞くけど、なんでCopy Failのせいでalgif_aeadばかりが叩かれてるんだ?悪いのはauthencesnだろ。
authencesnは修正されなかった。その結果、今は普通のネットワークソケット経由で同じ(と思われる)範囲外書き込みができるようになったわけだ。
自分で思いつきさえすればよかったんだけど、できなかったよ。
(追記:ここで言ってるのはESP経由の件について。RxRPCのほうは、私の理解では全くの別物だよ)
Debianが影響を受けるか知ってる人いる?Debian 12と13の環境でエクスプロイトを試したけど、再現できなかった。
もしこれが主要な全ディストリビューションで通用するなら、メンテナがいかに無責任かにはただただ驚くよ。ユーザーベースの0.1%未満にとってしか役立たないようなオプションのカーネル機能が、なぜデフォルトで有効になってるの……?
1999年当時のLinuxディストリビューションで、インターネットに対して数十ものネットワークサービスを無防備に公開していた頃を思い出す。今は1999年じゃないんだぞ。
ubuntu:latestコンテナの新規デフォルトユーザー環境で実行してみた
git clone https://github.com/V4bel/dirtyfrag.git && cd dirtyfrag && gcc -O0 -Wall -o exp exp.c -lutil && ./exp
結果:
dirtyfrag: failed (rc=3)
よかった!
何年も経って、ようやく「多くの目があればバグは浅くなる」という状態になったけど、正直うんざりだ。これから週に何回カーネルのアップデートをすればいいんだ?
[遅延]