オーナーワイルドカードというマッチング方式は、従来の個別にリポジトリ名を列挙する方法と比べて、セキュリティ上実質的な違いがあるのか?
この機能が変えるのは「維持コスト」であり、「個々のルールそのもののセキュリティ強度」ではない。リポジトリを個別に列挙する方法は、ルール自体の精度という点では実はより高い——それぞれのルールが明確で具体的な1つのリポジトリに対応しているからである。一方オーナーワイルドカードは、個々のリポジトリに対する信頼判断を、組織というより大きな信頼単位に置き換えるものである。その組織配下のどのリポジトリであれ、内容に問題が生じた場合(侵害された、あるいは協力者の権限が悪用されたなど)、ワイルドカードルールはその問題を、すでに許可されている範囲内に自動的に含めてしまい、追加でブロックされることはない。
これは、オーナーワイルドカードの利用が、実質的に信頼のレベルを「リポジトリ」から「組織」へと引き上げることを意味し、セキュリティが十分かどうかは、その組織自身のアクセス制御とガバナンスがどれだけ厳格であるかにかかっている。だからこそ、この機能は自分の組織内部で確実に管理できる状況に最も適しており、外部の第三者組織に対してワイルドカードで許可を選ぶ場合、リスク判断の粒度を粗くすることになり、その組織全体に対する相応の信頼の基盤がなければ合理的とは言えない。
なぜ今回SHA-256による完全性検証まで一緒に追加されたのか、これはオーナーワイルドカードと同じ文脈にある機能なのか?
この2つの機能は異なる層の問題を解決するものだが、確かに同じ文脈の中で理解することができる。オーナーワイルドカードが扱うのは「どのソースを信頼できるか」であり、SHA-256検証が扱うのは「たとえソースが信頼されていても、実際にダウンロードされた内容が転送過程で改ざんされていないか」である。この2つが揃って初めて、比較的完全なサプライチェーン信頼の仕組みが構成される。ある組織を信頼しているというだけでは、その組織が公開するすべてのファイルが転送過程で改ざんされないことは保証されない(中間者攻撃や、配布用サーバー自体が侵害されるケースなど)。逆に、ファイルのハッシュ値を検証するだけでも、そもそも信頼できないソースからダウンロードしていれば意味がない。検証しているのは「これは攻撃者が本来渡そうとしていたそのファイルである」ということだけである。
この2つの機能を同じ一連の更新にまとめたことは、ある程度、Pluginエコシステムの規模拡大に伴い、Anthropicが「ソースのガバナンス」と「コンテンツの完全性」という2つの角度から同時にサプライチェーンセキュリティを強化していることを反映している。これは、最近のサードパーティ製Skillのアップロードスキャンや、GitHub repoのSkill信頼境界をめぐる一連の動きと、方向性として一致している。
もし自分の組織がすでにstrictKnownMarketplacesの許可リストを設定しており、その後もともと許可されていたリポジトリがハッキングされた場合、このルールは自動的にブロックしてくれるのか?
いいえ、ブロックしません。strictKnownMarketplacesがチェックしているのは「このmarketplaceソース自体が許可リストに含まれているかどうか」であり、これはソースレベルの静的な照合であって、コンテンツレベルの継続的な監視ではない。つまり、リポジトリの所在地(例えば acme-corp/approved-plugins)が変わらない限り、たとえ中身が攻撃者によって改ざんされたとしても、このルールは依然として「これは許可されたソースだ」と判断して通してしまう。ルールが照合しているのは「これは自分が認識しているアドレスかどうか」であって、「このアドレスに現在置かれているものが今も安全かどうか」ではないからである。
まさにこの部分を補うのがSHA-256による完全性検証である。marketplace内の個々のPluginエントリにsha256フィールドが設定されていれば、たとえソース自体が信頼されていても、実際にダウンロードされたファイルのハッシュ値が事前に設定された値と一致しない限り、インストールは拒否される。ただしこれはarchiveソース経由のPluginにしか適用されない。git系のソース(github、url、git-subdir)経由のPluginには現時点で同様のハッシュ照合の仕組みはなく、それに近い保護策としては、shaフィールドで特定のコミットを固定し、知らないうちに別のバージョンに差し替えられることを防ぐ方法があるが、これも当初固定したそのコミットがクリーンであったという前提に依然として立っている。
もし自分が組織のためにPlugin marketplaceのガバナンスポリシーを設計するとしたら、この2つの機能を実際にどう組み合わせて使うべきか?
より堅実な方法は、この2つの機能を異なる層に分担させることである。オーナーワイルドカードは「組織範囲での粗い粒度の信頼判断」に使う——例えば自社のGitHub組織(your-org/*)を許可したり、既知の問題がある外部組織をブロックしたりするのに用いる。個々の重要なPlugin(特により高い権限に関わるものや、広く導入されるもの)については、さらに公開者にSHA-256ハッシュ値の提供を求めるか、git系ソースを経由させたうえで明確なコミットshaを固定するよう求め、「ソースが信頼できるかどうか」とは独立したコンテンツの完全性の保護層を持たせるとよい。
実務上見落とされがちな細部もある。オーナーワイルドカードは完全一致によるマッチングであり、acme-corp/* はそのオーナー配下のリポジトリのみをカバーし、名前が似ているが別のオーナーに属するリポジトリを誤ってカバーすることはない。また、strictKnownMarketplacesはmarketplaceの追加時、そしてインストール・更新・リフレッシュ・自動更新のたびにチェックされる。あるmarketplaceがポリシー設定より前にすでに追加されており、そのソースが許可リストに一致しなくなった場合、ルールが発効すると、そのソースからの以降のインストールや更新は単純に拒否される。これは、ポリシー変更後には、現在インストール済みのmarketplaceリストを能動的に棚卸しし、必要なソースが意図せずブロックされていないか確認する価値があることを意味する。
Claude Codeの最近の更新により、管理者はより細かい粒度でPlugin Marketplaceを制御できるツールを手に入れた。strictKnownMarketplacesという管理設定を通じて、管理者は「オーナーワイルドカード」(owner wildcard)という形式を使い、あるGitHub組織配下のすべてのmarketplaceリポジトリを、1つのルールだけで許可またはブロックできるようになった。各リポジトリ名を個別に列挙する必要はない。同時に、Pluginの新しい配布方式である封存(archive)ソースも追加された。これによりPluginはHTTPS経由でzipファイルをダウンロードしてインストールでき、gitやnpmは不要になり、SHA-256ハッシュ値を付けてダウンロード内容が改ざんされていないかを検証することもできる。
strictKnownMarketplacesという設定自体は以前から存在しており、ユーザーがどのmarketplaceソースを追加できるかを制限するものだった。未設定の場合はデフォルトで制限なし、空配列に設定すると公式marketplaceを含むすべてのソースが完全にブロックされ、あるいは特定のソースの許可リストを指定することもできる。今回の更新で追加されたのはワイルドカードによるマッチング方式である。管理者は acme-corp/* のような形式で1つのルールを書くことができ、その組織配下のあらゆるリポジトリが自動的に許可されるようになる(あるいはblockedMarketplacesリストで使えば、信頼できない組織配下のすべてのリポジトリを一度にブロックできる)。この機能にはClaude Code v2.1.223以降が必要である。
もう1つの新機能は、marketplaceが封存ソース(archive source)を使ってPluginを配布できるようにするものである。Pluginをzipファイルにパッケージ化し、任意の静的ファイルサーバー(S3、Artifactoryなど)にホストすれば、Claude CodeはHTTPS経由でそのzipファイルをダウンロードしてインストールする。この過程全体で、ユーザーのマシンにgitやnpm環境は一切不要である。このソースタイプには任意で sha256 フィールドを付けることができ、そのファイルのハッシュ値を指定できる。設定すると、Claude Codeはダウンロードのたびにハッシュ値が一致するか検証し、一致しない場合は「Plugin archive integrity check failed」というエラーを返してインストールを拒否し、内容が改ざんされたバージョンをインストールしてしまうことはない。公式文書でも、このソースタイプはHTTPSのみを受け付け、内部ネットワークアドレスやクラウドのメタデータエンドポイントといったセキュリティ上懸念のあるダウンロード先を拒否すること、そしてリダイレクトの過程でも同じルールに従う必要があることが明確に示されている。
もしあなたが個人開発者であれば、この2つの更新が日々の作業を直接変えることはないが、封存ソースはgitやnpmに依存せずPluginを配布できる新しい経路であり、内部ファイルサーバーを使って社内のプライベートなPluginを配布したいものの、別途gitサービスを構築したくないチームにとっては、より軽量な選択肢となる。SHA-256ハッシュを付けることで、ダウンロードしている内容が公開者が本来提供したものと完全に一致しているかを、インストール前に確認することもできる。もしあなたが企業や組織の管理者であれば、オーナーワイルドカードは許可リストやブロックリストのポリシーを維持するコストを大幅に下げてくれる。従来、活発に開発が続く社内組織を許可するには、新しいリポジトリが追加されるたびにルールリストを更新し続ける必要があったかもしれないが、今では1つのワイルドカードルールでカバーできる。逆に、既知の問題がある外部組織をブロックする必要がある場合も、そのリポジトリをすべて列挙するまで待たずにブロックを有効化できる。