Linux Kernel af_unix の脆弱性 CVE-2024-36972:PoC がリリースされる

PoC Releases for Linux Kernel Flaw CVE-2024-36972: Double Free Flaw Enables Privilege Escalation and Container Escape

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 で検索も、ご利用ください。