公開:

【CVE-2024-50229】Linux kernelのnilfs2ファイルシステムにデッドロックの脆弱性、シンボリックリンク作成時に発生の可能性

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


記事の要約

  • nilfs2のシンボリックリンク作成時にデッドロックの可能性
  • メモリ再利用時のファイルシステム層での循環ロック依存の問題
  • GFPフラグの修正によるデッドロック防止策を実装

Linux kernelのnilfs2ファイルシステムにおけるデッドロック問題

Linux kernelのnilfs2ファイルシステムにおいて、新規作成されたシンボリックリンクに関連するデッドロックの可能性が特定され、2024年11月9日に修正がリリースされた。nilfs_symlink()から呼び出されるpage_symlink()がファイルシステム層を含むメモリ再利用をトリガーし、nilfs->ns_segctor_semとs_writers percpu_rwsemの間で循環的なロック依存関係が発生する可能性があることが判明している。[1]

この問題は、commit 21fc61c73c39によってシンボリックリンクのページキャッシュをhighmemに配置しないよう変更された際に発生した。inode_nohighmem()によってGFP_KERNELフラグが上書きされることで、新規シンボリックリンク作成時にファイルシステム層でのメモリ再利用が可能となり、nilfs_evict_inodeやnilfs_dirty_inodeの呼び出しによってデッドロックが発生する可能性が生まれた。

この脆弱性は【CVE-2024-50229】として識別されており、kernel.orgによって報告された。修正では、既存のnilfs_new_inodeや__nilfs_read_inodeと同様に、新規作成されるシンボリックリンクのページキャッシュGFPフラグから__GFP_FSフラグを削除することで、問題を回避している。

Linux kernelバージョン別の影響範囲まとめ

バージョン 影響状況
4.5以前 影響なし
4.5以降 影響あり
4.19.323 修正済み
5.4.285 修正済み
5.10.229 修正済み
5.15.171 修正済み
6.1.116以降 修正済み

デッドロックについて

デッドロックとは、複数のプロセスやスレッドが互いに相手が保持するリソースを待ち合う状態となり、どのプロセスも実行を継続できなくなる現象のことを指す。システムの安定性に重大な影響を及ぼす可能性がある問題として、以下のような特徴が挙げられる。

  • 複数のリソースが相互に依存関係を持つ状態
  • システムの処理が完全に停止する可能性がある
  • 予防的な対策が重要となる設計上の問題

nilfs2ファイルシステムで発生したデッドロックは、ページキャッシュのメモリ管理とファイルシステムの操作が相互に依存する形で発生している。具体的には、メモリ再利用処理がファイルシステム層を呼び出し、その過程でnilfs->ns_segctor_semとs_writers percpu_rwsemの間で循環的なロック依存が発生することで、システムが停止状態に陥る可能性があるのだ。

nilfs2ファイルシステムのシンボリックリンク処理に関する考察

nilfs2ファイルシステムにおけるシンボリックリンクの処理方式は、ファイルシステムの信頼性と性能のバランスを取る上で重要な要素となっている。特にページキャッシュの管理方法については、メモリ使用効率とデッドロック防止の両立が求められ、今回のような問題が発生した際の影響を最小限に抑えるための設計が必要だろう。

今後は、ファイルシステム層でのメモリ再利用時のロック処理について、より包括的な見直しが必要になると考えられる。特にnofs割り当てスコープの一貫した採用や、ロック制約の改善といった根本的な解決策の検討が望まれ、これによってシステムの安定性と性能の両立が図れるだろう。

また、nilfs2ファイルシステムの今後の発展において、シンボリックリンク処理のさらなる最適化が期待される。特にメモリ管理とファイルシステム操作の分離を進め、より堅牢なシステム設計を実現することで、デッドロックのような重大な問題を未然に防ぐことができるはずだ。

参考サイト

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

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

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

コメントを残す

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