Servers and applications
GHSA-6rv8-qj5v-p8ch
Temporary signed URL expiration bypass via unencoded numeric-keyed route parameters
- Severity
- Medium 4.8
- Published
- 11 Nov 2026
- Last changed
- 11 Nov 2026
- Added to UpHeron
- 11 Nov 2026
- Fixed in
- 12.72.0, 13.41.0
- Attack
- Over the network · Only under certain conditions · No login needed · No user action needed
- Attacker can
- Read some data · Change some data
- CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N- Sources
- Project advisories (GitHub)
Description
When an application passes attacker-influenced, numeric-keyed parameters (for example a request's query array) to temporarySignedRoute() or signedRoute(), and those parameters do not fill a route placeholder, Laravel appended their values to the query string without URL encoding. An attacker can use this to add a second expires field to the signed URL. The signature covers that field, but request parsing reads it as the authoritative value, so the signed URL is treated as never expiring. Exploitation requires the application to forward such input into signed URL generation.
Workarounds
Do not pass request-derived arrays to signed route generation. Pass only explicitly selected, string-keyed parameters.
Affected software
| Software | Affected versions |
|---|---|
LaravelServers and applications · github:laravel/framework |
|
References
- GitHub Advisory Database https://github.com/advisories/GHSA-6rv8-qj5v-p8ch
- github.com https://github.com/laravel/framework/security/advisories/GHSA-6rv8-qj5v-p8ch