CVE-2023-35932

7.1 HIGH

📋 TL;DR

CVE-2023-35932 is a configuration injection vulnerability in the jcvi Python library that allows malicious user input to reach configuration files unsanitized. This can potentially lead to command injection if configuration values are executed as shell code. Users of jcvi for genome assembly and annotation are affected.

💻 Affected Systems

Products:
  • jcvi (Python library for genome assembly and annotation)
Versions: All versions up to and including the latest release as of advisory date
Operating Systems: All operating systems where jcvi is installed
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability exists in the base.py module where user input reaches configuration files without proper sanitization.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution with the privileges of the jcvi process, potentially leading to full system compromise.

🟠

Likely Case

Limited command injection affecting specific jcvi functionality, potentially disrupting genomic analysis workflows.

🟢

If Mitigated

No impact if proper input validation and sanitization are implemented before configuration processing.

🌐 Internet-Facing: MEDIUM - Requires jcvi to be exposed to untrusted user input via web interfaces or APIs.
🏢 Internal Only: LOW - Typically used in research environments with trusted users, but risk exists if processing external data.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires the attacker to control input that reaches the vulnerable configuration processing code. No public exploit code has been identified.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: None available

Vendor Advisory: https://github.com/tanghaibao/jcvi/security/advisories/GHSA-x49m-3cw7-gq5q

Restart Required: No

Instructions:

No official patch available. Monitor the jcvi GitHub repository for security updates and apply when released.

🔧 Temporary Workarounds

Input Validation and Sanitization

all

Implement strict input validation and sanitization for all user-provided data before it reaches jcvi configuration processing functions.

# Implement custom validation in your code before calling jcvi functions
# Example: Validate and sanitize user input using allowlists

Restrict jcvi Usage

all

Limit jcvi usage to trusted environments and users only, avoiding processing of untrusted input data.

# Run jcvi in isolated environments or containers
# Implement access controls to restrict who can submit data to jcvi processes

🧯 If You Can't Patch

  • Isolate jcvi execution in sandboxed environments or containers with minimal privileges
  • Implement network segmentation to restrict jcvi systems from accessing sensitive resources

🔍 How to Verify

Check if Vulnerable:

Check if your code uses jcvi functions that process user input for configuration. Review the vulnerable code at jcvi/apps/base.py lines 2227-2228.

Check Version:

pip show jcvi | grep Version

Verify Fix Applied:

When a patch becomes available, verify by checking that user input is properly sanitized before reaching configuration processing functions.

📡 Detection & Monitoring

Log Indicators:

  • Unusual command execution patterns from jcvi processes
  • Configuration file modifications with suspicious content

Network Indicators:

  • Unexpected outbound connections from jcvi systems
  • Unusual data transfers from genomic analysis systems

SIEM Query:

process_name: 'python' AND cmdline: '*jcvi*' AND (cmdline: '*sh*' OR cmdline: '*bash*' OR cmdline: '*curl*' OR cmdline: '*wget*')

🔗 References

📤 Share & Export