GIVE YOUR AGENT THE EVIDENCE

Set up in your agent.

One prompt to get started. Paste it into your coding agent to connect cve.new through MCP and bring vulnerability context into your workflow.

Your agent needs remote MCP support and access to https://cve.new/mcp.

Read the setup guide

GIVE YOUR AGENT THE EVIDENCE

Investigate in your agent.

Turn this advisory into a focused investigation. Ask your agent to check your project’s versions, explain the evidence, and suggest a compatible fix.

Your agent needs remote MCP support and access to https://cve.new/mcp.

Read the setup guide

All vulnerabilities
GHSA-mhf7-xp6r-6qrcmedium6.5

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

No CVE assignedCheck your stack

The advisory, in context

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).

Affected packages

Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.

Ecosystem versions

From 4.3.0 before 4.4.8

Fixed in 4.4.8

14 explicitly 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

View affected-version evidence
{
  "ranges": [
    {
      "events": [
        {
          "introduced": "4.3.0"
        },
        {
          "fixed": "4.4.8"
        }
      ],
      "type": "ECOSYSTEM"
    }
  ],
  "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"
  ]
}

References