公開:

【CVE-2024-50273】Linuxカーネルのbtrfsにdelayed ref list初期化の脆弱性が発見、複数バージョンに影響

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


記事の要約

  • Linuxカーネルのbtrfsに関する脆弱性が発見
  • delayed ref listの初期化処理に問題が存在
  • 複数のバージョンにおいて対策パッチが適用

Linuxカーネルのbtrfsにおけるdelayed ref list初期化の脆弱性

Linuxカーネルにおいて、btrfsファイルシステムのdelayed ref list処理に関する重大な脆弱性が2024年11月19日に公開された。この脆弱性は【CVE-2024-50273】として識別されており、insert_delayed_ref()関数においてリストの初期化処理が適切に行われていないことが原因となっている。[1]

既存のrefをBTRFS_DROP_DELAYED_REFに更新する際、list_del()関数によってrefがref_add_listから削除されるが、add_listメンバーが再初期化されないままとなる問題が確認された。この状態でdrop_delayed_ref()が呼び出されると、list_empty()がfalseを返すため再度list_del()が実行され、無効なポインタアクセスを引き起こす可能性がある。

この脆弱性は特にCONFIG_LIST_HARDENEDとCONFIG_DEBUG_LISTが設定されている環境で深刻な影響を及ぼす可能性があり、Linux 4.10から複数のバージョンで影響を受けることが判明した。修正としてlist_del_init()を使用することで、リスト削除時に適切な初期化処理が行われるよう改善されている。

Linux影響バージョンまとめ

項目 詳細
影響を受けるバージョン Linux 4.10以降の特定バージョン
影響を受けないバージョン 4.19.324以降の4.19系、5.4.286以降の5.4系、5.10.230以降の5.10系
修正パッチ適用バージョン 6.1.117以降の6.1系、6.6.61以降の6.6系、6.11.8以降の6.11系、6.12以降
公開日 2024年11月19日
更新日 2024年11月19日

list_del関数について

list_del関数とは、Linuxカーネルにおけるリスト操作のための基本的な関数であり、主な特徴として以下のような点が挙げられる。

  • 双方向リストからノードを削除する機能を提供
  • next/prevポインタをLIST_POISON値に設定
  • メモリ安全性の検証機能を含む

list_del関数はリストからノードを削除する際にポインタを無効化するが、再初期化は行わないという特徴がある。一方でlist_del_init関数は、ノードを削除した後にリスト構造体を再初期化することで、後続の操作による問題を防ぐことができる。

Linuxカーネルのbtrfs脆弱性に関する考察

btrfsファイルシステムにおけるdelayed ref list処理の脆弱性は、メモリ安全性の観点から重要な課題となっている。特にトランザクション処理中のリスト操作において、メモリの整合性が保たれない状況が発生する可能性があり、システムの安定性に影響を与える可能性が高いだろう。

今後の課題として、同様のリスト操作に関する問題が他のカーネルコンポーネントにも存在する可能性を考慮する必要がある。リスト操作の安全性を担保するため、静的解析ツールの活用や、より厳密なコードレビューのプロセスを確立することが求められるだろう。

また、Linuxカーネルの品質向上に向けて、メモリ安全性に関するテストケースの拡充が重要となる。特にCONFIG_LIST_HARDENEDやCONFIG_DEBUG_LISTなどのデバッグ機能を活用した検証プロセスの強化により、同様の問題の早期発見が期待できる。

参考サイト

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

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

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

コメントを残す

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