2025/02/04 SecurityOnline — Linux Kernel の af_unix コンポーネントに存在する深刻な脆弱性 CVE-2024-36972 (CVSS:7.5) に対する、技術的な詳細と PoC エクスプロイトを、セキュリティ研究者たちが公開した。この二重解放の脆弱性により、カーネル・クラッシュ/権限昇格/コンテナ・エスケープなどのリスクに、システムがさらされるという。

af_unix コンポーネントにより、Unix ドメイン・ソケットが容易になり、同じマシン内でのプロセス間通信が可能になる。この重要な機能は、各種のアプリケーションやサービスで広く使用されている。それだけに、この新たに発見された脆弱性と、悪用が可能な弱点は大きな懸念をもたらす。
この脆弱性は、inflight ソケットのガベージ・コレクションを行う、unix_gc() 関数に存在する。
特定の条件下において、なんらかのソケットの unix_sk(sk)->oob_skb に、MSG_OOB メッセージが存在する場合に、そのガベージ・コレクション・プロセスにより、ロックされていないリファレンスが損失する可能性がある。このエラーにより、対応するソケットが新たな MSG_OOB メッセージを送信し、queue_oob() を呼び出すときに競合状態が発生し、unix_sk(sk)->oob_skb が更新される。このコンカレントな操作により、メモリの二重解放による破損が発生するとされる。
この脆弱性の悪用を示す PoC エクスプロイトは、以下の手順をとる:
- 競合ウィンドウの拡張:timerfd を用いて競合状態ウィンドウを拡張する。
- 参照操作:循環参照を作成して、unix_gc に被害者のソケットを解放させる。
- 同時実行:unix_gc と queue_oob の間で、競合状態をトリガーする。
- メモリ再利用:msg_msg により解放された SKB を再利用し、そのデストラクタを制御する。
- カーネル RIP 制御:kfree_skb を用いてカーネルの制御フローを操作し、コンテナ・エスケープを達成する。
この脆弱性は、以下の Linux Kernel バージョンに影響を及ぼす:
- v6.8 〜 v6.9
- v5.15.147
- v6.1.78
- v6.6.17
この問題は、コミット 1279f9d9d により混入し、コミット 9841991a4 で修正されている。システム管理者に対して推奨されるのは、パッチを適用バージョンへと、直ちにアップグレードすることだ。
脆弱性 CVE-2024-36972 に対する PoC エクスプロイトが、GitHub で提供されたことで、早急な対応が求められている。このエクスプロイトを武器化する脅威アクターたちが、世界規模で脆弱なシステムを標的にすると推測される。
Linux Kernel af_unix の、二重解放の脆弱性 CVE-2024-36972 が FIX しました。PoC が提供されていますので、ご利用のチームは、アップデートを忘れないよう、お気をつけください。よろしければ、Linux Kernel で検索も、ご利用ください。
You must be logged in to post a comment.