Skip to content

fix(deps): update dependency koa to v2.16.2 [security]#4366

Merged
czy88840616 merged 1 commit intomainfrom
renovate/npm-koa-vulnerability
Aug 2, 2025
Merged

fix(deps): update dependency koa to v2.16.2 [security]#4366
czy88840616 merged 1 commit intomainfrom
renovate/npm-koa-vulnerability

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Jul 28, 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 becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates 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 pr: dependencies Pull requests that update a dependency file label Jul 28, 2025
@renovate renovate Bot force-pushed the renovate/npm-koa-vulnerability branch from 38d3042 to 548580a Compare July 30, 2025 17:54
@renovate renovate Bot changed the title fix(deps): update dependency koa to v3 [security] fix(deps): update dependency koa to v2.16.2 [security] Jul 30, 2025
@czy88840616 czy88840616 merged commit 7a02e15 into main Aug 2, 2025
7 checks passed
@czy88840616 czy88840616 deleted the renovate/npm-koa-vulnerability branch August 2, 2025 15:41
czy88840616 pushed a commit that referenced this pull request Aug 16, 2025
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

(cherry picked from commit 7a02e15)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr: dependencies Pull requests that update a dependency file

Development

Successfully merging this pull request may close these issues.

1 participant