公開:

【CVE-2024-50297】Linux kernelのXilinx axienetドライバにレース条件の脆弱性、カーネルクラッシュの危険性に対処

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


記事の要約

  • Linux kernelのXilinx axienetドライバに脆弱性が発見
  • dmaエンジン開始前にTxパケットをdqlにエンキュー
  • カーネルクラッシュを引き起こすレース条件に対処

Linux kernelのXilinx axienetドライバにおけるレース条件の脆弱性

2024年11月19日、kernel.orgはLinux kernelのXilinx axienetドライバにおける深刻な脆弱性【CVE-2024-50297】を公開した。dmaエンジン開始後にパケットをdqlにエンキューすることでレース条件が発生し、iperfストレステスト実行時にカーネルクラッシュを引き起こす可能性が確認されている。[1]

この脆弱性は、dmaエンジン開始後にTx転送が開始され、エンキューされる前にdqlデキューが完了処理で実行される可能性があることに起因している。発生時にはlib/dynamic_queue_limits.cの99行目でカーネルBUGが発生し、SMPにおけるOopsエラーを引き起こすことが明らかになった。

カーネルクラッシュのコールトレースからは、dql_completedからaxienet_dma_tx_cb、xilinx_dma_do_taskletを経由してtasklet_actionに至る処理の流れが確認された。この問題に対し、dmaエンジン開始前にdqlにエンキューを行うように修正することで、クラッシュを回避できることが判明している。

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

項目 詳細
影響を受けるバージョン Linux 6.8から6.11.7まで
影響を受けない範囲 Linux 6.11.8以降、Linux 6.12以降
脆弱性ID CVE-2024-50297
修正コミット def3dee25cbd1c9b2ed443c3f6180e952563de77
報告者 kernel.org

レース条件について

レース条件とは、複数のプロセスやスレッドが共有リソースに同時にアクセスする際に発生する競合状態のことを指す。主な特徴として以下のような点が挙げられる。

  • 処理のタイミングや順序によって予期せぬ結果が生じる
  • 再現性が低く、デバッグが困難
  • システムの信頼性や安定性に重大な影響を及ぼす可能性がある

本事例では、dmaエンジン開始後にパケットをdqlにエンキューすることでレース条件が発生している。dmaエンジン開始とともにTx転送が開始され、パケットがdqlにエンキューされる前に完了処理のdqlデキューが実行される可能性があり、その結果としてカーネルクラッシュを引き起こす状況が確認されている。

Linux kernelのレース条件脆弱性に関する考察

Xilinx axienetドライバにおけるレース条件の発見は、Linux kernelの品質向上において重要な意味を持つ事例である。iperfによるストレステストでこの問題が発覚したことは、実際の運用環境でも同様の状況が発生する可能性を示唆しており、早期の対応が望ましいと考えられる。

この種のレース条件は、マルチスレッド環境での同期処理の複雑さを浮き彫りにしている。今後はより包括的なテスト手法の確立や、静的解析ツールの活用によって、同様の問題を開発段階で検出できる仕組みの整備が求められるだろう。

また、デバイスドライバの品質向上には、ハードウェアとソフトウェアの境界領域における深い理解が不可欠である。Linux kernelの開発コミュニティには、ドライバ開発のベストプラクティスの共有や、より堅牢な設計パターンの確立を期待したい。

参考サイト

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

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

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

コメントを残す

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