Skip to content
Heist/ feed
CriticalFix available

@a2ui/web_core: `openUrl` permits `javascript:` URI execution via agent-supplied button actions

Type: advisorySource: OSV1 source record

### Summary The `openUrl` function in `@a2ui/web_core` passes an agent-controlled URL directly to `window.open()` without validating the URI scheme. A malicious agent can supply a `javascript:` URI as the `url` argument of a `Button` component's `functionCall` action. When the user clicks the rendered button, arbitrary JavaScript executes in the victim application's browser origin, constituting a stored/reflected XSS. No non-default configuration is required; the Basic Catalog is enabled by default. ### Details The vulnerability exists in the `openUrl` function implementation within the Basic Catalog of `@a2ui/web_core` (commit `23a003248abbf59da6c376ea64ace91d82d209ff`). **Sink** — `renderers/web_core/src/v0_9/basic_catalog/functions/basic_functions.ts:428-430`: ```ts export const OpenUrlImplementation = createFunctionImplementation(OpenUrlApi, args => { if (args.url && typeof window !== 'undefined' && window.open) { window.open(args.url, '_blank'); } }); ``` `window.open` is called unconditionally with the agent-supplied `args.url` value. No scheme allowlist or blocklist is applied. **Insufficient schema validation** — `renderers/web_core/src/v0_9/basic_catalog/functions/basic_functions_api.ts:453-458`: ```ts export const OpenUrlApi = { name: 'openUrl' as const, returnType: 'void' as const, schema: z.object({ url: z.preprocess(v => (v === undefined ? undefined : String(v)), z.string()), }), }; ``` The Zod schema only requires a `string`; `javascript:` URIs pass validation w

Announced Source revision 1
Original source ↗

GHSA-72qq-p3r5-f7wq

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:GHSA-72qq-p3r5-f7wq

@a2ui/web_core

Source reference: /affected/0/package/name

Affected versions
Not stated in this record
Fixed versions
0.10.2

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "SEMVER",
        "events": [
          {
            "introduced": "0.9.0"
          },
          {
            "fixed": "0.10.2"
          }
        ]
      }
    ],
    "package": {
      "name": "@a2ui/web_core",
      "purl": "pkg:npm/%40a2ui/web_core",
      "ecosystem": "npm"
    },
    "database_specific": {
      "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-72qq-p3r5-f7wq/GHSA-72qq-p3r5-f7wq.json"
    }
  }
]
Related CVEs
CVE-2026-10032

Source reference: /aliases

Publisher severity

critical

Source reference: /database_specific/severity

Event
#72759 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement