CVE-2024-9701

9.8 CRITICAL

📋 TL;DR

This CVE describes a critical Remote Code Execution vulnerability in Kedro's ShelveStore class (version 0.19.8). Attackers can execute arbitrary Python code by crafting malicious payloads that exploit insecure deserialization via Python's pickle module. Any Kedro application using ShelveStore for session data storage is affected.

💻 Affected Systems

Products:
  • Kedro
Versions: 0.19.8
Operating Systems: All platforms running Python
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects applications using ShelveStore class for data storage. Other Kedro storage backends are not vulnerable.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full system compromise allowing attacker to execute arbitrary commands, steal sensitive data, install malware, or pivot to other systems.

🟠

Likely Case

Remote code execution leading to data theft, application compromise, and potential lateral movement within the environment.

🟢

If Mitigated

Limited impact if proper network segmentation and access controls prevent exploitation attempts.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

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

Exploitation requires ability to write malicious payload to shelve file, which could be achieved through various attack vectors.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.19.9 or later

Vendor Advisory: https://github.com/kedro-org/kedro/commit/d79fa51de55ac0ccb58cce1a482df1b445f0fe7c

Restart Required: Yes

Instructions:

1. Update Kedro to version 0.19.9 or later using pip: pip install --upgrade kedro==0.19.9
2. Restart all Kedro applications and services
3. Verify the update was successful

🔧 Temporary Workarounds

Disable ShelveStore usage

all

Replace ShelveStore with alternative secure storage backends like PickleStore with proper validation or other serialization methods.

Modify Kedro configuration to use alternative storage classes

Input validation and sanitization

all

Implement strict input validation for any data that could be written to shelve files.

Implement custom validation logic before shelve operations

🧯 If You Can't Patch

  • Implement strict network access controls to limit who can interact with the vulnerable application
  • Monitor shelve file access and modifications for suspicious activity

🔍 How to Verify

Check if Vulnerable:

Check if Kedro version is 0.19.8 and if ShelveStore class is used in the application.

Check Version:

python -c "import kedro; print(kedro.__version__)"

Verify Fix Applied:

Verify Kedro version is 0.19.9 or later and test that malicious payloads no longer execute.

📡 Detection & Monitoring

Log Indicators:

  • Unexpected Python code execution
  • Suspicious file operations on shelve files
  • Errors related to pickle deserialization

Network Indicators:

  • Unusual outbound connections from Kedro application
  • Suspicious file uploads to application endpoints

SIEM Query:

source="kedro" AND (event="pickle.load" OR event="shelve.open") AND result="success"

🔗 References

📤 Share & Export