Miggo Logo

CVE-2020-13092: scikit-learn Deserialization of Untrusted Data

9.8

CVSS Score
3.1

Basic Information

EPSS Score
0.74854%
Published
5/24/2022
Updated
10/22/2024
KEV Status
No
Technology
TechnologyPython

Technical Details

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

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability arises from the use of joblib.load() function, which is part of the joblib library, not scikit-learn's own code. While scikit-learn (<=0.23.0) recommends using joblib.load() for model persistence, the function itself resides in the joblib package. The advisory explicitly notes that the risk stems from improper usage of joblib.load() on untrusted data, not from a flaw in scikit-learn's implementation. Since the task requires identifying vulnerable functions within the scikit-learn package, and joblib.load() is external, no scikit-learn-specific functions are directly vulnerable with high confidence.

Vulnerable functions

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

WAF Protection Rules

WAF Rule

s*ikit-l**rn (*k* skl**rn) t*rou** *.**.* **n uns*ri*liz* *n* *x**ut* *omm*n*s *rom *n untrust** *il* t**t is p*ss** to t** `jo*li*.lo**()` *un*tion, i* `__r**u**__` m*k*s *n `os.syst*m **ll`. NOT*: t*ir* p*rti*s *isput* t*is issu* ****us* t** jo*li*

Reasoning

T** vuln*r**ility *ris*s *rom t** us* o* `jo*li*.lo**()` *un*tion, w*i** is p*rt o* t** `jo*li*` li*r*ry, not s*ikit-l**rn's own *o**. W*il* s*ikit-l**rn (<=*.**.*) r**omm*n*s usin* `jo*li*.lo**()` *or mo**l p*rsist*n**, t** *un*tion its*l* r*si**s i