asymmetric-effort-specifyjs

Ecosystem: npm

Downloads: 5.8 K

Vulnerabilities from the last (months)
  • 0CriticalAffects 0 versions
  • 1HighAffects 1 version
  • 0MediumAffects 0 versions
  • 6ModerateAffects 6 versions
  • 0LowAffects 0 versions
Severity distribution (all time)
7vulnerabilities
  • Critical0 (0.0%)
  • High1 (14.3%)
  • Medium0 (0.0%)
  • Moderate6 (85.7%)
  • Low0 (0.0%)

Monthly breakdown

  • 7 vulnerabilities
    • Critical: 0
    • High: 1
    • Medium: 0
    • Moderate: 6
    • Low: 0

Vulnerabilities (7)

Known vulnerabilities affecting asymmetric-effort-specifyjs, based on data from OSV.

Vulnerabilities affecting asymmetric-effort-specifyjs
IDSeveritySummaryAffected versionsPublishedSource
GHSA-2944-57xv-2682Moderate@asymmetric-effort/specifyjs: `data:` URI allowed without size restriction## Finding **Location**: `core/src/shared/secure-fetch.ts:33-35` `data:` URIs were allowed without any restriction. While `data:` URIs don't make network requests, they can be used for memory exhaustion via very large data URIs. ## Status **Fixed in v0.2.136** — `data:` URIs are now limited to 1MB. URIs exceeding this limit throw an error.
  • < 0.2.136
GitHub (opens in a new tab)
GHSA-5c7w-4wm3-85vwModerate@asymmetric-effort/specifyjs: GraphQL gql tag allows metacharacter injection## Finding **Location**: `core/src/client/graphql.ts:66-80` The `gql` template tag function warned about interpolated values containing GraphQL metacharacters (`{}():`) but still concatenated them into the query string, enabling potential GraphQL injection. ## Status **Fixed in v0.2.136** — The `gql` function now throws an error when metacharacters are detected in interpolated values, forcing developers to use the `variables` parameter.
  • < 0.2.136
GitHub (opens in a new tab)
GHSA-8882-frvv-92w4High@asymmetric-effort/specifyjs: URL parse failure silently allows request## Finding **Location**: `core/src/shared/secure-fetch.ts:42-45` When `new URL()` throws a parse error, the `assertSecureUrl` function returned without throwing, silently allowing the request to proceed without HTTPS validation. ## Status **Fixed in v0.2.136** — The catch block now throws an error instead of silently returning.
  • < 0.2.136
GitHub (opens in a new tab)
GHSA-93q6-wwjh-jc6hModerate@asymmetric-effort/specifyjs: CSS expression sanitization is bypassable in renderToString## Finding **Location**: `core/src/server/render-to-string.ts:307-311` CSS value sanitization stripped `expression(` and `url(javascript:` using simple regex, but could be bypassed with CSS unicode escapes (`\65xpression(`), null bytes, or CSS comments (`exp/**/ression(`). **Mitigating Factor**: These CSS injection vectors only work in legacy browsers (IE6-IE10). SpecifyJS targets modern browsers. ## Status **Fixed in v0.2.136** — CSS sanitization now normalizes unicode escapes and strips CSS comments before pattern matching. Also checks for `behavior:`, `-moz-binding`, and `-o-link` patt
  • < 0.2.136
GitHub (opens in a new tab)
GHSA-j5qp-p44g-2m49Moderate@asymmetric-effort/specifyjs: No redirect target validation in secureFetch## Finding **Location**: `core/src/shared/secure-fetch.ts` `assertSecureUrl` validated only the initial request URL. The `fetch()` API follows redirects by default (up to 20 hops). A request to a valid `https://` URL could redirect to `http://internal-service/` or other unvalidated destinations. ## Status **Fixed in v0.2.136** — `secureFetch` now defaults to `redirect: 'error'` which rejects any redirect. Callers can override with `{ redirect: 'follow' }` if they trust the target.
  • < 0.2.136
GitHub (opens in a new tab)
GHSA-qcr8-x557-7cp3Moderate@asymmetric-effort/specifyjs: Production console warnings may leak internal framework state## Finding **Location**: `core/src/core/scheduler.ts:23`, `core/src/hooks/dispatcher.ts:100`, `core/src/client/graphql.ts:71` Several `console.warn` calls are not gated behind `__DEV__` and will fire in production builds, potentially exposing internal framework state such as queue sizes, component names, and query fragments to users viewing the browser console. ## Status **Open** — These warnings serve as development-time diagnostics. They do not expose credentials or PII, but may reveal internal architecture details. ## Recommendation Gate all development-time `console.warn` and `consol
  • < 0.2.140
