The Zero Day Initiative has published ZDI-26-783, disclosing an out-of-bounds write vulnerability in LibreOffice's PDF file parsing code tracked as CVE-2026-63273 with a CVSS score of 7.8 (High). The flaw allows a remote attacker to execute arbitrary code on any affected installation — the only requirement is that the victim opens a malicious PDF file or visits a page that causes LibreOffice to render attacker-controlled PDF content.
This is the exact class of vulnerability that phishing operators and initial-access brokers prize: a document-based code execution primitive against one of the most widely deployed open-source office suites in the world. LibreOffice ships by default in many Linux distributions and is pervasive in government, education, and cost-conscious enterprise environments. If your organization allows LibreOffice on endpoints — including as a secondary viewer — this advisory belongs at the top of your patch queue.
The vulnerability is not exploitable without user interaction, but that distinction offers little comfort in 2026. Weaponized PDF lures delivered via spear-phishing, watering-hole pages, and malicious attachments remain the highest-yield delivery mechanism for initial access. A 7.8 CVSS document-parsing RCE in a productivity suite should be treated as operationally urgent.
Technical Analysis
Vulnerability Overview
| Attribute | Detail |
|---|---|
| CVE | CVE-2026-63273 |
| Advisory | ZDI-26-783 |
| CVSS v3.x | 7.8 (High) — AV:L/AC:L/PR:N/UI:R |
| Weakness | Out-of-Bounds Write (CWE-787) |
| Affected Product | LibreOffice (PDF parsing component) |
| Exploitation Requirement | User must open a malicious PDF or visit a page that triggers parsing |
| Impact | Arbitrary code execution in the context of the current user |
| Vendor Advisory | http://www.zerodayinitiative.com/advisories/ZDI-26-783/ |
How the Vulnerability Works
The flaw exists in the code path that parses PDF file structures — almost certainly within LibreOffice's import filter (libpdfium/PDF import layer or the Draw/Writer PDF handling path). The defect is an out-of-bounds write: during parsing, the application writes data beyond the bounds of an allocated buffer because a length, index, or object count field in the crafted PDF is not properly validated.
From a defender's perspective, the exploitation chain looks like this:
- Delivery — Attacker sends a crafted
.pdfvia email attachment, malicious link, or embeds it where the victim's LibreOffice instance will render it. - Trigger — Victim opens the file. LibreOffice invokes its PDF import/parse routine.
- Memory Corruption — A malformed object (e.g., an overlong stream, crafted xref table entry, or malformed image/font structure) causes an out-of-bounds write, corrupting adjacent heap structures.
- Control Flow Hijack — The attacker leverages the corrupted memory to redirect execution. Absent effective mitigations, this yields arbitrary code execution as the logged-in user.
- Post-Exploitation — Typical follow-on behavior includes dropping a payload to a user-writable path (
%TEMP%,%APPDATA%,/tmp,~/.config), spawning a child process (cmd.exe,powershell.exe,/bin/sh, a LOLBin), establishing persistence, or staging a C2 connection.
Because exploitation occurs inside the parsing engine, the observable endpoint telemetry follows a well-known document-exploit pattern: soffice.bin (Windows) or soffice/oosplash (Linux) spawning unexpected child processes, writing executable content to disk, or crashing with memory-corruption signatures.
Affected Products and Platforms
The ZDI advisory covers affected installations of LibreOffice across supported platforms — Windows, macOS, and Linux. LibreOffice ships bundled with major Linux distributions (Debian, Ubuntu, Fedora, RHEL-family, SUSE), which means package-manager-based patching is the primary remediation channel on those systems. Organizations should inventory not just workstations where LibreOffice is a deliberate install, but also:
- Servers or jump hosts where LibreOffice was installed for document conversion (
soffice --headlessis frequently used for server-side document processing — a server-side parsing path dramatically increases risk because no user interaction is required in that context). - Application integrations that call LibreOffice headless to convert PDFs (mail gateways, DMS pipelines, e-discovery tooling).
If any automated pipeline feeds untrusted documents into soffice --headless --convert-to, treat that service as externally exposed and prioritize it.
Exploitation Status
At publication, ZDI-26-783 is a coordinated disclosure — no public proof-of-concept exploit and no confirmed in-the-wild exploitation have been reported, and the CVE is not yet listed in CISA's Known Exploited Vulnerabilities catalog. However, ZDI advisories of this class historically see PoC development within days-to-weeks of publication, and document-parsing bugs are routinely reverse-engineered from patches. The window between disclosure and weaponization is your remediation window. Do not wait for KEV inclusion.
Detection & Response
The strongest detection surface for document-parsing exploits is process lineage: an office application spawning shells, script interpreters, or LOLBins is almost never legitimate. The rules below target that behavior, plus crash artifacts indicative of failed exploitation attempts (useful for threat hunting even when the exploit failed).
Sigma Rules
---
title: LibreOffice Process Spawning Suspicious Child Process
id: 8f2c1a94-6e3b-4d7a-b2c9-4a1f8e5d7c31
status: experimental
description: Detects soffice.bin spawning command shells, script interpreters, or LOLBins — a strong indicator of successful document exploit execution such as CVE-2026-63273 (LibreOffice PDF parsing OOB write, ZDI-26-783).
references:
- http://www.zerodayinitiative.com/advisories/ZDI-26-783/
- https://attack.mitre.org/techniques/T1203/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.execution
- attack.t1203
- attack.t1059
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\soffice.bin'
- '\soffice.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
- '\certutil.exe'
- '\bitsadmin.exe'
- '\curl.exe'
- '\wmic.exe'
condition: selection_parent and selection_child
falsepositives:
- Rare LibreOffice macro or extension behavior invoking system commands — investigate parent command line and user context
level: high
---
title: LibreOffice Writing Executable Content to Suspicious Locations
id: 3d7e9b21-5a4c-4f8e-91d6-2c8b7a4e9f12
status: experimental
description: Detects LibreOffice processes writing executable or script files to user-writable or temporary directories, consistent with payload staging after exploitation of a document parsing flaw such as CVE-2026-63273.
references:
- http://www.zerodayinitiative.com/advisories/ZDI-26-783/
- https://attack.mitre.org/techniques/T1203/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.execution
- attack.t1203
- attack.t1105
logsource:
category: file_event
product: windows
detection:
selection_image:
Image|endswith:
- '\soffice.bin'
- '\soffice.exe'
selection_path:
TargetFilename|contains:
- '\AppData\Local\Temp\'
- '\AppData\Roaming\'
- '\Users\Public\'
- '\ProgramData\'
- '\Downloads\'
selection_ext:
TargetFilename|endswith:
- '.exe'
- '.dll'
- '.ps1'
- '.bat'
- '.vbs'
- '.js'
- '.hta'
- '.scr'
condition: selection_image and selection_path and selection_ext
falsepositives:
- LibreOffice extension installers and update mechanisms — correlate with known update windows
level: high
---
title: LibreOffice Crash Indicating Memory Corruption Attempt
id: 6b1a4f78-2d9e-4c5b-a8f3-7e2d1c9b6a45
status: experimental
description: Detects application error or Windows Error Reporting events for soffice.bin referencing memory-corruption-related fault modules or exception codes (e.g., 0xc0000005 access violation), which may indicate failed exploitation attempts against the PDF parser (CVE-2026-63273).
references:
- http://www.zerodayinitiative.com/advisories/ZDI-26-783/
- https://attack.mitre.org/techniques/T1203/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.execution
- attack.t1203
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\wermgr.exe'
CommandLine|contains: 'soffice'
falsepositives:
- Genuine application instability from malformed-but-benign documents — cluster events by user/host and investigate repeated crashes
level: medium
KQL — Microsoft Sentinel / Defender
Hunt for LibreOffice spawning child processes and writing executables across your fleet. This works against Defender for Endpoint tables directly, and against Syslog/CEF ingestion for Linux endpoints.
// Hunt: LibreOffice spawning suspicious child processes or dropping payloads (CVE-2026-63273 / ZDI-26-783)
let lookback = 14d;
let suspiciousChildren = dynamic(["cmd.exe","powershell.exe","pwsh.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","regsvr32.exe","certutil.exe","bitsadmin.exe","wmic.exe","curl.exe"]);
let suspiciousExt = dynamic([".exe",".dll",".ps1",".bat",".vbs",".js",".hta",".scr",".sh"]);
let procEvents = DeviceProcessEvents
| where TimeGenerated > ago(lookback)
| where InitiatingProcessFileName in~ ("soffice.bin","soffice.exe","soffice","oosplash")
| where FileName in~ (suspiciousChildren)
or ProcessCommandLine has_any ("bash -c","/bin/sh","curl ","wget ","base64")
| project TimeGenerated, DeviceName, AccountName,
Parent=InitiatingProcessFileName, ParentCmd=InitiatingProcessCommandLine,
Child=FileName, ChildCmd=ProcessCommandLine, SHA256, FolderPath;
let fileEvents = DeviceFileEvents
| where TimeGenerated > ago(lookback)
| where InitiatingProcessFileName in~ ("soffice.bin","soffice.exe","soffice","oosplash")
| where FileName has_any (suspiciousExt)
| where FolderPath has_any ("\\Temp\\","\\AppData\\","\\Public\\","\\ProgramData\\","\\Downloads\\","/tmp/","/dev/shm/","/home/")
| project TimeGenerated, DeviceName, AccountName,
Writer=InitiatingProcessFileName, DroppedFile=FileName, FolderPath, SHA256, ActionType;
procEvents
| union fileEvents
| order by TimeGenerated desc
// Hunt: Repeated soffice crashes (possible failed exploit attempts) via WER / Defender health events
let lookback = 14d;
DeviceProcessEvents
| where TimeGenerated > ago(lookback)
| where FileName =~ "wermgr.exe"
| where ProcessCommandLine has "soffice"
| summarize CrashCount=count(), FirstCrash=min(TimeGenerated), LastCrash=max(TimeGenerated)
by DeviceName, AccountName
| where CrashCount >= 2
| order by CrashCount desc
Velociraptor VQL
Deploy this as a hunt across endpoints to surface LibreOffice processes with anomalous lineage or network connections — useful both for live compromise assessment and retro-hunting.
-- Hunt: LibreOffice processes with suspicious command lines, children, or network connections
-- Targets post-exploitation behavior of document parsing RCE (CVE-2026-63273 / ZDI-26-783)
SELECT Pid, Ppid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE Name =~ '(?i)soffice|oosplash'
OR (
CommandLine =~ '(?i)(cmd\.exe|powershell|pwsh|wscript|cscript|mshta|rundll32|regsvr32|certutil|bitsadmin|/bin/sh|bash -c|curl |wget )'
AND Ppid IN (
SELECT Pid FROM pslist() WHERE Name =~ '(?i)soffice|oosplash'
)
)
-- Hunt: Network connections from LibreOffice processes (LibreOffice should rarely initiate outbound connections outside update/telemetry)
SELECT Pid, Name, Path, Status,
Laddr.IP AS LocalIP, Laddr.Port AS LocalPort,
Raddr.IP AS RemoteIP, Raddr.Port AS RemotePort
FROM netstat()
WHERE Name =~ '(?i)soffice'
AND Raddr.IP !~ '^(127\.|10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|0\.0\.0\.0|$)'
ORDER BY RemoteIP
Remediation / Verification Script
Use this PowerShell script to inventory LibreOffice installations, report versions for comparison against the vendor's fixed release, and disable the headless conversion attack surface on machines where it is not required. Run elevated via your RMM or GPO startup script.
# CVE-2026-63273 / ZDI-26-783 — LibreOffice inventory, version check, and exposure reduction
# Reference: http://www.zerodayinitiative.com/advisories/ZDI-26-783/
$report = @()
# 1. Enumerate installed LibreOffice versions (x64 and x86 registry hives)
$uninstallPaths = @(
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
foreach ($path in $uninstallPaths) {
Get-ItemProperty $path -ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -match 'LibreOffice' } |
ForEach-Object {
$report += [PSCustomObject]@{
Computer = $env:COMPUTERNAME
Product = $_.DisplayName
Version = $_.DisplayVersion
InstallPath = $_.InstallLocation
Action = 'REVIEW — compare against vendor fixed release and update immediately'
}
}
}
# 2. Check for soffice binaries outside standard install paths (shadow/unmanaged installs)
$orphans = Get-ChildItem -Path 'C:\Program Files','C:\Program Files (x86)','C:\Users' -Recurse -Filter 'soffice.bin' -ErrorAction SilentlyContinue |
Where-Object { $_.FullName -notmatch 'LibreOffice' }
foreach ($o in $orphans) {
$report += [PSCustomObject]@{
Computer = $env:COMPUTERNAME
Product = 'Unmanaged soffice.bin'
Version = ($o.VersionInfo.ProductVersion)
InstallPath = $o.FullName
Action = 'INVESTIGATE — unmanaged installation'
}
}
# 3. Hardening: block soffice from spawning child processes via WDAC/ASR-style audit (Defender ASR rule: block Office child processes covers Office; for LibreOffice use a custom AppLocker/WDAC deny or monitor-only)
# At minimum, enable process creation auditing with command line logging for detection fidelity:
$audit = auditpol /get /subcategory:"Process Creation" 2>$null
if ($audit -notmatch 'Success') {
auditpol /set /subcategory:"Process Creation" /success:enable /failure:enable | Out-Null
}
# Enable command line capture in process creation events
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit' -Name 'ProcessCreationIncludeCmdLine_Enabled' -Value 1 -ErrorAction SilentlyContinue
# 4. Export findings
$report | Format-Table -AutoSize
$report | Export-Csv -Path "$env:ProgramData\LibreOffice_CVE-2026-63273_Inventory.csv" -NoTypeInformation -Force
Write-Output "Inventory written to $env:ProgramData\LibreOffice_CVE-2026-63273_Inventory.csv"
For Linux fleets, audit and patch via your package manager:
#!/bin/bash
# CVE-2026-63273 — LibreOffice inventory and patch status check (Debian/Ubuntu & RHEL/Fedora)
echo "=== Installed LibreOffice packages ==="
if command -v dpkg >/dev/null 2>&1; then
dpkg -l | grep -i libreoffice
elif command -v rpm >/dev/null 2>&1; then
rpm -qa | grep -i libreoffice
fi
echo "=== Checking for headless conversion services (server-side parsing risk) ==="
ps aux | grep -i 'soffice.*headless' | grep -v grep
ss -tlnp 2>/dev/null | grep -i soffice
echo "=== Applying vendor updates ==="
if command -v apt-get >/dev/null 2>&1; then
apt-get update && apt-get install --only-upgrade -y libreoffice-core libreoffice-common
elif command -v dnf >/dev/null 2>&1; then
dnf update -y libreoffice*
fi
echo "=== Verifying no soffice processes remain post-patch ==="
pkill -f soffice 2>/dev/null; echo "Done. Re-run version check to confirm fixed build."
Remediation
- Apply the vendor patch immediately. Update all LibreOffice installations to the fixed release identified by The Document Foundation in response to ZDI-26-783. Consult the ZDI advisory (http://www.zerodayinitiative.com/advisories/ZDI-26-783/) and the LibreOffice security advisories page for the exact fixed version. Verify post-patch that
soffice --versionreflects the remediated build. - Prioritize server-side and automated parsing paths. Any system invoking
soffice --headless --convert-toagainst untrusted input (mail gateways, document management systems, upload portals) is effectively network-exploitable without user interaction. Patch these first, and where patching must wait, isolate them in a sandboxed container with no outbound network access and no credentials. - Patch via package managers on Linux. Use
apt,dnf, orzypperto pull distribution-fixed builds; confirm your distribution has shipped the backported fix — distro version numbers may not change visibly even when patched. - Reduce attack surface where patching lags:
- Remove LibreOffice from endpoints where it is not business-required.
- Do not associate PDF files with LibreOffice by default in managed environments.
- Enforce email gateway detonation/sandboxing of PDF attachments.
- Apply Attack Surface Reduction-style controls or AppLocker/WDAC policies blocking office applications from spawning child processes.
- Deploy the detections above and run a retro-hunt over the last 14–30 days for
sofficechild-process anomalies and crash clusters — exploitation before disclosure cannot be ruled out in targeted environments. - Monitor for KEV inclusion and PoC release. Track CVE-2026-63273 in CISA KEV and ZDI channels; re-escalate patching priority immediately if exploitation is confirmed.
- User awareness reinforcement. Remind users that PDF attachments from unexpected senders should be reported, not opened — a single open is all this vulnerability requires.
Related Resources
Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.