公開:

【CVE-2024-50154】Linuxカーネルのtcp/dccp処理に重大な脆弱性、タイマー処理の異常でセキュリティリスクが発生

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


記事の要約

  • Linuxカーネルにuse-after-free脆弱性が存在
  • reqsk_queue_unlink()内のtimer_pending()に問題
  • 複数のSYN+ACK送信によるタイマー処理の異常を修正

Linuxカーネルのtcp/dccp処理における脆弱性問題

Linuxカーネルは2024年11月7日、tcp/dccp処理におけるreqsk_queue_unlink()内のtimer_pending()使用に関する重要な脆弱性【CVE-2024-50154】を公開した。この問題はBPFプログラムがtrace_tcp_retransmit_synackにアタッチされた際にuse-after-freeが発生し、req->skをbpf_sk_storage_get_tracingカーネルヘルパーに渡すことで脆弱性が顕在化する状況が確認されている。[1]

この脆弱性は、reqsk_queue_unlink()内でtimer_pending()を使用する際に小さなレース状態のウィンドウが発生することが原因となっている。タイマーが呼び出される前にdetach_timer()がtimer->entry.pprevをクリアしてタイマーを未保留としてマークするため、reqsk_queue_unlink()がtimer_pending()をチェックするタイミングによって問題が発生するのだ。

この問題により、TCPはdel_timer_sync()を見逃し、reqskタイマーは63秒というデフォルトの期限まで実行を継続して複数のSYN+ACKを送信し続ける事態が発生する。さらにreq->skが早期にclose()された場合、BPFがreq->skにアクセスする際にuse-after-freeが発生する可能性があるため、重大なセキュリティリスクとなっている。

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

項目 詳細
影響を受けるバージョン Linux 4.2以降の全バージョン
修正済みバージョン Linux 5.15.170、6.1.115、6.6.59、6.11.6、6.12-rc4
脆弱性の種類 use-after-free脆弱性
発生条件 BPFプログラムがtrace_tcp_retransmit_synackにアタッチされている状態
影響 複数のSYN+ACK送信によるタイマー処理の異常
デフォルト期限 63秒

Use-after-free脆弱性について

Use-after-free脆弱性とは、既に解放されたメモリ領域に対してプログラムがアクセスを試みることで発生する深刻なセキュリティ上の問題を指す。主な特徴として以下のような点が挙げられる。

  • 解放済みメモリへの不正アクセスによる異常動作
  • メモリ破壊やシステムクラッシュの可能性
  • 攻撃者による任意コード実行のリスク

今回のLinuxカーネルの事例では、reqsk_timer_handler()内でBPFプログラムがreq->skにアクセスする際にuse-after-free脆弱性が発生している。この問題はreqskタイマーが実行を継続している間にreq->skがclose()された場合に顕在化し、システムの安定性とセキュリティに重大な影響を及ぼす可能性がある。

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

今回のLinuxカーネルの脆弱性対応では、reqsk_queue_unlink()内のtimer_pending()使用を見直し、__inet_csk_reqsk_queue_drop()に呼び出し元のコンテキストを渡す方式に変更することで問題の解決を図っている。この修正アプローチは、タイマー処理のレース条件を根本的に解消し、システムの安定性とセキュリティを向上させる効果が期待できるだろう。

ただし、この種の脆弱性は複雑なタイミング条件下でのみ発生するため、通常のテスト環境では検出が困難である可能性が高い。今後は同様の問題を早期に発見するため、タイマー処理に関連するコードの静的解析やフォーマル検証などの導入を検討する必要があるだろう。

また、BPFプログラムとカーネル機能の相互作用に起因する問題が増加傾向にあることから、BPFプログラムのセキュリティ検証強化も重要な課題となっている。特にメモリ管理やタイマー処理との関連性について、より厳密な検証メカニズムの構築が望まれる。

参考サイト

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

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

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

コメントを残す

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