CVE-2019-17206

9.8 CRITICAL

📋 TL;DR

This vulnerability allows remote code execution through insecure deserialization of pickled objects in Frost Ming's rediswrapper library. Attackers can execute arbitrary scripts on systems using vulnerable versions. Any application using rediswrapper before version 0.3.0 is affected.

💻 Affected Systems

Products:
  • Frost Ming rediswrapper (Redis Wrapper)
Versions: All versions before 0.3.0
Operating Systems: All operating systems running Python
Default Config Vulnerable: ⚠️ Yes
Notes: Any application using the vulnerable models.py deserialization functionality is affected regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise with attacker gaining full control over the server, data exfiltration, and lateral movement within the network.

🟠

Likely Case

Remote code execution leading to data theft, service disruption, or installation of backdoors/malware.

🟢

If Mitigated

Limited impact if proper network segmentation, least privilege, and input validation are implemented.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The vulnerability is in the deserialization mechanism, making exploitation straightforward for attackers familiar with Python pickle exploits.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.3.0 and later

Vendor Advisory: https://github.com/frostming/rediswrapper/releases/tag/v0.3.0

Restart Required: Yes

Instructions:

1. Update rediswrapper to version 0.3.0 or later using pip: pip install rediswrapper>=0.3.0
2. Restart all services using rediswrapper
3. Verify the update with: pip show rediswrapper

🔧 Temporary Workarounds

Disable Pickle Deserialization

all

Modify code to avoid using the vulnerable deserialization functions in models.py

# Review and modify models.py to remove or secure pickle.loads() calls

🧯 If You Can't Patch

  • Implement strict network controls to limit access to rediswrapper services
  • Deploy application firewalls with deserialization attack detection rules

🔍 How to Verify

Check if Vulnerable:

Check if rediswrapper version is below 0.3.0 using pip show rediswrapper or inspect requirements.txt

Check Version:

pip show rediswrapper | grep Version

Verify Fix Applied:

Confirm rediswrapper version is 0.3.0 or higher and test deserialization functionality

📡 Detection & Monitoring

Log Indicators:

  • Unusual pickle deserialization errors
  • Suspicious Python process execution
  • Unexpected network connections from rediswrapper processes

Network Indicators:

  • Malformed pickle data sent to rediswrapper endpoints
  • Unexpected outbound connections from affected servers

SIEM Query:

source="*rediswrapper*" AND (event="pickle.loads" OR event="deserialization")

🔗 References

📤 Share & Export