Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver maliciously named Xiphos module/image
-
DeliveryVictim renames module or views image
-
ExploitMetacharacters injected into popen() shell string
-
ExecutionArbitrary command executes as user
-
ImpactLocal code execution and data compromise
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK
2 techniques across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires local access to a system running CrossWire Xiphos <= 4.3.2 (GTK desktop app on Linux/Unix). Exploitation is reached through two specific features: the personal-commentary 'rename' action (on_rename_perscomm_activate in src/gtk/menu_popup.c), where the module section name info->text1 is interpolated into a cd/sed shell pipeline, and the separate-image viewer (show_separate_image in src/main/url.cc), where an image filename is interpolated into the external display program's command line - both passed to popen() unsanitized. Realistic exploitation depends on a victim performing one of these actions on attacker-supplied data (a crafted module or image whose name embeds shell metacharacters); code runs only with that user's privileges (no privilege escalation), which along with the local vector and niche product footprint limits practical risk. |
| Impact | Signals converge on a genuine-but-low-urgency local RCE. The CVSS 3.1 vector (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, base 7.8) correctly captures a local, low-complexity command-injection with full CIA impact, and the source diff confirms the root cause: two sinks (menu_popup.c on_rename_perscomm_activate and url.cc show_separate_image) build shell command strings via g_string_printf and pass them to popen(), embedding attacker-influenced values (the personal-commentary module section name info->text1 and an image filename) directly into a shell context. SSVC agrees - Exploitation:poc, Automatable:no, Technical Impact:total - matching a POC that exists (public gist) but requires local, non-automatable, user-driven triggering. EPSS is 0.15% (5th percentile) and there is NO CISA KEV listing, consistent with a niche desktop application unlikely to see mass exploitation. Net: a real, patch-worthy code-execution bug, but a low real-world priority driven by the local attack vector, niche footprint, and lack of active-exploitation evidence rather than a widespread threat. Note a defensible disagreement with UI:N - realistic exploitation depends on a victim performing an action (renaming a module or viewing an image) on attacker-supplied data, so UI:R is arguable; this does not change the base severity band materially. |
| Exploit ScenarioDerived | An attacker distributes a malicious Xiphos personal-commentary module (or image resource) whose section name or filename contains shell metacharacters such as $(...) or backticks. When the local user renames that module or opens the separate-image viewer, Xiphos assembles a shell string and calls popen(), executing the attacker's injected command with the victim's privileges. A public proof-of-concept gist exists, but exploitation requires local access and a victim action, so it is not remotely or automatically weaponizable. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 22, 2026
Command injection in CrossWire Xiphos 4.3.2 and earlier lets a local attacker execute arbitrary shell commands with the privileges of the user running the application by placing shell metacharacters in data that Xiphos later interpolates into unsanitized popen() shell pipelines. Two code paths are involved: the personal-commentary rename action (on_rename_perscomm_activate in src/gtk/menu_popup.c), where the module section name is spliced into a cd/sed command, and the separate-image viewer (show_separate_image in src/main/url.cc), where an image filename is spliced into an external viewer's command line. Exploitation requires the victim to trigger one of those actions on attacker-supplied data (a crafted module or image file), the impact is confined to the victim's own account because no privilege escalation is demonstrated, and publicly available exploit code exists (SSVC records exploitation as 'poc'), although the issue is not in CISA KEV and EPSS is low at 0.15% (5th percentile).
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - the correction lives in crosswire/xiphos PR #1314, commit 68bbe3063b601537d1e505dd1a4560d51811a9e0, which replaces every vulnerable popen() call with argv-based g_spawn_sync/g_spawn_async invocations (menu_popup.c) and g_spawn_async (url.cc), so building Xiphos from a revision at or after that commit removes the shell from the execution path; users on packaged distributions should track their vendor for a backported 4.3.x build and treat any version up to 4.3.2 as vulnerable until then. Because the flaw requires the victim to act on attacker-supplied data, the most effective compensating control is data provenance: do not open, install, or rename personal commentary modules and do not view images received from untrusted sources inside Xiphos, since module section names and image filenames are the exact injection carriers. There is no configuration switch to disable the vulnerable code paths, so stronger containment means restricting the process itself - run Xiphos inside a sandbox or Flatpak-style confinement, or under an AppArmor/SELinux profile that denies exec of /bin/sh and blocks spawning external viewer programs - with the trade-off that legitimate 'open image in external viewer' functionality and any shell-dependent features will break, and such profiles must be tested against normal workflows. General system controls (limited user privileges, no reuse of Xiphos accounts in privileged contexts) reduce blast radius but do not eliminate the bug, since the injected command runs with the user's own rights. Consult https://nvd.nist.gov/vuln/detail/CVE-2026-79079 and the PR at https://github.com/crosswire/xiphos/pull/1314/commits/68bbe3063b601537d1e505dd1a4560d51811a9e0 for the authoritative code-level fix.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-78 (Improper Neutralization of Special Elements used in an OS Command), specifically the classic popen() anti-pattern in the GLib/GTK C and C++ code of Xiphos. popen() does not exec a program directly; it runs the string through /bin/sh -c, so any attacker-controlled substring containing shell metacharacters (;, &&, $(), backticks, unbalanced quotes) escapes the intended command and executes as the invoking user. In src/gtk/menu_popup.c the module section name held in info->text1 was formatted with g_string_printf into a '( cd "%s" && sed ... ) 2>&1' pipeline and handed to popen(); in src/main/url.cc the image filename was formatted into '%s "%s" < /dev/null > /dev/null 2>&1 &' along with the selected display program, again via popen(). The upstream fix in PR #1314 removes shell interpretation entirely: menu_popup.c now builds an argv array and calls g_spawn_sync(modsdir, argv, ...) with sed and the sed expression as discrete arguments, writing the result with g_file_set_contents, while url.cc uses g_spawn_async(NULL, argv, ...) with G_SPAWN_SEARCH_PATH and stdout/stderr redirected to /dev/null, passing the viewer and filename as separate argv elements. Although the CVE description describes a general 'local attacker', the assessed CVSS vector (AV:L/AC:L/PR:L/UI:N) indicates the attacker must already hold a local user context, and the injected code inherits only that user's rights.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Local shell injection via popen() executes arbitrary commands at the invoking user's privilege (PR:L, AV:L, low complexity), yielding full C/I/A; UI:R is defensible since a victim action typically triggers it.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
3DescriptionCVE.org
An issue in CrossWire Xiphos <= 4.3.2 allows a local attacker to execute arbitrary code via the src/main/url.cc and src/gtk/menu_popup.c components
Executive ViewAI
CrossWire Xiphos 4.3.2 and earlier, a desktop Bible-study application used by individual staff and volunteers, contains a command-injection flaw that lets an attacker run shell commands with the privileges of the user who opens a crafted module or image file. Because exploitation requires the user to trigger a rename or image-view action and grants no elevated privileges, exposure is confined to individual user accounts rather than servers or administrative systems. Leadership should care because publicly available exploit code exists and no vendor patch is available, so users who routinely open third-party or shared content remain exposed and the risk must be managed through policy, configuration, and monitoring until a fix ships.
No vendor-released patch identified at time of analysis. Interim mitigations: allow Xiphos to open only trusted, pre-vetted modules and image files; avoid the personal-commentary rename action and separate-image viewer on untrusted content; run Xiphos in a sandboxed container or low-privilege account; block or quarantine untrusted module and image files at email and web ingress; and monitor endpoint logs for shell processes spawned by Xiphos while awaiting a vendor fix.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
EUVD-2026-84185
GHSA-m3hm-f9qq-cmg5
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB