CVE-2021-33647

7.5 HIGH

📋 TL;DR

CVE-2021-33647 is an out-of-bounds write vulnerability in MindSpore's Tile operator that occurs during shape inference when non-integer data types are processed. This allows attackers to potentially execute arbitrary code or cause denial of service by accessing memory outside allocated buffers. Users of affected MindSpore versions are vulnerable when processing untrusted models or data.

💻 Affected Systems

Products:
  • MindSpore
Versions: Versions 1.1.0, 1.1.1
Operating Systems: All platforms running MindSpore
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability triggers when Tile operator processes non-int32 data types during shape inference.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise if exploited in inference services processing malicious models.

🟠

Likely Case

Denial of service through application crashes or memory corruption when processing malformed input.

🟢

If Mitigated

Limited impact with proper input validation and sandboxing of model processing environments.

🌐 Internet-Facing: MEDIUM - Exploitable if inference services accept external models, but requires specific conditions.
🏢 Internal Only: LOW - Typically requires processing of malicious models within controlled environments.

🎯 Exploit Status

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

Exploitation requires crafting malicious models with specific data types to trigger the vulnerability.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: MindSpore 1.2.0 and later

Vendor Advisory: https://gitee.com/mindspore/community/blob/master/security/security_advisory_list/mssa-2021-008_en.md

Restart Required: Yes

Instructions:

1. Upgrade to MindSpore 1.2.0 or later. 2. Update all dependencies. 3. Restart affected services. 4. Validate models work correctly with new version.

🔧 Temporary Workarounds

Input validation for Tile operator

all

Validate all input data types to Tile operator are int32 before processing

Implement pre-processing checks in model loading code

Sandbox model execution

linux

Run MindSpore inference in isolated containers with limited privileges

docker run --security-opt=no-new-privileges --cap-drop=ALL -u nobody mindspore-container

🧯 If You Can't Patch

  • Restrict model sources to trusted providers only
  • Implement network segmentation to isolate MindSpore services from critical systems

🔍 How to Verify

Check if Vulnerable:

Check MindSpore version: if 1.1.0 or 1.1.1, system is vulnerable.

Check Version:

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

Verify Fix Applied:

Confirm version is 1.2.0 or later and test Tile operator with various data types.

📡 Detection & Monitoring

Log Indicators:

  • Segmentation faults in MindSpore processes
  • Memory access violation errors
  • Unexpected process termination during model inference

Network Indicators:

  • Unusual outbound connections from inference services
  • Increased error rates in model processing APIs

SIEM Query:

process_name:"python" AND (event_id:"1000" OR event_id:"1001") AND process_command_line:"mindspore"

🔗 References

📤 Share & Export