GHSA-mhf7-xp6r-6qrc

Suggest an improvement
Source
https://github.com/advisories/GHSA-mhf7-xp6r-6qrc
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-mhf7-xp6r-6qrc/GHSA-mhf7-xp6r-6qrc.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-mhf7-xp6r-6qrc
Published
2026-10-23T20:51:30Z
Modified
2026-10-23T21:00:04Z
Severity
  • 6.5 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N CVSS Calculator
Summary
Livewire: Authorization bypass in #[Authorize] via reordered parameter keys and #[Json] execution order
Details

Impact

Three issues allowed actions protected by the #[Authorize] attribute to run against records the current user is not authorized for:

  1. Out-of-order parameter keys on actions. #[Authorize] resolved a model parameter by its array key, while the action itself received parameters positionally. A request sending params as an object with reordered integer keys (e.g. {"1": 2, "0": 1}) could pass authorization with a record the user owns while the action received a different record. With #[Authorize('delete', 'comment')] on deleteComment(Comment $comment), a user could delete another user's comment.
  2. The same issue on event listeners. Methods using both #[On] and #[Authorize] with a model parameter were affected in the same way through the __dispatch call.
  3. #[Json] methods ran before authorization. When a method had both #[Json] and #[Authorize], the method body executed before the authorization check. The response was still a 403, but any side effects (such as database writes) had already happened.

Only applications using the #[Authorize] attribute are affected: on methods that take model parameters (issues 1 and 2), or on #[Json] methods (issue 3). Authorization performed inside the method (e.g. $this->authorize(...)) is not affected. Livewire 3.x is not affected.

Patches

Fixed in v4.4.8. Call and event parameters must now be a list or use named (string) keys, otherwise the request is rejected, and #[Json] methods are authorized before they run.

Workarounds

Upgrade to v4.4.8. If you can't upgrade right away, call $this->authorize(...) inside affected methods instead of relying on the #[Authorize] attribute.

Credits

Reported by Yousef Aman (@yousef-aman).

Database specific
{
    "cwe_ids":  [
        "CWE-863"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-10-23T20:51:30Z",
    "nvd_published_at":  null,
    "severity":  "MODERATE"
}
References

Affected packages

Packagist / livewire/livewire

Package

Name
livewire/livewire
Purl
pkg:composer/livewire/livewire

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.3.0
Fixed
4.4.8

Affected versions

v4.*
v4.3.0
v4.3.1
v4.3.2
v4.3.3
v4.3.4
v4.3.5
v4.4.0
v4.4.1
v4.4.2
v4.4.3
v4.4.4
v4.4.5
v4.4.6
v4.4.7

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-mhf7-xp6r-6qrc/GHSA-mhf7-xp6r-6qrc.json"