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) 3.0.1 -> 3.0.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)

v3.0.3

Compare Source

What's Changed

Full Changelog: koajs/koa@v3.0.2...v3.0.3

v3.0.2

Compare Source

What's Changed

New Contributors

Full Changelog: koajs/koa@v3.0.1...v3.0.2


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 is behind base branch, 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.

@renovate renovate bot requested a review from a team as a code owner October 21, 2025 15:51
@renovate renovate bot added the dependencies Pull requests that update a dependency file label Oct 21, 2025
@github-actions github-actions bot added pkg:instrumentation-koa pkg-status:unmaintained This package is unmaintained. Only bugfixes may be acceped until a new owner has been found. labels Oct 21, 2025
@renovate renovate bot force-pushed the renovate/npm-koa-vulnerability branch 6 times, most recently from 41d6594 to 5d7b7db Compare October 23, 2025 13:01
@renovate renovate bot force-pushed the renovate/npm-koa-vulnerability branch from 5d7b7db to 6b0b872 Compare October 27, 2025 09:24
@david-luna david-luna merged commit 835b997 into main Oct 28, 2025
23 checks passed
@david-luna david-luna deleted the renovate/npm-koa-vulnerability branch October 28, 2025 22:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file pkg:instrumentation-koa pkg-status:unmaintained This package is unmaintained. Only bugfixes may be acceped until a new owner has been found.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants