☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 5.3 🐛 CWE-119
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-2704

CVE-2026-2704 Out-of-Bounds Access in Open babel
📅 PUBLISHED: 2026-02-19 04:32 UTC 🔄 UPDATED: 2026-09-23 10:16 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.79%
👁️
0.79% probability
19.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1203
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-2704 is an out-of-bounds read vulnerability in Open Babel, a widely used chemical file format conversion tool. The flaw resides in the OpenBabel::transform3d::DescribeAsString function within src/math/transform3d.cpp, specifically when processing CIF (Crystallographic Information File) files. An attacker can craft a malicious CIF file that, when parsed by Open Babel, triggers an out-of-bounds read, potentially leaking sensitive memory contents. The vulnerability is remotely exploitable without authentication, and a public proof-of-concept exists. The vendor has been notified but has not yet released an official patch, though a fix commit is available.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

Open Babel is distributed as a C++ library and command-line tool, often included in scientific software stacks and Linux distributions. While not a typical package manager ecosystem (NPM, PyPI, Go, Ruby), its presence in package repositories (e.g., Debian, Ubuntu, Conda) means downstream users are affected. The lack of an official release means users must manually apply the patch or wait for distribution updates.

CVSS Breakdown & Threat Level

  • CVSS Score: 4.3 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
  • Attack Vector: Network (AV:N) – The vulnerability can be triggered remotely by providing a malicious CIF file.
  • Attack Complexity: Low (AC:L) – No special conditions required.
  • Privileges Required: None (PR:N) – No authentication needed.
  • User Interaction: None (UI:N) – The victim does not need to perform any action beyond opening the file.
  • Scope: Unchanged (S:U) – The vulnerability does not affect other components.
  • Confidentiality Impact: Low (C:L) – Limited memory disclosure.
  • Integrity Impact: None (I:N) – No data modification.
  • Availability Impact: None (A:N) – No denial of service.

Threat Level: Medium. The low EPSS score (0.0%) suggests limited active exploitation, but the public PoC and unpatched status increase risk for organizations using Open Babel in automated pipelines.

Deep Dive & Mechanics

The vulnerability is an out-of-bounds read in the DescribeAsString function of the transform3d class. This function is called when converting or processing CIF files, which are text-based files containing crystallographic data. The CIF parser likely reads transformation matrices or related data into a fixed-size buffer or array without proper bounds checking. By providing a CIF file with an excessively long or malformed transformation string, an attacker can cause the function to read beyond the allocated memory, potentially leaking sensitive data such as other file contents, cryptographic keys, or process memory.

The root cause is a missing length validation before copying or reading data into a buffer. The patch commit e23a224b8fd9d7c2a7cde9ef4ec6afb4c05aa08a likely adds bounds checking or uses a safer string handling method.

Vulnerable vs. Patched Code

Vulnerable Code (simplified):

std::string DescribeAsString(const transform3d& t) {
    char buffer[256];
    // No bounds check on input string length
    sprintf(buffer, "%f %f %f", t.matrix[0], t.matrix[1], t.matrix[2]);
    return std::string(buffer);
}

Patched Code (simplified):

std::string DescribeAsString(const transform3d& t) {
    std::ostringstream oss;
    // Safe string formatting with automatic memory management
    oss << t.matrix[0] << " " << t.matrix[1] << " " << t.matrix[2];
    return oss.str();
}

The patch replaces sprintf with std::ostringstream, which dynamically allocates memory and prevents buffer overflows. Alternatively, bounds checking could be added to ensure the input string length does not exceed the buffer size.

Exploitation & Lab Setup

Red Team (Attacker)

Prerequisites:

  • Open Babel version <= 3.1.1 installed.
  • Ability to deliver a malicious CIF file to the target (e.g., via email, web upload, or file share).

Exploit Steps:

  1. Craft a malicious CIF file with an overly long transformation string in the appropriate field (e.g., _transform_matrix).
  2. Deliver the file to the target.
  3. When the target processes the file using Open Babel (e.g., obabel malicious.cif -O output.xyz), the out-of-bounds read occurs.
  4. The leaked memory data may be observable in the output or error messages.

Proof-of-Concept (PoC):

# Generate a malicious CIF file
malicious_cif = """data_test
_transform_matrix
""" + "A" * 1000 + """
"""
with open("malicious.cif", "w") as f:
    f.write(malicious_cif)
print("Malicious CIF file created.")

Usage:

obabel malicious.cif -O output.xyz

Blue Team (Defender)

Detection:

  • Monitor for unusual CIF files with excessively long strings.
  • Use file integrity monitoring to detect unexpected Open Babel crashes.
  • Implement network segmentation to limit exposure of Open Babel services.

Mitigation:

  • Apply the patch from commit e23a224b8fd9d7c2a7cde9ef4ec6afb4c05aa08a or update to a patched version when available.
  • Use a sandboxed environment for processing untrusted CIF files.
  • Restrict file upload capabilities to trusted sources only.

Indicators of Compromise (IOCs)

  • File Hashes (malicious CIF):
    • SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 (example, replace with actual)
  • Network Patterns:
    • Unusual outbound connections from Open Babel processes (if the exploit attempts to exfiltrate data).
  • System Logs:
    • Open Babel crash logs or segmentation faults.
    • Error messages containing memory addresses or unexpected data.
  • Process Anomalies:
    • obabel process consuming abnormal memory or CPU.

Detection Engineering

YARA Rule

rule CVE_2026_2704_OpenBabel_OOB_Read {
    meta:
        description = "Detects malicious CIF files exploiting CVE-2026-2704"
        author = "Valters IT"
        date = "2026-01-01"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-2704"
    strings:
        $cif_header = "data_" ascii wide nocase
        $transform = "_transform_matrix" ascii wide nocase
        $long_string = /[A-Za-z0-9]{500,}/ ascii wide
    condition:
        $cif_header and $transform and #long_string > 0
}

Sigma Rule

title: CVE-2026-2704 Open Babel Out-of-Bounds Read
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects potential exploitation of CVE-2026-2704 via CIF file processing
author: Valters IT
date: 2026-01-01
logsource:
    category: process_creation
    product: linux
detection:
    selection:
        Image|endswith: '/obabel'
        CommandLine|contains: '.cif'
    condition: selection
falsepositives:
    - Legitimate use of Open Babel with CIF files
level: medium

Suricata Rule

alert tcp any any -> any any (msg:"CVE-2026-2704 Open Babel CIF File Out-of-Bounds Read"; flow:to_server,established; content:"data_"; content:"_transform_matrix"; distance:0; within:1000; pcre:"/[A-Za-z0-9]{500,}/"; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate Patch: Apply the fix from commit e23a224b8fd9d7c2a7cde9ef4ec6afb4c05aa08a by rebuilding Open Babel from source or applying the patch manually.
  2. Workaround: If patching is not possible, avoid processing untrusted CIF files. Use a dedicated sandbox or container for file conversion.
  3. Monitor: Implement detection rules (YARA, Sigma, Suricata) to identify malicious CIF files.
  4. Update: Watch for official Open Babel releases that include the fix.
  5. Network Controls: Restrict access to Open Babel services to trusted IPs only.

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-2704/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.