All vulnerabilities

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.

From laravel/framework's security advisory.

Workarounds

Do not pass request-derived arrays to signed route generation. Pass only explicitly selected, string-keyed parameters.

Workarounds as given by laravel/framework's security advisory.

Affected software

SoftwareAffected versions
LaravelServers and applications · github:laravel/framework
  • Every version before 12.72.0
  • From 13.0.0 before 13.41.0

References