【CVE-2024-50154】Linuxカーネルのtcp/dccp処理に重大な脆弱性、タイマー処理の異常でセキュリティリスクが発生
スポンサーリンク
記事の要約
- 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プログラムのセキュリティ検証強化も重要な課題となっている。特にメモリ管理やタイマー処理との関連性について、より厳密な検証メカニズムの構築が望まれる。
参考サイト
- ^ CVE. 「CVE Record | CVE」. https://www.cve.org/CVERecord?id=CVE-2024-50154, (参照 24-11-15).
※上記コンテンツはAIで確認しておりますが、間違い等ある場合はコメントよりご連絡いただけますと幸いです。
- Windows 11 Build 27749がCanary Channelに登場、Narratorの機能拡張でアクセシビリティが向上
- MicrosoftがVisual Studio 2022 v17.13 Preview 1をリリース、AIと品質管理機能の強化で開発効率が向上
- MicrosoftがGraph callRecords APIの新機能を発表、GCCHとDoDで通話記録管理が大幅に向上
- Docker Desktop 4.35が組織向けセキュリティ機能とmacOS性能を強化、開発効率の向上に貢献
- 【CVE-2024-50094】Linuxカーネルのsfcドライバーに脆弱性、netpoll環境下でのクラッシュ問題に対応
- 【CVE-2024-50245】Linux kernelのntfs3ファイルシステムにデッドロック脆弱性、複数バージョンで修正パッチをリリース
- 【CVE-2024-50217】Linuxカーネルのbtrfsにuse-after-free脆弱性、メモリ管理の改善で対策を実施
- 【CVE-2024-50229】Linux kernelのnilfs2ファイルシステムにデッドロックの脆弱性、シンボリックリンク作成時に発生の可能性
- 【CVE-2024-50223】Linuxカーネルのtask_numa_work関数でヌルポインタ参照の脆弱性が発見、システムの安定性に影響
- 【CVE-2024-50227】Linuxカーネルthunderboltにスタック領域外読み取りの脆弱性、KASANによる早期発見で対策へ
スポンサーリンク