CVE-2026-104809
Executive Summary
CVE-2026-104809 is an uncontrolled module search path / untrusted-module loading flaw (CWE-73) in a Mitel Linux virtual machine product, in which a privileged process loads a module by a predictable name without validating the module's origin or integrity. An attacker who can place an attacker-controlled .so file using the expected name in a location searched by the privileged loader can achieve arbitrary code execution in that process's security context. Because the loader runs with elevated privileges, successful exploitation results in full compromise of the affected Mitel Linux virtual machine.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The vulnerability class is uncontrolled search path / untrusted module loading (CWE-73), commonly referred to as shared-object or library-preloading hijacking when applied to ELF .so files on Linux. Per the NVD description, the mechanism is as follows:
- A privileged process on the Mitel Linux virtual machine loads a module.
- The loading mechanism relies on a predictable module name.
- The loader does not adequately verify the file's origin or integrity before loading it.
- Consequently, a malicious shared object that uses the expected name can be loaded in place of the legitimate module.
- Once loaded, the module's code executes in the context and with the privileges of the loading process.
The essential weakness is a broken trust boundary at the load decision: the process resolves a module by name, but never proves that the resolved file is the vendor-supplied artifact (e.g., by signature, hash, ownership/mode check, or absolute trusted path). Any location that participates in the loader's resolution process and is writable by a less-privileged principal creates a hijack opportunity. Standard ELF resolution pitfalls in this class include search-path entries that are relative, world-writable, or influenced by environment variables; directories writable by non-root users referenced by the privileged process; and missing ownership/permission checks that would normally disqualify a candidate .so (for example, accepting a file owned by a non-privileged user).
The exposed attack surface is the module load path of the privileged component running inside the Mitel Linux VM. The critical detail is the privilege asymmetry: a low-privileged foothold able to write into the relevant search location is sufficient to escalate to the privileges of the privileged loader, up to full VM compromise as stated in the description. No CVSS vector, EPSS score, KEV listing, PoC, or patch has been published for this CVE at the time of writing; the specific module name, the exact search path, and the loading component are not disclosed in the available description, so this analysis stays at the vulnerability-class level rather than attributing specific paths or binaries.
Because the defect is architectural (name-based trust rather than authenticated artifact loading) rather than memory-safety related, mitigation must focus on enforcing file integrity, ownership, and path constraints in the load mechanism, not on memory-hardening.
Exploitation Scenarios
No public PoC is available for CVE-2026-104809; the attack chain below is inferred from the vulnerability class (CWE-73) and the NVD description.
Reconnaissance / target identification. The attacker identifies a Mitel Linux virtual machine deployment and enumerates the privileged processes present on it. The goal is to find a privileged component that dynamically loads a module, and to determine the predictable module name it resolves along with the locations on the filesystem that participate in that resolution.
Triggering the flaw class. The attacker, operating with a foothold on the VM that permits writing to a location consulted during module resolution, places a malicious shared object there under the exact module name the privileged component expects. Because the loader verifies neither origin nor integrity, the malicious file is selected instead of (or ahead of) the legitimate module.
Payload / execution method. The shared object's code executes when the privileged component loads the module. At the vulnerability-class level, the payload is arbitrary code executed by the loader; no specific module initialization symbols, entry points, or API calls are specified by the CVE data, and none are assumed here. The decisive factor is that execution occurs inside the privileged process, so the payload inherits its privileges without any separate elevation step.
Post-exploitation impact. Per the NVD description, this results in arbitrary code execution and full compromise of the Mitel Linux virtual machine. From that position the attacker controls the appliance role hosted by the VM and any data, credentials, or telephony/management functions resident within it. Given the file-replacement mechanism, persistence can be maintained by re-dropping or retaining the hijacked
.sountil the vulnerable component is replaced or the load path is hardened.
Impact Assessment
Full compromise of the affected Mitel Linux virtual machine, per the authoritative description. The blast radius is the VM itself and every function, credential, and data set it hosts — for a telephony/management platform this typically includes administrative interfaces, stored configuration, and potentially credentials used to integrate with adjacent systems.
CVSS assessment: no score or vector has been published (CVSS: N/A), and the inferred vector provided in the metadata is analytical, not authoritative. Qualitatively, Confidentiality, Integrity, and Availability are all rated High in the inferred vector because the attacker executes in the privileged process context. The vector's Scope:Changed reflects the boundary crossing from a lower-privileged foothold to the privileged loader's context; Attack Complexity is High because an attacker must first be able to write into a location consulted by the loader, which typically requires a pre-existing foothold on the VM. EPSS: not yet scored by FIRST.org. CISA KEV: not listed.
Detection Guidance
Detection focuses on the observable consequence of this flaw class: a module being loaded by a privileged process from an unexpected or non-vendor location, and writes of .so files into paths that are not normally modified.
Sigma Rule
title: Suspicious Shared Object Write to Module Search Path (CWE-73 Module Hijack)
id: 4c1f9a72-0d3e-4b21-9f55-8ab6c2e7d914
status: experimental
description: Detects creation or modification of .so files in system/library directories by non-package-manager processes, consistent with module search-path hijacking against a privileged loader (CVE-2026-104809).
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-104809
author: valtersit.com Threat Intelligence
date: 2026/01/01
tags:
- attack.persistence
- attack.privilege_escalation
- attack.t1574.001
- cve.2026.104809
logsource:
product: linux
category: file_event
detection:
selection_paths:
TargetFilename|endswith: '.so'
TargetFilename|contains:
- '/lib/'
- '/lib64/'
- '/usr/lib/'
- '/usr/local/lib/'
filter_pkg_mgmt:
Image|endswith:
- '/dpkg'
- '/apt'
- '/apt-get'
- '/rpm'
- '/yum'
- '/dnf'
selection_write_tool:
Image|endswith:
- '/cp'
- '/mv'
- '/install'
- '/dd'
- '/tee'
condition: (selection_paths and selection_write_tool) and not filter_pkg_mgmt
falsepositives:
- Legitimate software installation performed outside the package manager
- Administrator-driven hotfix deployment
level: high
YARA Rule
rule CVE_2026_104809_Malicious_Module_Load
{
meta:
description = "Heuristic detection of ELF shared objects containing constructors/init patterns consistent with malicious module hijack payloads (CVE-2026-104809)"
author = "valtersit.com Threat Intelligence"
date = "2026-01-01"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-104809"
severity = "high"
strings:
$elf = { 7F 45 4C 46 }
$so_name = ".so" ascii wide
$init = "__attribute__((constructor))" ascii
$preload = "LD_PRELOAD" ascii wide
$evil_cmd = "/bin/sh" ascii wide
$evil_cmd2 = "/bin/bash" ascii wide
$sock = "socket" ascii
$connect = "connect" ascii
condition:
$elf at 0 and
filesize < 5MB and
(
($so_name and $init) or
($evil_cmd or $evil_cmd2) and ($sock and $connect) or
$preload
)
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2026-104809 Mitel Linux VM - Potential Malicious Module Transfer (Shared Object Download)"; flow:established,to_server; http.method; content:"POST"; http.uri; pcre:"/\.so(\?|$)/i"; classtype:attempted-admin; reference:cve,2026-104809; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-104809; metadata:created_at 2026_01_01, updated_at 2026_01_01; sid:2026104809; rev:1;)
Elastic Detection
file where event.action in ("creation", "modification", "rename") and
file.extension == "so" and
file.path : ("/lib/*", "/lib64/*", "/usr/lib/*", "/usr/local/lib/*") and
not process.name in ("dpkg", "apt", "apt-get", "rpm", "yum", "dnf")
Splunk SPL Query
index=linux sourcetype=linux_audit OR sourcetype=sysmon_linux OR sourcetype=osquery
(EventType=CREATE OR EventType=WRITE OR action=created OR action=modified)
(TargetFilename=*.so OR file_path=*.so)
(TargetFilename="/lib/*" OR TargetFilename="/lib64/*" OR TargetFilename="/usr/lib/*" OR TargetFilename="/usr/local/lib/*" OR file_path IN ("/lib/","/lib64/","/usr/lib/","/usr/local/lib/"))
NOT (Image IN ("/usr/bin/dpkg","/usr/bin/apt","/usr/bin/apt-get","/usr/bin/rpm","/usr/bin/yum","/usr/bin/dnf"))
| stats count min(_time) as first_seen max(_time) as last_seen values(TargetFilename) as files values(Image) as processes by host
| where count > 0
| convert ctime(first_seen) ctime(last_seen)
Wazuh OSSEC Rule
<group name="cve_2026_104809,module_hijack,">
<rule id="104809" level="12">
<if_sid>550</if_sid>
<field name="file">\.so$</field>
<match>/lib/|/lib64/|/usr/lib/|/usr/local/lib/</match>
<description>CVE-2026-104809: Shared object (.so) created or modified in a system library path - possible module load hijack.</description>
<mitre>
<id>T1574.001</id>
</mitre>
<group>cve_2026_104809,module_hijack,</group>
</rule>
<rule id="104810" level="13">
<if_sid>104809</if_sid>
<field name="audit.exe">cp|mv|install|dd|tee</field>
<description>CVE-2026-104809: .so file written to a library path by a non-package-manager process - likely exploitation.</description>
<mitre>
<id>T1574.001</id>
<id>T1543</id>
</mitre>
<group>cve_2026_104809,module_hijack,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 — UNPATCHED. No vendor fix, advisory, workaround, or affected-version data is available from any tracked source; no CISA KEV listing exists.
1) Immediate mitigations (until a vendor fix is available):
- Restrict write access to every directory that participates in the module resolution path of privileged processes on the Mitel Linux VM. Only root (or the owning service account) should be able to create or modify files there; remove group/other write bits.
- Audit the filesystem for
.sofiles in library and application search paths that are owned by non-privileged users and correct ownership/permissions. - Establish a baseline of expected module names and hashes for the affected VM, and monitor for additions or changes in module search locations.
- Minimize accounts with the ability to deploy files onto the VM; treat any foothold that allows arbitrary file writes there as a privilege-escalation enabler.
- Where the platform permits it, enforce restrictive mount options on module directories and constrain any application-level module directories to administrator-owned paths.
2) Patch/upgrade steps:
- No official patch is available. Monitor Mitel advisories, the NVD entry for CVE-2026-104809, and vendor security bulletins for a fixed release; apply it as soon as it is published and verify that the loader has been changed to validate module origin/integrity (for example, by fixed absolute paths, ownership and permission checks, or cryptographic verification) rather than resolving by name alone.
3) Long-term hardening:
- Require module loaders on privileged components to resolve modules only from vendor-controlled, non-writable absolute paths and to reject candidates that fail ownership, permission, or signature/hash validation — the architectural fix for CWE-73 in this context.
- Deploy file-integrity monitoring (e.g., the detection content above) on the VM as a standing control, not just during incident response.
- Apply mandatory access control (SELinux/AppArmor) where supported so that even a misplaced or malicious
.socannot be mapped/executed by privileged components outside approved paths. - Treat appliance VMs as untrusted-adjacent infrastructure: segment management interfaces, rotate credentials after any suspected compromise, and maintain immutable backups to allow clean rebuilds.
References
- NVD — CVE-2026-104809: https://nvd.nist.gov/vuln/detail/CVE-2026-104809
- MITRE CWE-73 — External Control of File Name or Path: https://cwe.mitre.org/data/definitions/73.html
- MITRE ATT&CK T1574.001 — Hijack Execution Flow: DLL Search Order Hijacking (Linux analog: shared object hijacking): https://attack.mitre.org/techniques/T1574/001/
- Mitel Product Security Advisories portal (monitor for patch/fix release): https://www.mitel.com/en-gb/support/security-advisories
- CISA Known Exploited Vulnerabilities Catalog (CVE-2026-104809 not currently listed — verify status): https://www.cisa.gov/known-exploited-vulnerabilities-catalog
No exploit-in-the-wild evidence, threat-actor campaign attribution, public PoC, or Nuclei template was identified for CVE-2026-104809 in the data provided.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.