TL;DR: CVE-2026-45034 gives attackers remote code execution through a bypass of PhpSpreadsheet’s wrapper protection, with public proof-of-concept code and affected versions through 1.30.4, according to Orca Security. The failure is not just a library bug but a reminder that user-controlled filenames can turn file-import features into server compromise paths.
Editorial analysis by NHI Mgmt Group, based on content published by Orca Security: “Critical PhpSpreadsheet RCE Patch Bypass Puts Millions at Risk”.
Key questions
Q: What breaks when a spreadsheet import library trusts parsed file paths?
A: A parser edge case can bypass wrapper detection, letting attacker-controlled filenames reach dangerous stream handling.
Q: Why do user-controlled filenames create server compromise risk in import features?
A: Because filenames can influence wrapper resolution, archive handling, and downstream parsing before identity or authorization checks matter.
Q: How do teams know whether wrapper-bypass remediation is actually working?
A: They should confirm the patched library version, test the application's own filename filters with wrapper-like payloads, and verify that no downstream code reinterprets the same input as a stream or archive.
Practitioner guidance
- Patch PhpSpreadsheet to 1.30.5 immediately Upgrade every affected deployment to the fixed release and confirm no service still runs 1.30.4 or earlier.
- Block user-controlled wrapper syntax at the application boundary Replace parse_url-based wrapper checks with explicit string containment logic and deny filenames containing scheme-like wrapper patterns before they reach spreadsheet parsing code.
- Audit spreadsheet import paths for deserialisation side effects Review any code that handles phar archives, metadata access, or chained file-processing steps after import.
Bottom line: The vulnerability is a wrapper-bypass problem that converts a spreadsheet import path into a possible RCE or file-read path.
Explore further
View Full Forum → | NHI Foundation Course → | Our Services → | Read the full analysis →
Wrapper validation is not the same as runtime containment: This vulnerability exists because the application assumes parse_url() will reliably classify dangerous wrapper syntax. That assumption fails when the runtime still recognises the payload even after the validator returns false. The implication is that input validation for file paths must be judged against the interpreter's own parsing rules, not against a single library helper.
A question worth separating out:
Q: What should organisations do when a library patch fixes only part of a file-handling flaw?
A: Treat the first patch as a starting point, not closure. Re-test the affected code path against alternate syntax, remove any custom validation that relies on ambiguous parsing helpers, and verify that runtime behaviour no longer matches the bypass condition.
👉 Read our full editorial: PhpSpreadsheet CVE-2026-45034 exposes wrapper-bypass RCE risk