
Linux の snap-confine + systemd-tmpfiles を介した LPE を詳細に解説
免責事項: このリポジトリは教育目的のみを対象としています。すべての内容は、Qualys が 2026 年 3 月 17 日に公開した元のセキュリティアドバイザリに基づいています。この脆弱性は修正済みです。システムを常に最新の状態に保ってください。所有していないシステム、または明示的な書面による許可を得ていないシステムに対して、この資料を使用しないでください。
CVE-2026-3888 は、Ubuntu Desktop >= 24.04 のデフォルトインストールに影響するローカル権限昇格 (LPE) 脆弱性です。2026 年 3 月に Qualys によって発見され、公開されました。
Qualys 自身も指摘しているように、この脆弱性が特に興味深いのは、単一のバグのあるコンポーネントに起因するものではないことです。代わりに、個々には安全な 2 つのプログラムの相互作用から生じます:
| コンポーネント | 役割 |
|---|---|
snap-confine | snap アプリケーションのマウント名前空間 (サンドボックス) を構築する SUID-root バイナリ |
systemd-tmpfiles | /tmp 内の古いファイルを定期的にクリーンアップする root 所有のデーモン |
どちらのプログラムも単独では壊れていません。しかし、組み合わさることで悪用可能なウィンドウが生まれます。
元のアドバイザリ: https://cdn2.qualys.com/advisory/2026/03/17/snap-confine-systemd-tmpfiles.txt
クレジット: Qualys Security Research Team
cve-2026-3888/
├── README.md ← 現在地
├── analysis/
│ ├── 01-vulnerability.md ← 脆弱性の詳細な解説
│ ├── 02-race-condition.md ← TOCTOU レースの仕組み
│ ├── 03-backpressure-technique.md ← AF/UNIX バックプレッシャーのトリック
│ ├── 04-exploitation-steps.md ← 完全なステップバイステップの解説
│ └── 05-mitigations.md ← 修正された内容とその方法
└── src/
├── firefox_2404.c ← レースヘルパー (注釈付き)
└── librootshell.c ← 動的ローダーのシェルコード (注釈付き)
| Ubuntu バージョン | クリーンアップ期間 | 待機時間 (実時間) |
|---|---|---|
| 24.04 LTS | 30 日 | 30 日 |
| > 24.04 | 10 日 | 10 日 |
修正バージョン: snapd 2.74.2
/tmp/.snap を root:root 0755 として作成する/tmp をアクティブに保つが、/tmp/.snap は古いままにするsystemd-tmpfiles が古い /tmp/.snap を削除する - /tmp はワールドライタブルなので、攻撃者は .snap を再作成し、その所有者となるsnap-confine の実行をシングルステップ実行するsnap-confine が攻撃者所有のライブラリを root として名前空間にバインドマウントするld-linux-x86-64.so.2 をシェルコードで上書きする - この名前空間で実行される SUID バイナリは、root としてコードを実行する/var/snap/firefox/common/ を介して AppArmor の制限を回避し、完全な権限を持つシェルを取得する