io_uring」インターフェースに起因する Linux ランタイムセキュリティの重大なセキュリ ティギャップにより、高度なエンタープライズセキュリティソフトウェアを回避しながら、 システム上でルートキットが検出されずに動作する可能性がある。
この欠陥は、io_uring を回避に活用する攻撃の実用性と実現可能性を実証するために、「Curing」と呼ばれる概念実証ルートキットを開発したARMO のセキュリティ研究者によって発見されました。
io_uringは、効率的な非同期I/O操作のためのLinuxカーネルインターフェースである。従来のI/Oシステムのパフォーマンスとスケーラビリティの問題に対処するため、2019年にLinux 5.1で導入された。
io_uringは、多くのオーバーヘッドとプロセスのハングを引き起こすシステムコールに依存する代わりに、プログラムとシステムカーネル間で共有されるリングバッファを使用して、非同期に処理されるI/O要求をキューに入れ、プログラムの実行を継続できるようにする。

ソースはこちら:ドナルド・ハンター
ARMOによれば、この問題は、ほとんどのセキュリティ・ツールが(「ptrace」や「seccomp」のように)不審なシステムコールやフッキングを監視し、io_ringに関係するものは完全に無視するという事実から生じており、非常に危険な盲点を作り出している。
研究者は、io_ringは61のopsタイプを通じて、ファイルの読み書き、ネットワーク接続の作成と受け入れ、プロセスの生成、ファイル・パーミッションの変更、ディレクトリ・コンテンツの読み取りなど、幅広い操作をサポートしており、強力なルートキット・ベクターになっていると説明している。
グーグルは、Linuxカーネルを使用し、その根底にある脆弱性の多くを受け継いでいるAndroidとChromeOSでは、デフォルトでこれをオフにすることを決定した。
ARMOは、理論を実証するために、io_uringを悪用してリモート・サーバーからコマンドを引き出し、syscallフックをトリガーすることなく任意の操作を実行する特別な目的のルートキット、Curingを作成した。
Curingをいくつかの有名なランタイム・セキュリティ・ツールに対してテストしたところ、そのほとんどがその活動を検出できないことが実証された。
具体的には、Falcoはカスタムの検知ルールを使用した場合でさえも完全に盲点となり、一方Tetragonはデフォルトの設定では悪意のある活動にフラグを立てることができないことが判明した。
しかしTetragonは、このルートキットを検出するために監視を有効にすることができるため、自社のプラットフォームが脆弱であるとは考えていない。
「我々はTetragonチームにこのことを報告し、彼らの視点からは、Tetragonは基本的にどこでもフックする柔軟性を提供しているため、「脆弱性」ではないという回答でした」と研究者は説明する。
“彼らは、このテーマについて書いた良いブログ記事を指摘した。” 研究者は説明する。
市販のツールに対してテストを行ったところ、ARMOはさらに、io_uringベースのマルウェアや、システムコールを伴わないカーネルとのインタラクションを検出できないことを確認した。しかし、ARMOは、どのような商用プログラムを再度テストしたかは明らかにしていない。
この脅威に対して自分の環境をテストしたい人のために、ARMOはCuringをGitHubで無料公開している。
ARMOは、eBPFプログラムをセキュリティに関連するカーネル・イベントにアタッチできるKRSI(Kernel Runtime Security Instrumentation)を採用することで、この問題を解決できると提案している。
The post Linuxの “io_uring “セキュリティの盲点、ステルスなルートキット攻撃を許す first appeared on PRSOL:CC.