Miggo Logo

CVE-2020-28975:
scikit-learn Denial of Service

7.5

CVSS Score
3.1

Basic Information

EPSS Score
0.38697%
CWE
-
Published
5/24/2022
Updated
10/23/2024
KEV Status
No
Technology
TechnologyPython

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
scikit-learnpip>= 0.23.2, < 1.0.11.0.1

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stems from Libsvm's svm_predict_values in svm.cpp, which crashes when _n_support contains invalid values. However, scikit-learn's SVC/SVR predict method (via _validate_for_predict) was responsible for validating model integrity before invoking Libsvm. The absence of checks for _n_support consistency in scikit-learn's pre-patch code allowed crafted models to reach Libsvm's vulnerable function. The fix added validation in _validate_for_predict, confirming these as the critical points.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

svm_pr**i*t_v*lu*s in svm.*pp in Li*svm v***, *s us** in s*ikit-l**rn *.**.* *n* ot**r pro*u*ts, *llows *tt**k*rs to **us* * **ni*l o* s*rvi** (s**m*nt*tion **ult) vi* * *r**t** mo**l SVM (intro*u*** vi* pi*kl*, json, or *ny ot**r mo**l p*rm*n*n** st

Reasoning

T** vuln*r**ility st*ms *rom Li*svm's svm_pr**i*t_v*lu*s in svm.*pp, w*i** *r*s**s w**n _n_support *ont*ins inv*li* v*lu*s. *ow*v*r, s*ikit-l**rn's SV*/SVR pr**i*t m*t*o* (vi* _v*li**t*_*or_pr**i*t) w*s r*sponsi*l* *or v*li**tin* mo**l int**rity ***o