| タイトル | lfprojectsのMCP Registryにおける複数の脆弱性 |
|---|---|
| 概要 | MCPレジストリはMCPクライアントに対してMCPサーバーのリストを提供し、MCPサーバーのためのアプリストアのような役割を果たします。バージョン1.7.7以前では、GET / で提供されるパブリックカタログのUI(ファイル internal/api/handlers/v0/ui_index.html)が、公開された任意のserver.jsonのserver.websiteUrlフィールドを介した保存型クロスサイトスクリプティング(XSS)に対して脆弱でした。サーバー側の検証(internal/validators/validators.go内のvalidateWebsiteURL)はURLが解析可能で絶対URLでありhttpsスキームを使用していることのみをチェックし、引用符文字を拒否しません。クライアント側では、その値が独自のescapeHtmlヘルパーを使ってtextContentからinnerHTMLへと変換され、二重引用符で囲まれたhref属性に埋め込まれます。HTMLのシリアライズアルゴリズムによれば、この変換はテキストノード内の &, , , U+00A0 のみをエンコードし、"や'はエンコードしません。したがって、websiteUrl内のリテラルの"はhref属性から抜け出し、同じa要素に任意のon*イベントハンドラを追加可能になります。/ に設定されたContent-Security-Policyはscript-src 'self' 'unsafe-inline' https://cdn.tailwindcss.comであるため、注入されたイベントハンドラは実行されます。自身のGitHubアカウントでPOST /v0/auth/github-atを使うか、あるいは匿名認証が有効なデプロイメントでPOST /v0/auth/noneを通じて公開トークンを取得可能なユーザーはこの脆弱性を利用し、レジストリのホームページの訪問者全員に見える汚染されたレコードを設置できます。この脆弱性はバージョン1.7.7で修正されました。 |
| 想定される影響 | 当該ソフトウェアが扱う情報の一部が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う情報の一部が書き換えられる可能性があります。 さらに、当該ソフトウェアは停止しません。 そして、この脆弱性を悪用した攻撃により、他のソフトウェアにも影響が及ぶ可能性があります。 |
| 対策 | 正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。 |
| 公表日 | 2026年5月14日0:00 |
| 登録日 | 2026年5月18日11:22 |
| 最終更新日 | 2026年5月18日11:22 |
| CVSS3.0 : 警告 | |
| スコア | 5.4 |
|---|---|
| ベクター | CVSS:3.0/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| lfprojects |
| MCP Registry 1.7.7 未満 |
| No | 変更内容 | 変更日 |
|---|---|---|
| 1 | [2026年05月18日] 掲載 |
2026年5月18日11:22 |
| 概要 | The MCP Registry provides MCP clients with a list of MCP servers, like an app store for MCP servers. Prior to 1.7.7, the public catalogue UI served at GET / (file internal/api/handlers/v0/ui_index.html) is vulnerable to stored cross-site scripting via the server.websiteUrl field of any published server.json. Server-side validation in internal/validators/validators.go (validateWebsiteURL) only checks that the URL parses, is absolute, and uses the https scheme; it does not reject quote characters. Client-side, the value is interpolated into a double-quoted href attribute via innerHTML, using a homegrown escapeHtml helper that performs the standard textContent → innerHTML round-trip. Per the HTML serialisation algorithm, that round-trip encodes only &, <, > and U+00A0 inside text nodes — it does not encode " or '. A literal " in websiteUrl therefore breaks out of the href attribute, allowing arbitrary on* event handlers to be appended to the same <a> element. The Content-Security-Policy on / is script-src 'self' 'unsafe-inline' https://cdn.tailwindcss.com, so the injected event handlers execute. Any user able to obtain a publish token (e.g. via POST /v0/auth/github-at with their own GitHub account, or POST /v0/auth/none on a deployment that has anonymous auth enabled) can plant a poisoned record visible to every visitor of the registry homepage. This vulnerability is fixed in 1.7.7. |
|---|---|
| 公表日 | 2026年5月15日6:16 |
| 登録日 | 2026年5月17日4:10 |
| 最終更新日 | 2026年5月16日2:52 |
| 構成1 | 以上 | 以下 | より上 | 未満 | |
| cpe:2.3:a:lfprojects:mcp_registry:*:*:*:*:*:*:*:* | 1.7.7 | ||||