Linux 7.2 特殊ファイルの誤認を防ぐフラグを追加

2026年05月21日 スペイン語から翻訳・公開

次期Linuxカーネルバージョン7.2では、openat2システムコールにフラグOPENAT2_REGULARが追加されます。この機能により、プログラムは通常のファイルのみを開くことを保証し、/dev/nullやFIFOなどの特殊デバイスへのリダイレクトを防ぎます。これらは予期しないブロッキング動作やセキュリティ脆弱性を引き起こす可能性があります。

Linuxカーネルコンパイルプロセス、openat2システムコールと緑色のコードで強調表示されたOPENAT2_REGULARフラグを示すプログラマー端末、ファイルリダイレクションがシールドアイコンによって遮断される象徴的なチェーン、悪意のあるFIFOパイプと/dev/nullデバイスノードが赤い×印でブロックされた経路として表示、チェックマークが光る通常ファイルアイコン、テクニカルイラストスタイル、マトリックス風コードの雨が降る暗い端末背景、劇的な青とオレンジの照明、超詳細な回路基板のトレースを背景にしたフォトリアリスティックなエンジニアリングビジュアライゼーション

カーネルにおけるOPENAT2_REGULARの仕組み 🛡️

OPENAT2_REGULARフラグは、openat2呼び出しにおけるフィルターとして機能します。有効化されると、カーネルはオープンを許可する前に、対象ファイルが通常のファイルタイプ(S_IFREG)であることを確認します。ファイルがブロックデバイス、FIFO、またはソケットである場合、操作はEISDIRまたはEPERMエラーで失敗します。このチェックはシンボリックリンクの解決後に行われ、リンクを使用して特殊デバイスを指し示す攻撃の経路を遮断します。この実装は、ユーザーファイルを処理するアプリケーションを保護するためにUAPIグループによって要求されました。

/dev/nullやいたずらFIFOによる驚きとはおさらば 😅

これまでは、信頼したプログラムがファイルを開こうとして、それがFIFOだったために永久にデータを待ち続けたり、さらに悪いことに、/dev/nullが出力を何も言わずにすべて飲み込んでしまうことがありました。OPENAT2_REGULARを使えば、そうした驚きはなくなります。ファイルが通常のファイルでなければ、カーネルが拒否し、開発者は何時間ものデバッグを省けます。まるで、ディスクの入り口にフィルターを設置して、仮装したものではなく、本物のファイルだけを通すようなものです。