CVE-2025-8129: KoaJS Koa HTTP Header response.js back redirect

Published Jul 25, 2025
·
Updated

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:

- https://github.com/koajs/koa/blob/master/lib/response.js#L322 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/

Other sources

Duplicate Advisory This advisory has been withdrawn because it is a duplicate of GHSA-jgmv-j7ww-jx2x. This link is maintained to preserve external references.

Original Description A vulnerability, which was classified as problematic, was found in KoaJS Koa up to 3.0.0. Affected is the function back in the library lib/response.js of the component HTTP Header Handler. The manipulation of the argument Referrer leads to open redirect. It is possible to launch the attack remotely. The exploit has been disclosed to the public and may be used.

GitHub

Affected Software

14 affected componentsFixes available
Koajs Koa<=3.0.0
npm/koa<3.0.1
3.0.1
npm/koa>=3.0.0-alpha.0<3.0.1
3.0.1
npm/koa>=2.0.0<2.16.2
2.16.2
Koajs Koa Node.js>=2.0.0<2.16.2
Koajs Koa Node.js=3.0.0
Koajs Koa Node.js=3.0.0-alpha0
Koajs Koa Node.js=3.0.0-alpha1
Koajs Koa Node.js=3.0.0-alpha2
Koajs Koa Node.js=3.0.0-alpha3
Koajs Koa Node.js=3.0.0-alpha4
Koajs Koa Node.js=3.0.0-alpha5
IBM Planning Analytics Local - IBM Planning Analytics Workspace<=2.1.0 - 2.1.13
IBM Planning Analytics Local - IBM Planning Analytics Workspace<=2.0.0 - 2.0.106

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/koa to a version that resolves this vulnerability.

    Fixed in 3.0.1
  2. Upgrade

    Upgrade npm/koa to a version that resolves this vulnerability.

    Fixed in 2.16.2
  3. Upgrade

    Upgrade KoaJS Koa to a version that resolves this vulnerability.

    Fixed in 3.0.0
  4. Configuration

    Avoid calling ctx.redirect('back') / ctx.redirect('back', alt) in routes. Do not use the user-controllable Referrer header as a redirect target; redirect to a known, fixed path such as '/login' or another application-defined URL.

    Koa response.redirect(url, [alt]) back redirect implementation (Referrer header usage) = Use a fixed redirect target instead of relying on user-controlled Referrer/back
  5. Compensating control

    Restrict open-redirect impact by validating redirect destinations server-side: allow only internal, expected paths (e.g., '/login', '/index.html') and block/ignore user-supplied Referrer-based redirect targets.

Event History

Jul 25, 2025
CVE Published
via MITRE·04:02 AM
Data Sourced
via MITRE·04:02 AM
DescriptionSeverityWeakness
Data Sourced
via NVD·05:15 AM
DescriptionSeverityWeakness
Data Sourced
via NVD·05:15 AM
RemedyAffected Software
Advisory Published
via GitHub·06:30 AM
Data Sourced
via GitHub·06:30 AM
DescriptionSeverityWeaknessAffected Software
Jul 29, 2025
Withdrawn
via GitHub·07:06 PM
Advisory Published
via GitHub·07:11 PM
Updated
via GitHub·07:11 PM
DescriptionAffected Software
Sep 30, 2025
Data Sourced
via IBM·12:00 AM
DescriptionAffected Software
Jun 18, 58473
Event
via NVD·05:21 AM

Parent advisories

This vulnerability appears in the following advisories.

Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2025-8129?

CVE-2025-8129 is classified as a problematic vulnerability.

2

What type of vulnerability is CVE-2025-8129?

CVE-2025-8129 is an open redirect vulnerability found in the KoaJS Koa library.

3

How do I fix CVE-2025-8129?

To fix CVE-2025-8129, update KoaJS Koa to a version beyond 3.0.0.

4

What effect does CVE-2025-8129 have on applications?

CVE-2025-8129 allows attackers to manipulate the Referrer argument leading to potential redirection attacks.

5

Which versions of KoaJS Koa are affected by CVE-2025-8129?

CVE-2025-8129 affects KoaJS Koa versions up to and including 3.0.0.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203