Livewire remote command execution through unmarshaling#2109
Open
carlospolop wants to merge 1 commit intomasterfrom
Open
Livewire remote command execution through unmarshaling#2109carlospolop wants to merge 1 commit intomasterfrom
carlospolop wants to merge 1 commit intomasterfrom
Conversation
Collaborator
Author
🔗 Additional ContextOriginal Blog Post: https://www.synacktiv.com/en/publications/livewire-remote-command-execution-through-unmarshaling.html Content Categories: Based on the analysis, this content was categorized under "Pentesting Web -> Deserialization -> Livewire Hydration Synthesizer Abuse (update existing Livewire entry / add subsection for Livewire v3 synthetic tuples + CVE-2025-54068)". Repository Maintenance:
Review Notes:
Bot Version: HackTricks News Bot v1.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 Automated Content Update
This PR was automatically generated by the HackTricks News Bot based on a technical blog post.
📝 Source Information
🎯 Content Summary
Title: Livewire: remote command execution through unmarshaling (Synacktiv, 2025-12-23).
Executive technical overview
The post dissects Livewire v3’s hydration/dehydration mechanism and shows two RCE paths:
1) Design flaw / attack surface: if an attacker knows the Laravel
APP_KEY, they can forge Livewire snapshot checksums and inject synthetic tuples to force arbitrary PHP object instantiation during hydration, then chain gad...🔧 Technical Details
Trick 1 — Turn Livewire “synthetic tuples” into an object-instantiation primitive.
Any payload shaped like
[value, meta]wheremetacontains{"s": "KEY"}is treated as a synthesizer tuple. Livewire chooses a synth frommeta['s']and calls itshydrate(), often instantiating objects. If an attacker can influencemeta(directly, or indirectly via a bug), synths likeCollectionSynth(clctn) can instantiate arbitrary classes usingnew $meta['class']($value)after recursively hydrating children, providing a powerful construction primitive for PHP gadget chains.Trick 2 — Execute code by forcing a typed string cast that triggers
__toString().Instantiate
GuzzleHttp\Psr7\FnStream(array constructor) with{"__toString":"<function>"}soFnStream::__toString()calls the chosen function. Then pa...🤖 Agent Actions
I’m mapping the existing Laravel and deserialization pages first, then I’ll compare several candidate files to avoid putting Livewire details in the wrong section.
There is already a dedicated Livewire page under web deserialization, so I’m checking whether the new Synacktiv material is already covered there or if it needs a compact extension.
The dedicated page already contains most of the Synacktiv chain, so I’m now looking for concrete gaps instead of duplicating the same technique under Laravel or generic PHP deserialization.
I’ve narrowed it to one existing page. I’m patching only the Livewire deserialization entry to add the missing exploitation shortcut and patch-analysis details, not duplicating them elsewhere.
The edit is in place. I’m reading the updated page and diff now to make sure the additions stay concise, technically accurate, and limited to this single file.
Updated livewire-hydration-synthesizer-abuse.md.
The page already covered most of the Synacktiv research, so I kept the change scoped to that single existing file and only added the missing technical value from the blog: the Filament pre-auth
formshortcut, thehydratePropertyUpdate()patch-analysis detail, the?v=HASHfingerprinting variant, corrected the affected-version wording, and fixed the Synacktiv reference URL while adding the patch commit reference.Verified with
git diffand a reread of the edited section; no duplicate content was added to other Laravel/PHP pages.This PR was automatically created by the HackTricks Feed Bot. Please review the changes carefully before merging.