GitHub (opens in a new tab)
GHSA-xw57-23p8-9wc5Moderate@asymmetric-effort/specifyjs: Localhost bypass incomplete (IPv6, 0.0.0.0, 127.x range)## Finding **Location**: `core/src/shared/secure-fetch.ts:52-54` The localhost exception allowed `localhost` and `127.0.0.1` but did not cover `0.0.0.0`, `[::1]` (IPv6 localhost), or the full `127.0.0.0/8` loopback range. ## Status **Fixed in v0.2.136** — Localhost detection now covers `localhost`, `127.0.0.1`, `[::1]`, `0.0.0.0`, and the full `127.x.x.x` range.
  • < 0.2.136
GitHub (opens in a new tab)
  • GHSA-2944-57xv-2682Moderate
    @asymmetric-effort/specifyjs: `data:` URI allowed without size restriction
    • < 0.2.136

    ## Finding **Location**: `core/src/shared/secure-fetch.ts:33-35` `data:` URIs were allowed without any restriction. While `data:` URIs don't make network requests, they can be used for memory exhaustion via very large data URIs. ## Status **Fixed in v0.2.136** — `data:` URIs are now limited to 1MB. URIs exceeding this limit throw an error.

  • GHSA-5c7w-4wm3-85vwModerate
    @asymmetric-effort/specifyjs: GraphQL gql tag allows metacharacter injection
    • < 0.2.136

    ## Finding **Location**: `core/src/client/graphql.ts:66-80` The `gql` template tag function warned about interpolated values containing GraphQL metacharacters (`{}():`) but still concatenated them into the query string, enabling potential GraphQL injection. ## Status **Fixed in v0.2.136** — The `gql` function now throws an error when metacharacters are detected in interpolated values, forcing developers to use the `variables` parameter.

  • GHSA-8882-frvv-92w4High
    @asymmetric-effort/specifyjs: URL parse failure silently allows request
    • < 0.2.136

    ## Finding **Location**: `core/src/shared/secure-fetch.ts:42-45` When `new URL()` throws a parse error, the `assertSecureUrl` function returned without throwing, silently allowing the request to proceed without HTTPS validation. ## Status **Fixed in v0.2.136** — The catch block now throws an error instead of silently returning.

    CVE: CVE-2026-50288

  • GHSA-93q6-wwjh-jc6hModerate
    @asymmetric-effort/specifyjs: CSS expression sanitization is bypassable in renderToString
    • < 0.2.136

    ## Finding **Location**: `core/src/server/render-to-string.ts:307-311` CSS value sanitization stripped `expression(` and `url(javascript:` using simple regex, but could be bypassed with CSS unicode escapes (`\65xpression(`), null bytes, or CSS comments (`exp/**/ression(`). **Mitigating Factor**: These CSS injection vectors only work in legacy browsers (IE6-IE10). SpecifyJS targets modern browsers. ## Status **Fixed in v0.2.136** — CSS sanitization now normalizes unicode escapes and strips CSS comments before pattern matching. Also checks for `behavior:`, `-moz-binding`, and `-o-link` patt

    CVE: CVE-2026-50290

  • GHSA-j5qp-p44g-2m49Moderate
    @asymmetric-effort/specifyjs: No redirect target validation in secureFetch
    • < 0.2.136

    ## Finding **Location**: `core/src/shared/secure-fetch.ts` `assertSecureUrl` validated only the initial request URL. The `fetch()` API follows redirects by default (up to 20 hops). A request to a valid `https://` URL could redirect to `http://internal-service/` or other unvalidated destinations. ## Status **Fixed in v0.2.136** — `secureFetch` now defaults to `redirect: 'error'` which rejects any redirect. Callers can override with `{ redirect: 'follow' }` if they trust the target.

  • GHSA-qcr8-x557-7cp3Moderate
    @asymmetric-effort/specifyjs: Production console warnings may leak internal framework state
    • < 0.2.140

    ## Finding **Location**: `core/src/core/scheduler.ts:23`, `core/src/hooks/dispatcher.ts:100`, `core/src/client/graphql.ts:71` Several `console.warn` calls are not gated behind `__DEV__` and will fire in production builds, potentially exposing internal framework state such as queue sizes, component names, and query fragments to users viewing the browser console. ## Status **Open** — These warnings serve as development-time diagnostics. They do not expose credentials or PII, but may reveal internal architecture details. ## Recommendation Gate all development-time `console.warn` and `consol

  • GHSA-xw57-23p8-9wc5Moderate
    @asymmetric-effort/specifyjs: Localhost bypass incomplete (IPv6, 0.0.0.0, 127.x range)
    • < 0.2.136

    ## Finding **Location**: `core/src/shared/secure-fetch.ts:52-54` The localhost exception allowed `localhost` and `127.0.0.1` but did not cover `0.0.0.0`, `[::1]` (IPv6 localhost), or the full `127.0.0.0/8` loopback range. ## Status **Fixed in v0.2.136** — Localhost detection now covers `localhost`, `127.0.0.1`, `[::1]`, `0.0.0.0`, and the full `127.x.x.x` range.

Showing 1-7 of 7 vulnerabilities