Skip to content
Heist/ feed
Back to feed
MediumFix available

Livewire: Authorization bypass in #[Authorize] via reordered parameter keys and #[Json] execution order

Type: advisorySources: OSV

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

Products
livewire/livewire
Affected versions
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
Fixed versions
4.4.8
CVEs
Not specified
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 03:12 UTC · Revision 1

Source evidence

Livewire: Authorization bypass in #[Authorize] via reordered parameter keys and #[Json] execution order

core-osv · Original source

Published 23 Oct 2026, 20:51 UTC

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

osv:GHSA-mhf7-xp6r-6qrc

livewire/livewire

Fixed versions: 4.4.8

Complete source record
{
  "id": "e24615b449b7cfc8b6849c806a2d141e4250fc82e51ed5905559538a65622f24",
  "url": "https://osv.dev/vulnerability/GHSA-mhf7-xp6r-6qrc",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Livewire: Authorization bypass in #[Authorize] via reordered parameter keys and #[Json] execution order",
    "summary": "### 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",
    "evidence": "osv:GHSA-mhf7-xp6r-6qrc",
    "products": [
      {
        "name": {
          "value": "livewire/livewire",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "4.4.8",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "v4.3.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.3.1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.3.2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.3.3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.3.4",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.3.5",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.4.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.4.1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.4.2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.4.3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.4.4",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.4.5",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.4.6",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "v4.4.7",
            "evidence": "/affected/0/versions"
          }
        ]
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "GHSA-mhf7-xp6r-6qrc",
      "aliases": [
        "GHSA-mhf7-xp6r-6qrc"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "4.3.0"
                },
                {
                  "fixed": "4.4.8"
                }
              ]
            }
          ],
          "package": {
            "name": "livewire/livewire",
            "purl": "pkg:composer/livewire/livewire",
            "ecosystem": "Packagist"
          },
          "versions": [
            "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"
          }
        }
      ],
      "modified": "2026-10-23T21:00:04.354707498Z",
      "provider": "osv",
      "references": [
        "https://github.com/livewire/livewire/security/advisories/GHSA-mhf7-xp6r-6qrc",
        "https://github.com/livewire/livewire/commit/822a4fa9b1e1123691133a2e2eb379a3dab11191",
        "https://github.com/livewire/livewire",
        "https://github.com/livewire/livewire/releases/tag/v4.4.8"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-863"
        ],
        "severity": "MODERATE",
        "github_reviewed": true,
        "nvd_published_at": null,
        "github_reviewed_at": "2026-10-23T20:51:30Z"
      }
    },
    "related_cves": [],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 427021,
  "published_at": "2026-10-23T20:51:30+00:00"
}