Every CVE Search/ Get API key

CVE-2020-13092

scikit-learn Deserialization of Untrusted Data

9.8 CriticalFix availableDisputed

CVE-2020-13092 is a critical vulnerability (CVSS 9.8) in Scikit-learn, published May 15, 2020. Its validity is disputed. EPSS puts the chance of exploitation in the next 30 days at 3.41%, the 88th percentile. Fixed in scikit-learn 0.23.1.

scikit-learn (aka sklearn) through 0.23.0 can unserialize and execute commands from an untrusted file that is passed to the joblib.load() function, if reduce makes an os.system call. NOTE: third parties dispute this issue because the joblib.load() function is documented as unsafe and it is the user's responsibility to use the function in a secure manner

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
High

Exploit likelihood

3.41%Up 2.3 points since Apr 14, 2021
90%50%10%1%

What each source reports

NVD Score used 9.8

scikit-learn (aka sklearn) through 0.23.0 can unserialize and execute commands from an untrusted file that is passed to the joblib.load() function, if reduce makes an os.system call. NOTE: third parties dispute this issue because the joblib.load() function is documented as unsafe and it is the user's responsibility to use the function in a secure manner

Record
CVE-2020-13092
CVSS 3.1
9.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 2.0
7.5 HighAV:N/AC:L/Au:N/C:P/I:P/A:P
Weakness
CWE-502
Updated
2026-11-02
CVE List No score

scikit-learn (aka sklearn) through 0.23.0 can unserialize and execute commands from an untrusted file that is passed to the joblib.load() function, if reduce makes an os.system call. NOTE: third parties dispute this issue because the joblib.load() function is documented as unsafe and it is the user's responsibility to use the function in a secure manner

Record
CVE-2020-13092
Updated
2026-11-02
EUVDEUVD-2020-0179 No score

scikit-learn (aka sklearn) through 0.23.0 can unserialize and execute commands from an untrusted file that is passed to the joblib.load() function, if reduce makes an os.system call. NOTE: third parties dispute this issue because the joblib.load() function is documented as unsafe and it is the user's responsibility to use the function in a secure manner

Record
EUVD-2020-0179
Updated
2026-11-03
GitHub AdvisoriesGHSA-jjw5-xxj6-pcv5 9.8

scikit-learn Deserialization of Untrusted Data

scikit-learn (aka sklearn) through 0.23.0 can unserialize and execute commands from an untrusted file that is passed to the joblib.load() function, if __reduce__ makes an os.system call. NOTE: third parties dispute this issue because the joblib.load() function is documented as unsafe and it is the user's responsibility to use the function in a secure manner.

Record
GHSA-jjw5-xxj6-pcv5
CVSS 3.1
9.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-502
Updated
2026-11-02
OSV 9.8

scikit-learn (aka sklearn) through 0.23.0 can unserialize and execute commands from an untrusted file that is passed to the joblib.load() function, if reduce makes an os.system call. NOTE: third parties dispute this issue because the joblib.load() function is documented as unsafe and it is the user's responsibility to use the function in a secure manner

Record
CVE-2020-13092
CVSS 3.1
9.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVDEBIAN-CVE-2020-13092 9.8

scikit-learn (aka sklearn) through 0.23.0 can unserialize and execute commands from an untrusted file that is passed to the joblib.load() function, if reduce makes an os.system call. NOTE: third parties dispute this issue because the joblib.load() function is documented as unsafe and it is the user's responsibility to use the function in a secure manner

Record
DEBIAN-CVE-2020-13092
CVSS 3.1
9.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVGHSA-jjw5-xxj6-pcv5 9.8

scikit-learn Deserialization of Untrusted Data

scikit-learn (aka sklearn) through 0.23.0 can unserialize and execute commands from an untrusted file that is passed to the joblib.load() function, if __reduce__ makes an os.system call. NOTE: third parties dispute this issue because the joblib.load() function is documented as unsafe and it is the user's responsibility to use the function in a secure manner.

Record
GHSA-jjw5-xxj6-pcv5
CVSS 3.1
9.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-502
Updated
2026-11-02
OSVPYSEC-2020-107 No score

** DISPUTED ** scikit-learn (aka sklearn) through 0.23.0 can unserialize and execute commands from an untrusted file that is passed to the joblib.load() function, if reduce makes an os.system call. NOTE: third parties dispute this issue because the joblib.load() function is documented as unsafe and it is the user's responsibility to use the function in a secure manner.

Record
PYSEC-2020-107
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
scikit-learn
PyPI
through 0.23.0 None known
scikit-learn
Debian:12
All versions, plus listed versions
1.2.1+dfsg-11.4.1.post1+dfsg-11.4.2+dfsg-11.4.2+dfsg-21.4.2+dfsg-3
Show 16 moreShow less
1.4.2+dfsg-41.4.2+dfsg-51.4.2+dfsg-61.4.2+dfsg-71.4.2+dfsg-81.7.2+dfsg-11.7.2+dfsg-21.7.2+dfsg-31.7.2+dfsg-41.8.0+dfsg-11.8.0+dfsg-21.8.0+dfsg-31.8.0+dfsg-41.8.0+dfsg-51.9.0+dfsg-11.9.0+dfsg-2
None known
scikit-learn
Debian:13
All versions, plus listed versions
1.4.2+dfsg-81.7.2+dfsg-11.7.2+dfsg-21.7.2+dfsg-31.7.2+dfsg-4
Show 7 moreShow less
1.8.0+dfsg-11.8.0+dfsg-21.8.0+dfsg-31.8.0+dfsg-41.8.0+dfsg-51.9.0+dfsg-11.9.0+dfsg-2
None known
scikit-learn
Debian:14
All versions, plus listed versions
1.4.2+dfsg-81.7.2+dfsg-11.7.2+dfsg-21.7.2+dfsg-31.7.2+dfsg-4
Show 7 moreShow less
1.8.0+dfsg-11.8.0+dfsg-21.8.0+dfsg-31.8.0+dfsg-41.8.0+dfsg-51.9.0+dfsg-11.9.0+dfsg-2
None known
scikit-learn
PyPI
through 0.23.0, plus listed versions
0.100.110.120.12.10.13
Show 30 moreShow less
0.13.10.140.14.10.15.00.15.10.15.20.16.00.16.10.170.17.10.180.18.10.18.20.19.00.19.10.19.20.20.00.20.10.20.20.20.30.20.40.21.00.21.10.21.20.21.30.220.22.10.22.20.22.2.post10.9
None known
scikit-learn
PyPI
before 0.23.1, plus listed versions
0.100.110.120.12.10.13
Show 43 moreShow less
0.13.10.140.14.10.14a10.15.00.15.0b10.15.0b20.15.10.15.20.16.00.16.10.16b10.170.17.10.17b10.180.18.10.18.20.18rc20.19.00.19.10.19.20.19b20.20.00.20.10.20.20.20.30.20.40.20rc10.21.00.21.10.21.20.21.30.21rc20.220.22.10.22.20.22.2.post10.22rc2.post10.22rc30.23.00.23.0rc10.9
0.23.1

History

History
WhenChangedSources
2026-11-03aliasesEUVD
2026-11-02createdCVE List, GitHub Advisories, NVD, OSV

References

MoveEnter Open