Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Oct 21, 2025

This PR contains the following updates:

Package Change Age Confidence
koa (source) 2.16.2 -> 2.16.3 age confidence

GitHub Vulnerability Alerts

CVE-2025-62595

Summary:

A bypass was discovered in the Koa.js framework affecting its back redirect functionality. In certain circumstances, an attacker can manipulate the Referer header to force a user’s browser to navigate to an external, potentially malicious website. This occurs because the implementation incorrectly treats some specially crafted URLs as safe relative paths. Exploiting this vulnerability could allow attackers to perform phishing, social engineering, or other redirect-based attacks on users of affected applications.

This vulnerability affects the code referenced in GitHub Advisory GHSA-jgmv-j7ww-jx2x (which is tracked as CVE‑2025‑54420).

Details:

The patched code attempts to treat values that startWith('/') as safe relative paths and only perform origin checks for absolute URLs. However, protocol‑relative URLs (those beginning with //host) also start with '/' and therefore match the startsWith('/') branch. A protocol‑relative referrer such as //evil.com with trailing double-slash is treated by the implementation as a safe relative path, but browsers interpret Location: //evil.com as a redirect to https://evil.com (or http:// based on context).
This discrepancy allows an attacker to supply Referer: //evil.com and trigger an external redirect - bypassing the intended same‑origin protection.

Proof of concept (PoC):

Affected line of code: https://github.com/koajs/koa/blob/master/lib/response.js#L326
The problematic logic looks like:

3

Request with a protocol‑relative Referer:
curl -i -H "Referer: //haymiz.dev" http://127.0.0.1:3000/test

1

Vulnerable response will contain:
HTTP/1.1 302 Found
Location: //haymiz.dev

A browser receiving that Location header navigates to https://haymiz.dev (or http:// depending on context), resulting in an open redirect to an attacker‑controlled host:

2

Recommendation / Patch:

  • Do not treat //host as a safe relative path. Explicitly exclude protocol‑relative values from any relative‑path branch.
  • Normalize the Referer by resolving it with a base (e.g., new URL(rawRef, ctx.href)), then compare resolved.origin (scheme+host+port) to ctx.origin (or ctx.host plus scheme/port) before allowing the redirect.

Impact:

An attacker who can cause a victim to visit a specially crafted link (or inject a request with a controlled Referer) can cause the victim to be redirected to an attacker‑controlled domain. This can be used for phishing, social engineering, or to bypass some protection rules that rely on same‑origin navigation.


Release Notes

koajs/koa (koa)

v2.16.3

Compare Source

What's Changed

Full Changelog: koajs/koa@v2.16.2...v2.16.3


Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@github-actions github-actions bot added the chore Hmm... label Oct 21, 2025
@github-actions
Copy link

github-actions bot commented Oct 21, 2025

COMPARE TO master

Total Size Diff 📈 +9.64 KB

Diff by File
Name Diff
pnpm-lock.yaml 📈 +9.64 KB

@renovate renovate bot force-pushed the renovate/npm-koa-vulnerability branch from 246cf4d to 2e47d6c Compare October 28, 2025 07:12
@github-actions github-actions bot added size/xs and removed size/xs labels Oct 28, 2025
@renovate renovate bot force-pushed the renovate/npm-koa-vulnerability branch from 2e47d6c to 46e62ef Compare October 31, 2025 04:31
@github-actions github-actions bot added size/xs and removed size/xs labels Oct 31, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

1 participant