資格情報に付されたラベルは、その資格情報の権限範囲ではありません。
1 つのボールトにスコープされた 1Password のサービストークンが、組織全体をマッピングできます。すべてのユーザー、グループ、そして権限を。ラベルには「1 つのボールト」と書かれていました。API は別の答えを返しました。権限範囲は、ラベル付けではなく、強制されるべきものです。
暗号技術は堅牢です。RFC 5054 SRP-6a、AES-256-GCM、定数時間比較、ゼロ知識証明。1Password は暗号技術を正しく実装していました。誤っていたのは、缶に貼られたラベルです。
今月、Token Security のエンジニア 2 名が 3 日をかけて、1Password の独自 SRP 認証プロトコルのリバースエンジニアリングを行いました。狙いは脆弱性の発見ではありません。SCIM ブリッジを、非ヒューマン・アイデンティティ向けツールの Python クライアントに置き換えようとしていたのです。見つかったのは、その資格情報が「できる」とされる操作と、実際にできる操作との間の乖離でした [1][2]。
1 つのボールトにスコープされ、読み取り権限のみを持つサービスアカウント用トークンで、組織内の全ユーザーを列挙できます。すべてのグループ。すべてのグループ所属。すべてのボールトにわたるボールト単位の権限。氏名、メールアドレス、状態、最終認証時刻。トークンのラベルには「1 つのボールト」とあります。API は異なる答えを返します [1]。
1Password はこれを確認しました。仕様どおりの動作です。細分化されたスコープ設定はロードマップにありますが、実施時期は未定です [2]。
トークンが実際に到達できる範囲
Gil Portnoy と Henry は、Token Security の記事で、「1 つのボールト」のサービスアカウント用トークンが完全な成功をもって呼び出せる 5 つの API エンドポイントを文書化しました [1]。
/api/v2/users は組織内の全ユーザーを返します。UUID、氏名、メールアドレス、状態、種別、最終認証時刻。/api/v1/groups は、権限と状態とともにすべてのグループを返します。グループ所属、ボールトのユーザーと権限、ボールトのグループに関する CLI コマンドは、いずれも実データを返します。/api/v3/account はアカウントのメタデータを返します。/api/v2/vault/{id}/vaultaccess はボールトへのアクセス情報を返します。
これらのエンドポイントのいずれも、トークンが発行された単一のボールトにスコープされていません。トークンに与えられた指示は「1 つのボールトを読み取る」でした。API は組織全体の地図を返しました [1]。
より重要な点があります。この列挙は、1Password の公式 SDK 経由では動作しません。その経路では UNSUPPORTED または FORBIDDEN が返ります。動作するのは CLI の内部 API 経由で、研究者はこれをリバースエンジニアリングする必要がありました。「スコープ」はクライアント側 SDK の制限にすぎません。その土台にある資格情報は、組織全体に対する読み取り権限を持っています。攻撃者はあなたの SDK を使いません [1]。
研究者は約 420 行の Python でクライアントを構築しました。5 つの API エンドポイント。組織全体の可視化です。詳細は 7 月 16 日に公開されました [1]。
問題は錠前ではなく、鍵束です。
研究者はこの点を慎重に扱っています。暗号技術は実際に強固です。SRP 実装は RFC で標準化されたゼロ知識証明を使用しています。サーバーはパスワードを決して見ることなく、クライアントはソルトを決して見ることなく、認証失敗はすべて同一のエラーメッセージを返すため、攻撃者は何も知ることができません。1Password は自らの非標準的な逸脱(暗号定数の中にイースターエッグとして埋め込まれた「Penny Lane」のビートルズの歌詞を含む)を文書化しており、これらの逸脱はセキュリティ上の中立です [1]。
問題は錠前ではありません。鍵が開けるものです。「1 つのボールトにスコープされている」とラベルされた資格情報を、管理者は影響範囲が狭いと信じてエージェントに与えます。エージェントは資格情報を受け取ります。その資格情報は組織図を受け取ります。誰もそれを意図してはいませんが、誰もそれが起きているのを見ることもできません [1]。
エージェントに「スコープされた」トークンを与えるとき、エージェントが実際に動作するのは、ラベルが記述するスコープではなく、API が実際に強制するスコープの範囲内です。エージェントが、プロンプトインジェクション、改ざんされた設定ファイル、サプライチェーン攻撃、あるいはテキストベースの防御では完全に塞ぎ切れないあらゆる経路によって侵害された場合、攻撃者が手に入れるのは 1 つのボールトではありません。組織のトポロジーです。誰がどのグループに属し、誰がどのボールトにアクセスでき、各ユーザーが最終認証を行ったのはいつか。これは侵害の偵察フェーズそのものであり、単一の API 呼び出しで提供されます [1]。
文書化されたスコープと実効スコープの間の乖離は、1Password 固有のものではありません。すべての資格情報管理 API は、管理者が目にすることのない暗黙の認可判断を行っています。Token Security が証明したのは、この乖離が実在し、測定可能であり、週末の作業と Frida のフックで悪用可能だということです [1]。
この問題を前提に構築されたボールトの違い
資格情報の役割は、置かれた環境で生き残ることです。「スコープされた」トークンが組織を密かにマッピングできるのであれば、そのスコープは実在していません。ラベルにすぎません。
Clavitor は、資格情報にラベルを付けて期待するだけの運用をしません。エージェントは、明示的に名前付けされた 1 つの資格情報を受け取ります。呼び出しの瞬間にライブで取得され、単一のリクエストに注入され、その時点で失われます。攻撃者が再利用できる常設トークンは存在しません。誰も検証していないスコープラベルの背後に、組織マップのエンドポイントが置かれることもありません。ボールトはエージェントに列挙を公開しません。エージェントは、名前に示された対象に到達し、それ以外には到達しません。
すべてのアクセスは、それを実行した特定のエージェントについて記録されます。記録先はボールトであり、エージェントが動作するエンドポイントではありません。トークンが侵害された場合、影響範囲はその 1 回の呼び出しのスコープであり、その背後にある組織のトポロジーではありません。
スコープをラベル付けするのではなく強制するボールトの背後にある原則:資格情報管理の 10 か条
Clavitor (@clavitorai) は、AI エージェントのために、そして AI エージェントに対して構築された資格情報ボールトです。clavitor.ai
出典
[1] Token Security (Gil Portnoy, Henry) — Reversing 1Password's Proprietary SRP Authentication Protocol — @TheTokenSec
[2] @TheTokenSec — スコープ昇格の発見に関する X スレッド、2026 年 7 月 16 日 — "1Password confirmed this is by design, to support vault-management workflows"