{"id":"GHSA-j5qp-p44g-2m49","aliases":[],"url":"https://o3.security/vulnerability/GHSA-j5qp-p44g-2m49","summary":"@asymmetric-effort/specifyjs: No redirect target validation in secureFetch","details":"## Finding\n\n**Location**: `core/src/shared/secure-fetch.ts`\n\n`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.\n\n## Status\n\n**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.","published":"2026-07-02T19:08:04Z","modified":"2026-09-10T03:51:11.564537342Z","cvss":null,"epss":null,"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"@asymmetric-effort/specifyjs","fixedVersion":"0.2.136"}],"fix":{"url":"https://github.com/asymmetric-effort/specifyjs/commit/25d1fb491d99479efdf501f5f75e0bb80c908f0a","label":"asymmetric-effort/specifyjs@25d1fb4"},"references":[{"type":"WEB","url":"https://github.com/asymmetric-effort/specifyjs/security/advisories/GHSA-j5qp-p44g-2m49"},{"type":"WEB","url":"https://github.com/asymmetric-effort/specifyjs/commit/25d1fb491d99479efdf501f5f75e0bb80c908f0a"},{"type":"PACKAGE","url":"https://github.com/asymmetric-effort/specifyjs"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-09-10T03:51:11.564537342Z"}}