Skip to content

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jul 29, 2025

This PR contains the following updates:

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

GitHub Vulnerability Alerts

CVE-2025-8129

Summary

In the latest version of Koa, the back method used for redirect operations adopts an insecure implementation, which uses the user-controllable referrer header as the redirect target.

Details

on the API document https://www.koajs.net/api/response#responseredirecturl-alt, we can see:

response.redirect(url, [alt])

Performs a [302] redirect to url.
The string "back" is specially provided for Referrer support, using alt or "/" when Referrer does not exist.

ctx.redirect('back');
ctx.redirect('back', '/index.html');
ctx.redirect('/login');
ctx.redirect('http://google.com');

however, the "back" method is insecure:

  back (alt) {
    const url = this.ctx.get('Referrer') || alt || '/'
    this.redirect(url)
  },

Referrer Header is User-Controlled.

PoC

there is a demo for POC:

const Koa = require('koa')
const serve = require('koa-static')
const Router = require('@​koa/router')
const path = require('path')

const app = new Koa()
const router = new Router()

// Serve static files from the public directory
app.use(serve(path.join(__dirname, 'public')))

// Define routes
router.get('/test', ctx => {
  ctx.redirect('back', '/index1.html')
})

router.get('/test2', ctx => {
  ctx.redirect('back')
})

router.get('/', ctx => {
  ctx.body = 'Welcome to the home page! Try accessing /test, /test2'
})

app.use(router.routes())
app.use(router.allowedMethods())

const port = 3000
app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`)
}) 

Proof Of Concept

GET /test HTTP/1.1
Host: 127.0.0.1:3000
Referer: http://www.baidu.com
Connection: close

GET /test2 HTTP/1.1
Host: 127.0.0.1:3000
Referer: http://www.baidu.com
Connection: close

image

image

Impact

https://learn.snyk.io/lesson/open-redirect/


Release Notes

koajs/koa (koa)

v2.16.2

Compare Source

What's Changed

Full Changelog: koajs/koa@v2.16.1...v2.16.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 added the dependencies Pull requests that update a dependency file label Jul 29, 2025
@renovate renovate bot requested a review from a team as a code owner July 29, 2025 00:26
@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 Jul 29, 2025
Copy link

codecov bot commented Jul 29, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.55%. Comparing base (ca26f63) to head (8dfcf03).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2961   +/-   ##
=======================================
  Coverage   89.55%   89.55%           
=======================================
  Files         193      193           
  Lines        9698     9698           
  Branches     2011     2011           
=======================================
  Hits         8685     8685           
  Misses       1013     1013           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@tlindhardt
Copy link

tlindhardt commented Jul 29, 2025

Its worth mentioning I have a pr open, though Im unsure how to get it merged, upgrading to 3.0.0. #2957 I would be happy to upgrade to 3.0.1.

@renovate renovate bot changed the title chore(deps): update dependency koa to v3 [security] chore(deps): update dependency koa to v2.16.2 [security] Jul 30, 2025
@renovate renovate bot force-pushed the renovate/npm-koa-vulnerability branch 6 times, most recently from 1af8d14 to a8894cb Compare August 6, 2025 14:03
@renovate renovate bot force-pushed the renovate/npm-koa-vulnerability branch 7 times, most recently from ae611eb to 68246e9 Compare August 13, 2025 16:46
@renovate renovate bot force-pushed the renovate/npm-koa-vulnerability branch 6 times, most recently from 89ca065 to 2f9ccd5 Compare August 19, 2025 08:18
@renovate renovate bot force-pushed the renovate/npm-koa-vulnerability branch 6 times, most recently from bef18ac to 05df96a Compare August 25, 2025 08:57
@renovate renovate bot force-pushed the renovate/npm-koa-vulnerability branch 10 times, most recently from af8861b to 5e03c07 Compare August 29, 2025 09:50
@renovate renovate bot force-pushed the renovate/npm-koa-vulnerability branch from 5e03c07 to 8dfcf03 Compare August 29, 2025 13:10
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