Executive brief
SolidInvoice is an open-source invoicing platform. A flaw in the DataGrid component allows authenticated users to submit specially crafted PHP serialized data that the application deserializes without proper validation. An attacker could exploit this to execute arbitrary code or access sensitive data stored on the server, depending on available vulnerabilities in the application's dependencies.
Technical details
The vulnerability is a PHP Object Injection (CWE-502: Deserialization of Untrusted Data) in the DataGrid LiveComponent's context prop handler. The `hydrateContext()` method calls `unserialize()` on client-supplied input after receiving it via a writable LiveComponent prop, even though it restricts instantiation to the `Ulid` class. An authenticated attacker can craft a serialized PHP payload and submit it through a LiveComponent update request to trigger deserialization. Depending on gadget chains present in the application's dependency graph, this could lead to arbitrary code execution or unauthorized file system access. The fix, released in version 3.0.1, replaces the serialize/unserialize pair with JSON encoding.
Affected products
- SolidInvoice SolidInvoice < 3.0.1
Timeline
- 2026-09-04: disclosed
- 2026-06-23: patched