CVE-2020-22874

9.8 CRITICAL

📋 TL;DR

This integer overflow vulnerability in jsish's Jsi_ObjArraySizer function allows remote attackers to execute arbitrary code by triggering memory corruption. It affects all systems running jsish versions before 3.0.8, potentially leading to complete system compromise.

💻 Affected Systems

Products:
  • jsish (JavaScript Interpreter SHell)
Versions: All versions before 3.0.8
Operating Systems: All platforms running jsish
Default Config Vulnerable: ⚠️ Yes
Notes: Any application or service using jsish as an embedded interpreter is vulnerable

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to full system compromise, data theft, and persistent backdoor installation

🟠

Likely Case

Remote code execution allowing attacker to run arbitrary commands with application privileges

🟢

If Mitigated

Denial of service or application crash if exploit fails or is blocked

🌐 Internet-Facing: HIGH - Remote exploitation possible without authentication
🏢 Internal Only: MEDIUM - Requires internal network access but still exploitable

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: MEDIUM

Integer overflow to RCE requires specific memory manipulation but no authentication

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.0.8 and later

Vendor Advisory: https://github.com/pcmacdon/jsish/commit/858da537bde4de9d8c92466d5a866505310bc328

Restart Required: Yes

Instructions:

1. Update jsish to version 3.0.8 or later using package manager or source compilation. 2. Restart any services using jsish. 3. Recompile any applications embedding jsish with the updated version.

🔧 Temporary Workarounds

Disable jsish execution

all

Remove or disable jsish interpreter if not required

sudo apt remove jsish
sudo yum remove jsish
chmod -x /usr/bin/jsish

Network isolation

linux

Restrict network access to services using jsish

sudo iptables -A INPUT -p tcp --dport [PORT] -j DROP

🧯 If You Can't Patch

  • Implement strict input validation and sanitization for all jsish inputs
  • Run jsish in a sandboxed/containerized environment with minimal privileges

🔍 How to Verify

Check if Vulnerable:

Check jsish version: jsish -v | grep -q '^3\.0\.[0-7]\|^[0-2]\..*' && echo 'VULNERABLE'

Check Version:

jsish -v

Verify Fix Applied:

Verify version is 3.0.8 or later: jsish -v | grep -q '^3\.0\.8\|^3\.[1-9]\|^[4-9]\..*' && echo 'PATCHED'

📡 Detection & Monitoring

Log Indicators:

  • Unexpected process crashes of jsish
  • Memory allocation errors in application logs
  • Unusual network connections from jsish processes

Network Indicators:

  • Exploit attempts with malformed JavaScript/JSON payloads
  • Unexpected outbound connections from jsish hosts

SIEM Query:

process.name:"jsish" AND (event.action:"crash" OR memory.allocation.failed)

🔗 References

📤 Share & Export