{"id":"CVE-2026-3989","aliases":["EUVD-2026-11561","GHSA-hvwj-8w5g-28rg","PYSEC-2026-3063"],"status":"published","title":"CVE-2026-3989","description":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization. An attacker can take advantage of this by providing a malicious .pkl file, which will execute the attackers code on the device running the script.","severity":{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-09","score":0.00538,"percentile":0.45571,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-502"],"published":"2026-03-12T11:37:48Z","modified":"2026-10-28T02:30:58Z","fixes":[{"ecosystem":"PyPI","package":"sglang","fixed_in":["0.5.10"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"sglang","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"0.5.9"},{"fixed":"0.5.10"}]}]},{"source":"osv","ecosystem":"PyPI","package":"sglang","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.5.10"}]}],"versions":["0.1.10","0.1.11","0.1.12","0.1.13","0.1.14","0.1.15","0.1.16","0.1.17","0.1.18","0.1.19","0.1.20","0.1.21","0.1.22","0.1.24","0.1.25","0.1.26","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7","0.1.9","0.2.0","0.2.1","0.2.10","0.2.11","0.2.12","0.2.13","0.2.14","0.2.14.post1","0.2.14.post2","0.2.15","0.2.2","0.2.3","0.2.4","0.2.5","0.2.6","0.2.7","0.2.8","0.2.9","0.2.9.post1","0.3.0","0.3.1","0.3.1.post1","0.3.1.post2","0.3.1.post3","0.3.2","0.3.3","0.3.3.post1","0.3.4","0.3.4.post1","0.3.4.post2","0.3.5","0.3.5.post1","0.3.5.post2","0.3.6","0.3.6.post1","0.3.6.post2","0.3.6.post3","0.4.0","0.4.0.post1","0.4.0.post2","0.4.1","0.4.1.post1","0.4.1.post2","0.4.1.post3","0.4.1.post4","0.4.1.post5","0.4.1.post6","0.4.1.post7","0.4.10","0.4.10.post1","0.4.10.post2","0.4.2","0.4.2.post1","0.4.2.post2","0.4.2.post3","0.4.2.post4","0.4.3","0.4.3.post1","0.4.3.post2","0.4.3.post3","0.4.3.post4","0.4.4","0.4.4.post1","0.4.4.post2","0.4.4.post3","0.4.4.post4","0.4.5","0.4.5.post1","0.4.5.post2","0.4.5.post3","0.4.6","0.4.6.post1","0.4.6.post2","0.4.6.post3","0.4.6.post4","0.4.6.post5","0.4.7","0.4.7.post1","0.4.8","0.4.8.post1","0.4.9","0.4.9.post1","0.4.9.post2","0.4.9.post3","0.4.9.post4","0.4.9.post5","0.4.9.post6","0.5.0rc0","0.5.0rc1","0.5.0rc2","0.5.1","0.5.1.post1","0.5.1.post2","0.5.1.post3","0.5.10rc0","0.5.2","0.5.2rc0","0.5.2rc1","0.5.2rc2","0.5.3","0.5.3.post1","0.5.3.post2","0.5.3.post3","0.5.3rc0","0.5.3rc2","0.5.4","0.5.4.post1","0.5.4.post2","0.5.4.post3","0.5.5","0.5.5.post1","0.5.5.post2","0.5.5.post3","0.5.6","0.5.6.post1","0.5.6.post2","0.5.7","0.5.8","0.5.8.post1","0.5.9"]},{"source":"osv","ecosystem":"PyPI","package":"sglang","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.5.10"}]}],"versions":["0.1.10","0.1.11","0.1.12","0.1.13","0.1.14","0.1.15","0.1.16","0.1.17","0.1.18","0.1.19","0.1.20","0.1.21","0.1.22","0.1.24","0.1.25","0.1.26","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7","0.1.9","0.2.0","0.2.1","0.2.10","0.2.11","0.2.12","0.2.13","0.2.14","0.2.14.post1","0.2.14.post2","0.2.15","0.2.2","0.2.3","0.2.4","0.2.5","0.2.6","0.2.7","0.2.8","0.2.9","0.2.9.post1","0.3.0","0.3.1","0.3.1.post1","0.3.1.post2","0.3.1.post3","0.3.2","0.3.3","0.3.3.post1","0.3.4","0.3.4.post1","0.3.4.post2","0.3.5","0.3.5.post1","0.3.5.post2","0.3.6","0.3.6.post1","0.3.6.post2","0.3.6.post3","0.4.0","0.4.0.post1","0.4.0.post2","0.4.1","0.4.1.post1","0.4.1.post2","0.4.1.post3","0.4.1.post4","0.4.1.post5","0.4.1.post6","0.4.1.post7","0.4.10","0.4.10.post1","0.4.10.post2","0.4.2","0.4.2.post1","0.4.2.post2","0.4.2.post3","0.4.2.post4","0.4.3","0.4.3.post1","0.4.3.post2","0.4.3.post3","0.4.3.post4","0.4.4","0.4.4.post1","0.4.4.post2","0.4.4.post3","0.4.4.post4","0.4.5","0.4.5.post1","0.4.5.post2","0.4.5.post3","0.4.6","0.4.6.post1","0.4.6.post2","0.4.6.post3","0.4.6.post4","0.4.6.post5","0.4.7","0.4.7.post1","0.4.8","0.4.8.post1","0.4.9","0.4.9.post1","0.4.9.post2","0.4.9.post3","0.4.9.post4","0.4.9.post5","0.4.9.post6","0.5.0rc0","0.5.0rc1","0.5.0rc2","0.5.1","0.5.1.post1","0.5.1.post2","0.5.1.post3","0.5.10rc0","0.5.2","0.5.2rc0","0.5.2rc1","0.5.2rc2","0.5.3","0.5.3.post1","0.5.3.post2","0.5.3.post3","0.5.3rc0","0.5.3rc2","0.5.4","0.5.4.post1","0.5.4.post2","0.5.4.post3","0.5.5","0.5.5.post1","0.5.5.post2","0.5.5.post3","0.5.6","0.5.6.post1","0.5.6.post2","0.5.7","0.5.8","0.5.8.post1","0.5.9"]}],"products":[{"vendor":"lmsys","product":"sglang"},{"vendor":"sgl-project","product":"sglang"},{"vendor":"sglang","product":"sglang"}],"references":[{"url":"https://github.com/sgl-project/sglang/blob/main/scripts/playground/replay_request_dump.py","tags":["Product","web"]},{"url":"https://orca.security/resources/blog/sglang-llm-framework-rce-vulnerabilities/","tags":["Exploit","Third Party Advisory","article"]},{"url":"https://github.com/sgl-project/sglang/releases/tag/v0.5.10","tags":["Release Notes","web"]},{"url":"https://github.com/sgl-project/sglang/pull/20904","tags":["Issue Tracking","Patch","fix","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-3989","tags":["advisory"]},{"url":"https://orca.security/resources/blog/sglang-llm-framework-rce-vulnerabilities","tags":["web"]},{"url":"https://github.com/advisories/GHSA-hvwj-8w5g-28rg","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/3xxx/CVE-2026-3989.json","tags":["advisory"]},{"url":"https://github.com/sgl-project/sglang","tags":["package"]},{"url":"https://pypi.org/project/sglang","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-3989","title":"CVE-2026-3989","description":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization. An attacker can take advantage of this by providing a malicious .pkl file, which will execute the attackers code on the device running the script.","status":"published","published":"2026-03-12T11:37:48.314Z","modified":"2026-04-07T18:46:48.636Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high","assessor":"adp"}],"updated_at":"2026-11-02T13:49:09.229322Z"}],"euvd":[{"id":"EUVD-2026-11561","description":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization. An attacker can take advantage of this by providing a malicious .pkl file, which will execute the attackers code on the device running the script.","status":"published","published":"2026-03-12T11:37:48Z","modified":"2026-04-07T18:46:48Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T19:25:12.431163Z"}],"ghsa":[{"id":"GHSA-hvwj-8w5g-28rg","title":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization","description":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization. An attacker can take advantage of this by providing a malicious .pkl file, which will execute the attackers code on the device running the script.","status":"published","published":"2026-03-12T12:30:29Z","modified":"2026-04-07T22:14:05Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-502"],"updated_at":"2026-11-02T14:39:51.193071Z"}],"nvd":[{"id":"CVE-2026-3989","description":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization. An attacker can take advantage of this by providing a malicious .pkl file, which will execute the attackers code on the device running the script.","status":"published","published":"2026-03-12T12:15:59.63Z","modified":"2026-08-10T14:32:40.693Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-502"],"updated_at":"2026-11-02T14:12:09.358914Z"}],"osv":[{"id":"CVE-2026-3989","title":"CVE-2026-3989","description":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization. An attacker can take advantage of this by providing a malicious .pkl file, which will execute the attackers code on the device running the script.","status":"published","published":"2026-03-12T11:37:48.314Z","modified":"2026-10-28T02:30:58.62525143Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:45:03.040464Z"},{"id":"GHSA-hvwj-8w5g-28rg","title":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization","description":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization. An attacker can take advantage of this by providing a malicious .pkl file, which will execute the attackers code on the device running the script.","status":"published","published":"2026-03-12T12:30:29Z","modified":"2026-07-13T16:43:13.408665182Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-502"],"updated_at":"2026-11-02T15:46:49.621585Z"},{"id":"PYSEC-2026-3063","title":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization","description":"SGLangs `replay_request_dump.py` contains an insecure pickle.load() without validation and proper deserialization. An attacker can take advantage of this by providing a malicious .pkl file, which will execute the attackers code on the device running the script.","status":"published","published":"2026-07-13T14:36:42.32588Z","modified":"2026-07-13T16:32:48.453310935Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:52:56.429374Z"}]}}
