Live › vulnerability › GHSA-mhf7-xp6r-6qrc
Go to dashboardLivewire's #[Authorize] attribute checked the wrong record when request parameters were sent with reordered keys, and #[Json] methods ran their body before the authorization check. An authenticated user can make a Livewire action operate on a record they do not own, such as deleting another user's comment, and side effects of #[Json] methods happen even when the response is a 403.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-10-23 20:59 UTC. All times on this page are UTC.
| Product | Ecosystem | Affected | Fixed in |
|---|
| livewire/livewire | composer | >= 4.3.0, < 4.4.8 | 4.4.8 |
composer show livewire/livewire and confirm the version is >= 4.3.0 and < 4.4.8#[Authorize on methods that take model parameters or on #[Json] methods4.4.8 or laterEach row is the first time that source carried this signal. The analyst’s rows are its own findings.
Three issues allowed actions protected by the #[Authorize] attribute to run against records the current user is not authorized for:
#[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.#[On] and #[Authorize] with a model parameter were affected in the same way through the __dispatch call.#[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.
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.
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.
Reported by Yousef Aman (@yousef-aman).
This page as .md · .json · in your agent: get_signal("GHSA-mhf7-xp6r-6qrc")
GitHub Advisory Database, CC-BY 4.0. Posts quoted belong to their authors.