CVE-2020-13092

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…

published May 15, 2020

CVSS
—
EPSS
3%
Percentile
88.8
In the wild
Unconfirmed
What it is

⚠️ An unserializing snafu in scikit-learn lets untrusted files run commands! Passing the wrong file to joblib.load() can lead to some seriously unexpected results. 😱 This is like a restaurant that serves meals from unmarked takeout containers; you have no idea if the food inside is safe or even edible! If the chef isn’t carefully checking the source of those meals, who knows what could end up on your plate. An attacker could craft a malicious file and, if you’re not careful, it could run arbitrary commands on your system. This could lead to unauthorized access, data loss, or even a complete system takeover. Yikes!

Put simply

This is like a restaurant that serves meals from unmarked takeout containers; you have no idea if the food inside is safe or even edible! If the chef isn’t carefully checking the source of those meals, who knows what could end up on your plate. CVE-2020-13092 arises from the way scikit-learn's joblib.load() function can unserialize data from untrusted sources, allowing for potential execution of arbitrary commands if an object’s __reduce__ method makes a call to os.system.

What to do

An attacker could craft a malicious file and, if you’re not careful, it could run arbitrary commands on your system. This could lead to unauthorized access, data loss, or even a complete system takeover. Yikes! To mitigate this risk, avoid using joblib.load() with untrusted files. If you must use it, ensure you fully understand the source and content of the files you’re loading. Always keep your scikit-learn library updated to the latest version to benefit from any security fixes. You've got this! By being cautious and keeping your libraries updated, you can thwart potential attacks. 🛡️

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.03406 · 88.8th percentile
Published
2020-05-15T18:41Z
EPSS history
Timeline
  • 15 MAY 18:41Z
    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…
    cvelistv5