19年間潜伏したLinuxカーネルの脆弱性、root権限奪取のリスク

19年にわたってLinuxカーネルに潜伏してきた脆弱性が発見されました。この脆弱性を悪用すると、権限の低いユーザーが多数のディストリビューション上でroot権限を取得できる可能性があります。

CIFSwitchと命名されたこの問題は、LinuxカーネルのCIFSサブシステムと、認証処理に使用されるユーザースペースヘルパーcifs-utilsに影響します。CIFSは、共有マウント、読み書き操作、サーバーへのSMB通信など、SMBネットワークファイルシステムプロトコルの各機能を担っています。

マウントの認証時、サブシステムはcifs.spnegoキーに対するrequest_key呼び出しを送信します。このリクエストはユーザースペース側でキーを確認し、UID、PID、クレデンシャルキャッシュ、ネームスペースといったフィールドを含むキーの記述情報を解析するため、cifs.upcallをrootとして呼び出します。

SpaceXのセキュリティエンジニア、Asim Viladi Oglu Manizadaによれば、カーネルはリクエストの送信元やキーの記述情報を検証しないため、攻撃者はrequest_key関数を直接呼び出してキーの記述フィールドを自由に操作でき、CIFSの送信元チェックを回避できるとのことです。

cifs.upcallはrootとして実行されるため、改ざんされたキーの記述に含まれるPIDのネームスペースに切り替わり、攻撃者にroot権限が付与されてしまいます。

さらに、この処理の実行中、権限が降格される前にヘルパーがアカウント検索を行います。この処理はName Service Switch(NSS)を経由するため、NSSモジュールのロードが可能になります。

Manizadaによると、攻撃者は自分のネームスペースに偽のNSS設定ファイルとNSSモジュールを配置することでこれを悪用でき、結果としてヘルパーが攻撃者の制御するコードをrootとしてロードしてしまうといいます。

エンジニアによれば、この脆弱性は、CIFSが専用のspnego_credを使用している場合にのみキーの記述情報を正当と見なすようにすること、およびキーの記述情報がカーネル生成であるかどうかを確認するユーザースペース側のハードニングを実装することで修正できるとしています。

cifs-utilsをデフォルトでインストールしているLinux Mint、CentOS、Rocky Linux、Kali Linux、AlmaLinux、SLES SAPの一部のディストリビューションが影響を受けます。研究者によれば、cifs-utilsを手動でインストールした場合にのみ脆弱となるディストリビューションも存在するとのことです。

Ubuntu、Fedora、CentOS、Rocky Linux、AlmaLinux、Oracle Linux、openSUSE、SLESの多くのディストリビューションは、デフォルトで実行パスをブロックしており、Amazon Linux 2 KVMおよびKali Linux 2019.4/2020.4は影響を受けません。

主要なLinuxディストリビューションは今月初めに修正プログラムを公開しました。Manizadaは、防御側が「パッチ、緩和策、検出手法、および影響範囲を検証する」ための助けとなるよう、概念実証(PoC)コードを公開しています。

翻訳元: https://www.securityweek.com/19-year-old-linux-kernel-vulnerability-exposes-systems-to-root-access/

ソース: securityweek.com