5.1 MEDIUM
- CVSS version (CVSS): 4.0
- Attack Vector (AV): Network (N)
- Attack Complexity (AC): Low (L)
- Attack Requirement (AT): None (N)
- Privileges Required (PR): Low (L)
- User Interaction (UI): Passive (P)
- Vulnerable System Impact Confidentiality (VC): None (N)
- Vulnerable System Impact Integrity (VI): None (N)
- Vulnerable System Impact Availability (VA): None (N)
- Subsequent System Impact Confidentiality (SC): None (N)
- Subsequent System Impact Integrity (SI): Low (L)
- Subsequent System Impact Availability (SA): Low (L)
- Modified Attack Vector (MAV): Network (N)
- Modified Attack Complexity (MAC): Low (L)
- Modified Attack Requirement (MAT): None (N)
- Modified Privileges Required (MPR): Low (L)
- Modified User Interaction (MUI): Passive (P)
- Modified Vulnerable System Impact Confidentiality (MVC): None (N)
- Modified Vulnerable System Impact Integrity (MVI): None (N)
- Modified Vulnerable System Impact Availability (MVA): None (N)
- Modified Subsequent System Impact Confidentiality (MSC): Negligible (N)
- Modified Subsequent System Impact Integrity (MSI): Low (L)
- Modified Subsequent System Impact Availability (MSA): Low (L)
- Safety (S): Not Defined (X)
- Automatable (AU): Not Defined (X)
- Recovery (R): Not Defined (X)
- Value Density (V): Not Defined (X)
- Vulnerability Response Effort (RE): Not Defined (X)
- Provider Urgency (U): Not Defined (X)
- Confidentiality Req. (CR): Not Defined (X)
- Integrity Req. (IR): Not Defined (X)
- Availability Req. (AR): Not Defined (X)
- Exploit Maturity (E): Not Defined (X)
by @LeSuisse Activity log
- Created suggestion
- @LeSuisse dismissed (not in Nixpkgs)
MCP Registry: Stored XSS in catalogue UI via attribute-quote breakout in publisher-controlled `websiteUrl`
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.
References
Affected products
- ==< 1.7.7
Matching in nixpkgs
pkgs.crane
Tools for interacting with remote images and registries including crane and gcrane
pkgs.gcrane
Tools for interacting with remote images and registries including crane and gcrane
pkgs.cargo-local-registry
Cargo subcommand to manage local registries
pkgs.dn42-registry-wizard
Collection of tools to interact with DN42 registry data
pkgs.go-containerregistry
Tools for interacting with remote images and registries including crane and gcrane
pkgs.haskellPackages.registry
data structure for assembling components
pkgs.gitlab-container-registry
GitLab Docker toolset to pack, ship, store, and deliver content
pkgs.haskellPackages.registry-aeson
Aeson encoders / decoders
pkgs.python312Packages.axisregistry
None
pkgs.python313Packages.axisregistry
Google Fonts registry of OpenType variation axis tags
pkgs.python314Packages.axisregistry
Google Fonts registry of OpenType variation axis tags
pkgs.perlPackages.ParseWin32Registry
Module for parsing Windows Registry files
-
nixos-unstable ParseWin32Registry-1.1
- nixpkgs-unstable ParseWin32Registry-1.1
- nixos-unstable-small ParseWin32Registry-1.1
pkgs.perl5Packages.ParseWin32Registry
Module for parsing Windows Registry files
-
nixos-unstable ParseWin32Registry-1.1
- nixpkgs-unstable ParseWin32Registry-1.1
- nixos-unstable-small ParseWin32Registry-1.1
pkgs.haskellPackages.registry-hedgehog
utilities to work with Hedgehog generators and `registry`
pkgs.python312Packages.python-registry
None
pkgs.python313Packages.python-registry
Module to parse the Windows Registry hives
pkgs.python314Packages.python-registry
Module to parse the Windows Registry hives
pkgs.perl538Packages.ParseWin32Registry
None
pkgs.perl540Packages.ParseWin32Registry
None
pkgs.python312Packages.phx-class-registry
None
pkgs.python313Packages.phx-class-registry
Factory and registry pattern for Python classes
pkgs.python314Packages.phx-class-registry
Factory and registry pattern for Python classes
pkgs.haskellPackages.registry-hedgehog-aeson
Hedgehog generators for Aeson
pkgs.python313Packages.json-handler-registry
Registry for JSON handlers
pkgs.python314Packages.json-handler-registry
Registry for JSON handlers
pkgs.python313Packages.azure-containerregistry
Microsoft Azure Container Registry client library for Python
pkgs.python314Packages.azure-containerregistry
Microsoft Azure Container Registry client library for Python
pkgs.python313Packages.azure-mgmt-containerregistry
Microsoft Azure Container Registry Client Library for Python
pkgs.python314Packages.azure-mgmt-containerregistry
Microsoft Azure Container Registry Client Library for Python
pkgs.python313Packages.google-cloud-artifact-registry
Google Cloud Artifact Registry API client library
pkgs.python314Packages.google-cloud-artifact-registry
Google Cloud Artifact Registry API client library
pkgs.haskellPackages.amazonka-servicecatalog-appregistry
Amazon Service Catalog App Registry SDK
-
nixos-unstable 2.0-unstable-2025-04-16
- nixpkgs-unstable 2.0-unstable-2025-04-16
- nixos-unstable-small 2.0-unstable-2025-04-16
pkgs.python313Packages.azure-mgmt-containerregistrytasks
Microsoft Azure Container Registry Tasks Client Library for Python
pkgs.python314Packages.azure-mgmt-containerregistrytasks
Microsoft Azure Container Registry Tasks Client Library for Python
pkgs.python313Packages.keyrings-google-artifactregistry-auth
Python package which allows you to configure keyring to interact with Python repositories stored in Artifact Registry
pkgs.python313Packages.mypy-boto3-servicecatalog-appregistry
Type annotations for boto3 servicecatalog-appregistry
-
nixos-unstable boto3-servicecatalog-appregistry-1.43.0
- nixpkgs-unstable boto3-servicecatalog-appregistry-1.43.0
- nixos-unstable-small boto3-servicecatalog-appregistry-1.43.0
pkgs.python314Packages.keyrings-google-artifactregistry-auth
Python package which allows you to configure keyring to interact with Python repositories stored in Artifact Registry
pkgs.python314Packages.mypy-boto3-servicecatalog-appregistry
Type annotations for boto3 servicecatalog-appregistry
-
nixos-unstable boto3-servicecatalog-appregistry-1.43.0
- nixpkgs-unstable boto3-servicecatalog-appregistry-1.43.0
- nixos-unstable-small boto3-servicecatalog-appregistry-1.43.0
pkgs.python313Packages.types-aiobotocore-servicecatalog-appregistry
Type annotations for aiobotocore servicecatalog-appregistry
Package maintainers
-
@JarvisCraft Petr Portnov <mrjarviscraft+nix@gmail.com>
-
@ryan4yin Ryan Yin <xiaoyin_c@qq.com>
-
@yurrriq Eric Bailey <eric@ericb.me>
-
@Defelo Defelo
-
@krav Kristoffer Thømt Ravneberg <kristoffer@microdisko.no>
-
@gabyx Gabriel Nützi <gnuetzi@gmail.com>
-
@leona-ya Leona Maroni <nix@leona.is>
-
@e1mo Nina Fromm <nixpkgs@e1mo.de>
-
@talyz Kim Lindberger <kim.lindberger@gmail.com>
-
@yayayayaka Yaya <github@uwu.is>
-
@danc86 Dan Callaghan <djc@djc.id.au>
-
@samuela Samuel Ainsworth <skainsworth@gmail.com>
-
@lovesegfault Bernardo Meurer <meurerbernardo@gmail.com>
-
@fabaff Fabian Affolter <mail@fabian-affolter.ch>