CVE-2025-10995 Overview
CVE-2025-10995 is a memory corruption vulnerability in Open Babel through version 3.1.1, an open-source chemical toolbox used for converting molecular file formats. The flaw resides in the zlib_stream::basic_unzip_streambuf::underflow function within the /src/zipstreamimpl.h header. Attackers with local access can trigger memory corruption by manipulating input consumed by this decompression routine. A public proof-of-concept has been disclosed, increasing the risk of opportunistic exploitation in environments that process untrusted molecular archives. The weakness is categorized under [CWE-119], improper restriction of operations within the bounds of a memory buffer.
Critical Impact
Local exploitation of the zlib_stream::basic_unzip_streambuf::underflow function can corrupt process memory in Open Babel, potentially affecting confidentiality, integrity, and availability of the running process.
Affected Products
- Open Babel versions up to and including 3.1.1
- Applications embedding the vulnerable zipstreamimpl.h header from Open Babel
- Cheminformatics pipelines and toolchains linking against Open Babel libraries
Discovery Timeline
- 2025-09-26 - CVE-2025-10995 published to the National Vulnerability Database (NVD)
- 2026-06-17 - Last updated in the NVD database
Technical Details for CVE-2025-10995
Vulnerability Analysis
The vulnerability affects the underflow method of the zlib_stream::basic_unzip_streambuf class implemented in /src/zipstreamimpl.h. This method is invoked by the C++ streambuf machinery to refill the input buffer when a consumer reads decompressed data from a zip-backed stream. Improper bounds handling during buffer refilling permits memory corruption when a crafted compressed payload is processed.
Because Open Babel is commonly used as a library in chemistry-focused desktop tools, batch converters, and research pipelines, the vulnerable code path is reachable whenever a user opens or converts a compressed molecular file such as a .gz-wrapped SDF or MOL2 archive. Exploitation requires local access and low privileges, and the public proof-of-concept demonstrates how a malformed archive triggers the fault.
Root Cause
The root cause is an out-of-bounds memory operation in the decompression streambuf implementation. The underflow routine does not sufficiently validate the relationship between the decompressed byte count returned by zlib and the destination buffer boundaries. When the returned size falls outside expected bounds, subsequent pointer arithmetic within the streambuf corrupts adjacent memory. This aligns with [CWE-119] classification for improper restriction of operations within buffer bounds.
Attack Vector
An attacker with local access supplies a crafted compressed input file that Open Babel processes through its zipstreamimpl.h decompression path. When the target user or process invokes a conversion or read operation on the malicious archive, the underflow method executes and corrupts memory. Refer to the GitHub Issue #2832 and the published GitHub PoC Attachment for reproduction details.
// No verified exploit code republished here.
// See the referenced GitHub issue and PoC archive for reproduction artifacts.
Detection Methods for CVE-2025-10995
Indicators of Compromise
- Unexpected crashes, segmentation faults, or heap corruption reports from obabel, babel, or applications linking libopenbabel
- Presence of unsolicited or malformed compressed molecular archives (.gz, .zip) in user download or shared research directories
- Core dumps referencing symbols under zlib_stream::basic_unzip_streambuf or zipstreamimpl.h
Detection Strategies
- Monitor process telemetry for abnormal termination of Open Babel binaries when handling compressed inputs
- Track file-open events on .gz/.zip inputs consumed by Open Babel processes and correlate with subsequent process crashes
- Inspect crash dumps and application logs for stack frames pointing into the zlib streambuf decompression code path
Monitoring Recommendations
- Enable coredump collection on hosts running Open Babel to capture forensic evidence of exploitation attempts
- Alert on repeated failures of obabel invocations against the same input, which may indicate iterative fuzzing or exploit refinement
- Log parent-child process relationships to detect unexpected downstream execution following Open Babel activity
How to Mitigate CVE-2025-10995
Immediate Actions Required
- Inventory hosts, containers, and research workstations running Open Babel 3.1.1 or earlier, including embedded copies of zipstreamimpl.h
- Restrict processing of untrusted compressed molecular files until a fixed version is deployed
- Run Open Babel under the least-privileged account required for the workflow to limit blast radius from local exploitation
Patch Information
As of the latest NVD update on 2026-06-17, no vendor-published patch reference is listed in the CVE record. Track the upstream GitHub Issue #2832 for remediation status, and consult VulDB entry #325923 for supplemental advisory information. Upgrade to a fixed release as soon as it becomes available.
Workarounds
- Avoid opening compressed molecular archives from untrusted sources with Open Babel until patched
- Pre-validate inputs by decompressing archives with a hardened, sandboxed utility before passing plain files to Open Babel
- Execute Open Babel inside a container or sandbox with restricted filesystem and syscall access to contain memory corruption impact
# Example: run Open Babel inside a locked-down sandbox with a read-only input mount
docker run --rm --read-only --cap-drop=ALL --security-opt=no-new-privileges \
-v "$PWD/inputs:/data:ro" openbabel/openbabel:latest \
obabel /data/molecule.sdf.gz -o smi
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

