CVE-2025-71003
📋 TL;DR
An input validation vulnerability in OneFlow's flow.arange() function allows attackers to trigger a Denial of Service (DoS) by sending specially crafted inputs. This affects systems running OneFlow v0.9.0 where the vulnerable component is exposed. Users of OneFlow for machine learning workflows are primarily impacted.
💻 Affected Systems
- OneFlow
📦 What is this software?
Oneflow by Oneflow
⚠️ Risk & Real-World Impact
Worst Case
Complete service unavailability due to resource exhaustion or crash, disrupting machine learning pipelines and dependent applications.
Likely Case
Service degradation or temporary unavailability affecting specific endpoints using flow.arange() with malicious inputs.
If Mitigated
Minimal impact with proper input validation, rate limiting, and isolation of vulnerable components.
🎯 Exploit Status
Exploitation requires sending crafted input to the vulnerable function, which may be accessible via API endpoints or user inputs.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Not available
Vendor Advisory: https://github.com/Oneflow-Inc/oneflow/issues/10656
Restart Required: No
Instructions:
Monitor the GitHub issue for official patches. Consider upgrading to a future version once a fix is released.
🔧 Temporary Workarounds
Input Validation Wrapper
allImplement custom input validation for flow.arange() parameters to reject malicious inputs.
# Python example: Validate inputs before calling flow.arange()
import oneflow as flow
def safe_arange(start, stop, step):
if not isinstance(start, (int, float)) or not isinstance(stop, (int, float)) or not isinstance(step, (int, float)):
raise ValueError('Invalid input types')
if step == 0:
raise ValueError('Step cannot be zero')
return flow.arange(start, stop, step)
Rate Limiting
allApply rate limiting to endpoints that use flow.arange() to reduce DoS impact.
# Use a rate limiting library or web server configuration
# Example with Flask-Limiter:
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
limiter = Limiter(app, key_func=get_remote_address)
@app.route('/api/arange')
@limiter.limit('10 per minute')
def arange_endpoint():
# Your flow.arange() logic here
pass
🧯 If You Can't Patch
- Isolate the vulnerable component in a sandboxed environment to limit blast radius.
- Implement network-level controls to restrict access to endpoints using flow.arange().
🔍 How to Verify
Check if Vulnerable:
Check if your system uses OneFlow v0.9.0 and calls flow.arange() with user-controlled inputs.
Check Version:
python -c "import oneflow; print(oneflow.__version__)"
Verify Fix Applied:
Test with crafted inputs that previously caused DoS to ensure they are now rejected or handled safely.
📡 Detection & Monitoring
Log Indicators:
- Unusual spikes in resource usage (CPU/memory) related to flow.arange() calls
- Error logs indicating crashes or timeouts in OneFlow processes
Network Indicators:
- High volume of requests to endpoints involving flow.arange()
- Abnormal request patterns with crafted numerical inputs
SIEM Query:
source='application.log' AND (message LIKE '%flow.arange%' AND (message LIKE '%error%' OR message LIKE '%crash%'))