Skip to content

Comments

📦 chore(deps): Update dependency koa to v2.16.3 [SECURITY] (main)#176

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/main-npm-koa-vulnerability
Open

📦 chore(deps): Update dependency koa to v2.16.3 [SECURITY] (main)#176
renovate[bot] wants to merge 1 commit intomainfrom
renovate/main-npm-koa-vulnerability

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jul 1, 2025

This PR contains the following updates:

Package Change Age Confidence
koa (source) 2.16.22.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 - "" in timezone America/New_York, 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 added the dependencies label Jul 1, 2025
@renovate renovate bot changed the title 📦 chore(deps): Update dependency koa to v2.16.1 [SECURITY] (main) 📦 chore(deps): Update dependency koa to v3 [SECURITY] (main) Jul 28, 2025
@renovate renovate bot force-pushed the renovate/main-npm-koa-vulnerability branch 2 times, most recently from 6c85b44 to 936cd8d Compare July 30, 2025 16:56
@renovate renovate bot changed the title 📦 chore(deps): Update dependency koa to v3 [SECURITY] (main) 📦 chore(deps): Update dependency koa to v2.16.2 [SECURITY] (main) Jul 30, 2025
@renovate renovate bot changed the title 📦 chore(deps): Update dependency koa to v2.16.2 [SECURITY] (main) 📦 chore(deps): Update dependency koa to v2.16.2 [SECURITY] (main) - autoclosed Oct 15, 2025
@renovate renovate bot closed this Oct 15, 2025
@renovate renovate bot deleted the renovate/main-npm-koa-vulnerability branch October 15, 2025 20:43
@renovate renovate bot changed the title 📦 chore(deps): Update dependency koa to v2.16.2 [SECURITY] (main) - autoclosed 📦 chore(deps): Update dependency koa to v2.16.3 [SECURITY] (main) Oct 22, 2025
@renovate renovate bot reopened this Oct 22, 2025
@renovate renovate bot force-pushed the renovate/main-npm-koa-vulnerability branch 2 times, most recently from 936cd8d to b1adfb9 Compare October 22, 2025 00:44
@renovate renovate bot force-pushed the renovate/main-npm-koa-vulnerability branch from b1adfb9 to 1a69399 Compare February 12, 2026 18:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants