CVE-2025-10974

6.3 MEDIUM

📋 TL;DR

This CVE describes a remote code execution vulnerability in giantspatula SewKinect's /calculate endpoint due to unsafe deserialization via pickle.loads. Attackers can exploit this by sending malicious payloads to manipulate body_parts/point_cloud parameters, potentially gaining control of affected systems. All users running vulnerable versions of SewKinect are affected.

💻 Affected Systems

Products:
  • giantspatula SewKinect
Versions: All versions up to commit 7fd963ceb3385af3706af02b8a128a13399dffb1
Operating Systems: Any OS running Python
Default Config Vulnerable: ⚠️ Yes
Notes: Rolling release model means no specific version numbers; vulnerability exists in all instances before the fix commit.

⚠️ 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

Remote attacker gains full system control, executes arbitrary code, installs malware, or exfiltrates sensitive data.

🟠

Likely Case

Remote code execution leading to service disruption, data manipulation, or initial foothold for further attacks.

🟢

If Mitigated

Attack attempts are blocked at network perimeter or application firewall, with no successful exploitation.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploit disclosed publicly; remote unauthenticated attack possible via HTTP requests to /calculate endpoint.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Commit after 7fd963ceb3385af3706af02b8a128a13399dffb1

Vendor Advisory: https://github.com/giantspatula/SewKinect/issues/3

Restart Required: Yes

Instructions:

1. Pull latest code from repository. 2. Verify commit hash is newer than 7fd963ceb3385af3706af02b8a128a13399dffb1. 3. Restart SewKinect service.

🔧 Temporary Workarounds

Network Access Restriction

all

Restrict access to SewKinect /calculate endpoint to trusted IPs only.

Input Validation

all

Implement strict input validation for body_parts/point_cloud parameters before pickle.loads.

🧯 If You Can't Patch

  • Implement WAF rules to block pickle deserialization patterns in HTTP requests.
  • Isolate SewKinect instances in restricted network segments with no internet access.

🔍 How to Verify

Check if Vulnerable:

Check git commit hash: if at or before 7fd963ceb3385af3706af02b8a128a13399dffb1, system is vulnerable.

Check Version:

git log --oneline -1

Verify Fix Applied:

Verify current commit hash is newer than 7fd963ceb3385af3706af02b8a128a13399dffb1.

📡 Detection & Monitoring

Log Indicators:

  • Unusual pickle.loads errors in application logs
  • HTTP requests to /calculate with large or malformed payloads

Network Indicators:

  • HTTP POST requests to /calculate endpoint with pickle serialized data

SIEM Query:

source="sewkinect.log" AND "pickle.loads" AND error

🔗 References

📤 Share & Export