公開:

【CVE-2024-50114】Linuxカーネルarm64 KVMの脆弱性、メモリ管理の問題でセキュリティリスクが発生

text: XEXEQ編集部
(記事は執筆時の情報に基づいており、現在では異なる場合があります)


記事の要約

  • Linuxカーネルのarm64 KVMに脆弱性が発見される
  • vCPU作成失敗時のメモリ解放に関する問題を修正
  • use-after-free脆弱性に対するセキュリティパッチを提供

Linux kernel arm64 KVMの脆弱性対応

Linuxカーネルにおいて、arm64向けKVMのvCPU作成失敗時における深刻なuse-after-free脆弱性【CVE-2024-50114】が2024年11月5日に公開された。この脆弱性はsyzkallerによって発見され、vCPU作成が失敗した際にリディストリビュータの登録解除が適切に行われないことが原因となっている。[1]

この問題は、vCPUが同一のIDを持つ場合など、VM作成の後半段階で失敗が発生した際に顕在化する可能性が高い。config_lockとsrcuのロック順序に関する問題を回避するため、vCPUの破棄処理が2段階に分割されたことで発生した副作用であることが判明している。

Linuxカーネル開発チームは、この脆弱性に対する修正パッチをリリースした。パッチでは、失敗したvCPUのリディストリビュータ登録解除を__kvm_vgic_vcpu_destroy()内で特別に処理することで、config_lockの外側でも安全に実行できるよう改善されている。

Linux kernel arm64 KVM脆弱性の影響範囲まとめ

項目 詳細
影響を受けるバージョン Linux 6.11.0-rc6以前
修正バージョン Linux 6.11.6以降
脆弱性の種類 use-after-free(メモリ解放後使用)
問題箇所 virt/kvm/kvm_main.c:5769
発見者 syzkaller(自動テストツール)

use-after-freeについて

use-after-freeとは、メモリ上のオブジェクトが解放された後にそのメモリ領域にアクセスしてしまう脆弱性のことを指す。主な特徴として、以下のような点が挙げられる。

  • メモリの二重解放やバッファオーバーフローを引き起こす可能性
  • 任意のコード実行やシステムクラッシュの原因となる
  • メモリ管理の不適切な実装により発生する

Linuxカーネルのarm64 KVMで発見されたuse-after-free脆弱性は、vCPUの作成失敗時にリディストリビュータの登録解除が適切に行われないことが原因となっている。この問題は特にconfig_lockとsrcuのロック順序に関する問題を避けるために実装された2段階のvCPU破棄処理において、失敗ケースの考慮が不十分だったことで発生した。

Linux kernel arm64 KVMの脆弱性対応に関する考察

今回の脆弱性修正は、vCPUの作成と破棄に関する処理を見直す重要な機会となった。特にconfig_lockとsrcuの相互作用に関する問題は、マルチスレッド環境における同期処理の複雑さを浮き彫りにしており、今後も類似の問題が発生する可能性が高いだろう。

この問題の解決には、vCPU管理における状態遷移の明確化とエラーハンドリングの強化が不可欠である。特にリソースの解放順序については、ロックの取得順序と合わせて包括的な見直しが必要になるだろう。

今後は、マルチスレッド環境におけるリソース管理の自動検証ツールの活用が重要になる。syzkallerのような自動テストツールの継続的な改善と、より広範なテストケースの開発により、同様の問題の早期発見が可能になることが期待される。

参考サイト

  1. ^ CVE. 「CVE Record | CVE」. https://www.cve.org/CVERecord?id=CVE-2024-50114, (参照 24-11-13).

※上記コンテンツはAIで確認しておりますが、間違い等ある場合はコメントよりご連絡いただけますと幸いです。

「セキュリティ」に関するコラム一覧「セキュリティ」に関するニュース一覧
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。