Ubuntuにroot権限昇格の脆弱性CVE-2026-3888――snap-confineとsystemd-tmpfilesの意図せぬ連携が原因

この記事は約6分で読めます。

Ubuntu Desktop 24.04以降にroot権限昇格の脆弱性CVE-2026-3888――snap-confineとsystemd-tmpfilesの意図せぬ連携が原因

CVSS v3.1スコアは7.8(High)で、snap-confineとsystemd-tmpfilesという2つの標準コンポーネントの意図せぬ連携に起因しています。Qualysによれば、悪用にはsystemd-tmpfilesのクリーンアップ周期に依存する10〜30日の待機が必要ですが、成功すればホストの完全な侵害につながり得るとされています。

脆弱性の概要

CVE-2026-3888は、Ubuntuのパッケージ管理基盤であるsnapdの2つのコンポーネントが関与するローカル権限昇格(LPE)の脆弱性です。

1つ目のsnap-confineは、snapアプリケーションの実行前にサンドボックスを構築するsetuid rootバイナリです。マウント名前空間の分離、cgroupの適用、AppArmorポリシーの読み込みを担当し、通常のユーザーと特権操作の信頼境界に位置しています。2つ目のsystemd-tmpfilesは、/tmp、/run、/var/tmpなどの揮発性ディレクトリを管理するサービスで、設定されたルールと経過時間に基づいてファイルやディレクトリを自動的に作成・削除します。

問題の核心は、systemd-tmpfilesがsnapの内部ディレクトリ(/tmp/.snap)を「古くなったデータ」として自動削除した後、snap-confineがそのディレクトリを信頼して使い続ける点にあります。

攻撃チェーンの詳細

この脆弱性の悪用には、一定期間の待機が求められます。Ubuntu 24.04ではsystemd-tmpfilesが/tmp内の古いデータを30日後に、それ以降のバージョンでは10日後に削除するよう設定されています。この仕様による時間的制約が、CVSSスコアにおける「攻撃複雑性:High」の根拠です。

具体的な攻撃の成立過程としては、systemd-tmpfilesが/tmp/.snapディレクトリを古いデータとして自動削除した後、権限のない攻撃者が直ちにこのディレクトリを自分の制御下で再作成し、悪意あるペイロードを配置します。次にsnapアプリケーションが起動される際、snap-confineは特権を持った状態でこの攻撃者制御下の内容をbind mountします。Qualysの解説によれば、これによりまずsnap sandbox内でroot権限のシェル取得につながり、最終的にはホスト上の完全なroot権限にも到達し得ます。

CVSSベクター(AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H)が示す通り、ローカルアクセスと低い権限のみが必要で、ユーザーの操作は不要です。スコープは「Changed」で、脆弱なコンポーネントの範囲を超えたリソースに影響が及ぶことを意味しています。

影響範囲と修正状況

Qualysはデフォルト構成のUbuntu Desktop 24.04以降を主な影響対象として説明しています。Canonicalは、既定構成で影響を受けるのはUbuntu 24.04 LTSとUbuntu 25.10であり、16.04〜22.04 LTSについても非デフォルト構成で影響し得るとしてhardeningを提供しています。

UbuntuはUSN-8102-1で修正を公開し、24.04 LTS向けには同日中にUSN-8102-2で回帰修正も行っています。24.04 LTSにおける現在の修正版はsnapd 2.73+ubuntu24.04.2です。対象のLTSシステムへの速やかなアップデートが推奨されます。

なお、Qualysの技術アドバイザリでは、Ubuntu 25.10のレビュー中にuutils coreutilsのrmにも別の競合状態が見つかったと記載されています。権限のないローカル攻撃者がroot所有のcron実行(具体的には/etc/cron.daily/apport)中にディレクトリエントリをシンボリックリンクに置き換えることで、rootとして任意のファイルを削除でき、snapサンドボックスディレクトリを標的にした追加の権限昇格も可能でした。この件は25.10公開前に既定のrmをGNU coreutilsへ戻すことで緩和され、uutils側でも関連コミットが公開されています。

実務上の影響と対策

実務環境における本脆弱性の脅威を評価する際、ローカルアクセスや10〜30日の待機期間といった「攻撃複雑性:High」の前提条件だけを見ると、悪用のハードルは高いように思われます。しかし、共有端末やマルチユーザー環境、あるいは既に低権限のシェルアクセスを得た攻撃者にとっては、攻撃経路として無視しにくいケースがあると考えられます。Ubuntu Desktopではsnapがデフォルトで有効であり、管理者が意識的に無効化していない限り、この攻撃面が存在します。

根本的な対策は、修正済みのsnapdパッケージへのアップデートです。影響を受けるバージョンは明確に特定されているため、対象のLTS環境では速やかなパッチ適用が推奨されます。snap自体を使用していない環境であれば、snapdの無効化や削除も有力な選択肢です。

パッチ適用までの暫定措置としては、systemd-tmpfilesの設定を見直し、/tmp/.snapの自動削除対象からの除外やクリーンアップタイマーの調整によって攻撃の前提条件を排除することが理論上は可能です。ただし、Ubuntuが案内している正式な対処はsnapdの更新であり、tmpfiles設定の変更はあくまで暫定的な緩和策です。

今回の脆弱性は、個々のバイナリの欠陥ではなく、2つの正常に動作するシステムコンポーネント間の意図せぬ連携から生じています。snap-confineもsystemd-tmpfilesも単体では設計通りに動作していますが、両者のタイミングが重なることで権限昇格パスが発生しています。同様のsnapd構成やtmpfiles設定を採る環境では、同種の条件がないか確認対象になると考えられます。

参考情報

コメント

タイトルとURLをコピーしました