VYPR
Critical severityCISA KEVNVD Advisory· Published Jul 17, 2025· Updated Mar 23, 2026

Livewire vulnerable to remote command execution during property update hydration

CVE-2025-54068

Description

Livewire is a full-stack framework for Laravel. In Livewire v3 up to and including v3.6.3, a vulnerability allows unauthenticated attackers to achieve remote command execution in specific scenarios. The issue stems from how certain component property updates are hydrated. This vulnerability is unique to Livewire v3 and does not affect prior major versions. Exploitation requires a component to be mounted and configured in a particular way, but does not require authentication or user interaction. This issue has been patched in Livewire v3.6.4. All users are strongly encouraged to upgrade to this version or later as soon as possible. No known workarounds are available.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
livewire/livewirePackagist
>= 3.0.0-beta.1, < 3.6.43.6.4

Affected products

1
  • livewire/livewirev5
    Range: >= 3.0.0-beta.1, < 3.6.4

Patches

1
ef04be759da4

Fix property update hydration

https://github.com/livewire/livewireJosh HanleyJul 17, 2025via ghsa
1 file changed · +19 1
  • src/Mechanisms/HandleComponents/HandleComponents.php+19 1 modified
    @@ -216,6 +216,24 @@ protected function hydrate($valueOrTuple, $context, $path)
             });
         }
     
    +    protected function hydratePropertyUpdate($valueOrTuple, $context, $path, $raw)
    +    {
    +        if (! Utils::isSyntheticTuple($value = $tuple = $valueOrTuple)) return $value;
    +
    +        [$value, $meta] = $tuple;
    +
    +        // Nested properties get set as `__rm__` when they are removed. We don't want to hydrate these.
    +        if ($this->isRemoval($value) && str($path)->contains('.')) {
    +            return $value;
    +        }
    +
    +        $synth = $this->propertySynth($meta['s'], $context, $path);
    +
    +        return $synth->hydrate($value, $meta, function ($name, $child) use ($context, $path, $raw) {
    +            return $this->hydrateForUpdate($raw, "{$path}.{$name}", $child, $context);
    +        });
    +    }
    +
         protected function render($component, $default = null)
         {
             if ($html = store($component)->get('skipRender', false)) {
    @@ -339,7 +357,7 @@ protected function hydrateForUpdate($raw, $path, $value, $context)
     
             // If we have meta data already for this property, let's use that to get a synth...
             if ($meta) {
    -            return $this->hydrate([$value, $meta], $context, $path);
    +            return $this->hydratePropertyUpdate([$value, $meta], $context, $path, $raw);
             }
     
             // If we don't, let's check to see if it's a typed property and fetch the synth that way...
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

7

News mentions

0

No linked articles in our index yet.