Last Updated on 2025-04-25 15:15 by admin
サイバーセキュリティ企業ARMOの研究者が、Linuxの非同期I/O機能「io_uring」を利用した新たなルートキット「Curing」を開発し、従来のシステムコール監視に基づくセキュリティツールをバイパスできることを実証した。この研究結果は2025年4月24日に公開された。
io_uringは2019年3月にLinuxカーネルバージョン5.1で初めて導入されたシステムコールインターフェースで、サブミッションキュー(SQ)とコンプリーションキュー(CQ)という2つの循環バッファを使用して、カーネルとアプリケーション間でI/Oリクエストを非同期的に処理する。
ARMOが開発したルートキット「Curing」は、コマンド&コントロール(C2)サーバーと感染ホスト間の通信を行い、システムコールを使用せずにコマンドを取得して実行する。これにより、システムコール監視に依存するセキュリティツールはこの種の攻撃を検出できない。
ARMOの分析によると、Cloud Native Computing Foundation(CNCF)のプロジェクトであるFalcoはシステムコールフッキングに依存しているため、io_uringベースの操作を検出できないことが明らかになった。一方、Tetragonは適切に設定すれば検出可能だが、デフォルト設定では検出できない。
io_uringを使用した攻撃では、ファイルの読み書き、ネットワーク接続の作成と受け入れ、プロセスの生成、ファイル権限の変更、ディレクトリ内容の読み取りなど、少なくとも61種類の操作が可能である。
Googleは2023年6月、io_uringが「強力な攻撃プリミティブを提供する」としてAndroid、ChromeOS、および同社の本番サーバー全体でこのLinuxカーネルインターフェースの使用を制限することを決定したと発表している。
ARMOはこの問題の解決策として、Kernel Runtime Security Instrumentation(KRSI)の採用を提案している。KRSIはeBPFプログラムをセキュリティ関連のカーネルイベントにアタッチすることを可能にする。
ARMOはセキュリティコミュニティの意識を高めるために「Curing」ルートキットをGitHubで無料公開している。この脆弱性は2025年初頭にARMOの研究チームがCCC(Chaos Communication Congress)会議で発見したものである。
from:Linux io_uring PoC Rootkit Bypasses System Call-Based Threat Detection Tools
【編集部解説】
今回明らかになったLinuxの「io_uring」を利用したルートキットの脅威は、サイバーセキュリティ業界に大きな衝撃を与えています。ARMOが開発した「Curing」ルートキットが示したのは、現代のLinuxセキュリティツールに存在する重大な盲点です。この問題の本質を理解するために、まずは技術的な背景から見ていきましょう。
io_uringとは、2019年3月にLinuxカーネル5.1で導入された非同期I/O処理のためのインターフェースです。従来のシステムコールを使用する方法と比較して、オーバーヘッドを大幅に削減し、パフォーマンスを向上させる目的で設計されました。具体的には、カーネルとユーザー空間アプリケーション間で共有される2つのリングバッファ(サブミッションキューとコンプリーションキュー)を使用することで、I/O操作を非同期的に処理します。
問題の核心は、多くのLinuxセキュリティツールがシステムコールの監視に依存している点にあります。システムコールとは、アプリケーションがOSの機能を利用するための標準的な方法ですが、io_uringはこれを迂回して直接カーネルと通信できるため、従来の監視手法では検出できない「盲点」が生まれてしまいます。
ARMOの研究によれば、現在広く使用されているFalcoはシステムコールの監視に依存しているため、io_uringを使った操作を検出できないことが確認されています。一方、Tetragonは適切に設定すれば検出可能ですが、デフォルト設定では検出できません。これは企業のセキュリティ体制に大きな穴を開ける可能性があります。
特に注目すべきは、io_uringを使って実行できる操作の多様性です。ARMOの報告によれば、ファイルの読み書き、ネットワーク接続の作成、プロセスの生成、ファイル権限の変更など、少なくとも61種類の操作が可能とのこと。これは攻撃者にとって非常に強力なツールキットとなり得ます。
この問題の深刻さは、Googleが2023年6月にAndroid、ChromeOS、自社の本番サーバーでio_uringの使用を制限したという事実からも読み取れます。Googleはio_uringが「強力な攻撃プリミティブを提供する」と評価しており、早くからこのリスクを認識していました。
しかし、この脆弱性は完全に新しいものではありません。2023年7月のGoogleの発表によれば、同社はio_uringに関連する42件のLinuxカーネルエクスプロイトを確認しており、約100万ドルの脆弱性報奨金を支払ったとのこと。つまり、io_uringのセキュリティリスクは以前から知られていましたが、今回ARMOが実際に機能するルートキットを開発したことで、その危険性が改めて浮き彫りになったと言えるでしょう。
対策としては、ARMOが提案するKernel Runtime Security Instrumentation(KRSI)の採用が有効です。KRSIはeBPFプログラムをセキュリティ関連のカーネルイベントにアタッチすることで、より深いレベルでの監視を可能にします。また、io_uringの異常な使用パターンを検出する方法も考えられますが、これは誤検出のリスクもあります。
企業のセキュリティ担当者は、自社環境でのio_uringの使用状況を確認し、必要に応じてSeccompプロファイルを使用して制限することも検討すべきでしょう。ARMOはセキュリティコミュニティの意識を高めるためにCuringルートキットをGitHubで公開しているため、自社のセキュリティツールがこの種の攻撃を検出できるかテストすることも可能です。
この事例は、テクノロジーの進化とセキュリティのバランスの難しさを示しています。io_uringはパフォーマンス向上という正当な目的で導入されましたが、同時に新たなセキュリティリスクも生み出しました。今後も同様の課題が出てくる可能性があり、セキュリティ対策は常に進化し続ける必要があるでしょう。
【用語解説】
io_uring:
Linuxカーネル5.1(2019年3月)で導入された非同期I/O処理のためのシステムコールインターフェース。従来のシステムコールよりも効率的にI/O操作を行うために、カーネルとユーザー空間アプリケーション間で共有される2つのリングバッファ(サブミッションキューとコンプリーションキュー)を使用する。
ルートキット:
システムに侵入し、管理者権限を奪取した後、その存在を隠蔽しながら活動を続けるマルウェアの一種。今回のCuringルートキットはio_uringを利用して検出を回避する。
システムコール:
アプリケーションがOSの機能(ファイルの読み書きやネットワーク通信など)を利用するための標準的なインターフェース。多くのセキュリティツールはこのシステムコールを監視することで不審な活動を検出している。
ARMO:
今回の研究を行ったサイバーセキュリティ企業。Kubernetesセキュリティプラットフォーム「Kubescape」を開発している。日本の建設会社ARMOとは無関係。
Falco:
Cloud Native Computing Foundation(CNCF)のプロジェクトで、Linuxシステム上での異常なアクティビティを検出するためのオープンソースのランタイムセキュリティツール。システムコールの監視に依存している。
Tetragon:
Ciliumプロジェクトが開発するeBPFベースのセキュリティ監視ツール。適切に設定すれば、カーネルレベルでのイベント監視と対応が可能だが、デフォルト設定ではio_uringベースの攻撃を検出できない。
eBPF (Extended Berkeley Packet Filter):
Linuxカーネル内で安全にプログラムを実行するための技術。カーネルの動作を変更したり監視したりする機能を提供する。
CCC (Chaos Communication Congress):
ドイツのハッカー団体Chaos Computer Clubが主催する年次カンファレンス。ARMOの研究チームはこの会議で初めてio_uringの脆弱性を発見した。
【参考リンク】
ARMO (セキュリティ企業)(外部)
Kubernetesセキュリティに特化した企業で、今回のio_uringの脆弱性を発見した研究チームが所属している。
Falco(外部)
クラウドネイティブ環境向けのオープンソースランタイムセキュリティツール。システムコール監視に依存している。
Tetragon(外部)
Ciliumプロジェクトが開発するeBPFベースのセキュリティ監視ツール。適切に設定すればカーネルレベルでのイベント監視が可能。
Curing (PoC ルートキット)(外部)
ARMOがセキュリティコミュニティの意識を高めるために開発・公開したio_uringを利用したPoC(概念実証)ルートキット。
【参考動画】
【編集部後記】
テクノロジーの進化は常に新たな可能性と同時に新たな課題をもたらします。今回のio_uringの事例は、パフォーマンス向上を目的とした技術が思わぬセキュリティリスクを生み出した興味深い例ではないでしょうか。皆さんの組織ではLinuxシステムのセキュリティ対策はどのように行われていますか?また、パフォーマンスとセキュリティのバランスについて、どのような考えをお持ちでしょうか。SNSでぜひ皆さんの見解や経験をシェアしていただければ幸いです。