公開:

【CVE-2024-50099】Linux kernelのarm64 uprobes機能における脆弱性、メモリアクセス制御の強化へ

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


記事の要約

  • uprobes向けのLDR機能不具合を修正
  • システムのセキュリティリスク軽減に貢献
  • カーネルのメモリアクセス制御を強化

Linux kernelのarm64 uprobes機能における重大な脆弱性

Linux kernelの開発チームは、arm64アーキテクチャにおけるuprobesのLDR (literal)サポートに関する重大な脆弱性【CVE-2024-50099】を2024年11月5日に公開した。simulate_ldr_literal()およびsimulate_ldrsw_literal()関数がユーザーメモリにアクセスする際の安全性が確保できていないことが判明し、カーネルの安定性に影響を及ぼす可能性が指摘されている。[1]

この脆弱性は元々kprobes用に作成された関数がuprobesに流用された際に発生した問題で、ユーザーメモリへのアクセス時にプレーンなCアクセスを使用していることが原因となっている。extableエントリが存在しないため、フォールト発生時にカーネルスレッドが停止し、システムのロックアップやパニックを引き起こす危険性が確認された。

さらにHW PANおよびSW PANが有効な環境下では、ユーザーメモリへのアクセスが制限され、両関数が正常に動作しない問題も発覚した。また特権モードで実行される関数は、TTBR0アドレス範囲の最初の1MiB内のアドレスからTTBR1アドレス範囲の最後の1MiBにアクセス可能であることも判明している。

Linux kernelの脆弱性の詳細

項目 詳細
脆弱性ID CVE-2024-50099
影響を受ける関数 simulate_ldr_literal()、simulate_ldrsw_literal()
影響を受けるバージョン Linux 4.10以降
修正されたバージョン Linux 4.19.323、5.4.285、5.10.228、5.15.169、6.1.114、6.6.58、6.11.5
主な問題点 extableエントリの欠如、HW/SW PANとの互換性問題、特権アクセスの制御不備

extableエントリについて

extableエントリとは、Linuxカーネルにおけるメモリアクセス時の例外処理を管理するためのテーブルエントリのことを指す。主な特徴として、以下のような点が挙げられる。

  • カーネル空間でのメモリアクセスエラーを適切に処理
  • フォールト発生時の回復処理を定義
  • システムの安定性維持に重要な役割を果たす

extableエントリの欠如は、ユーザー空間メモリへのアクセスエラーを適切に処理できない状況を引き起こす。このような状況下でメモリアクセスエラーが発生すると、カーネルスレッドが予期せず終了し、システム全体の安定性に深刻な影響を及ぼす可能性がある。

Linux kernelのarm64 uprobes機能に関する考察

Linux kernelのarm64 uprobes機能における今回の脆弱性修正は、システムの安定性と信頼性の向上に大きく貢献する重要な対応である。メモリアクセスの制御不備やHW/SW PANとの互換性問題が解決されることで、カーネルの堅牢性が向上し、セキュリティリスクの軽減に繋がるだろう。

しかし、今後も同様の問題が発生する可能性を考慮し、既存コードの再利用時には互換性や安全性の検証を徹底する必要がある。特にユーザー空間とカーネル空間の境界におけるメモリアクセス制御は、より慎重な設計と実装が求められるだろう。

将来的には、LDR (literal)とLDRSW (literal)命令に対する新しいuprobesサポートの実装が期待される。メモリアクセスの安全性を確保しつつ、必要な機能を提供できる設計が望まれるところだ。

参考サイト

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

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

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

コメントを残す

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