9.2crit

CVE-2017-20205

Valve Source SDK Stack-Based Buffer Overflow RCE

Published 12 mo ago · modified 4 mo ago · JSON

CVSS
9.2
v4.0 · CNA
CISA KEV
No
not known exploited
EPSS
0.7%
percentile 53%
Public exploits
0
none known

Summary

Valve's Source SDK (source-sdk-2013)'s ragdoll model parsing logic contains a stack-based buffer overflow vulnerability.The tokenizer function `nexttoken` copies characters from an input string into a fixed-size stack buffer without performing bounds checks. When `ParseKeyValue` processes a collisionpair rule longer than the destination buffer (256 bytes), an overflow of the stack buffer `szToken` can occur and overwrite the function return address. A remote attacker can trigger the vulnerable code by supplying a specially crafted ragdoll model which causes the oversized collisionpair rule to be parsed, resulting in remote code execution on affected clients or servers. Valve has addressed this issue in many of their Source games, but independently-developed games must manually apply patch.

CISA SSVC assessment

Exploitation
none
Automatable
yes
Technical impact
total
Assessed
12 mo ago

Exploit prediction (EPSS)

0.69% probability of exploitation in the next 30 days, higher than 53% of all scored CVEs.

CVSS scores

Assigned byVersionScoreVector
CNA4.09.2CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CNA4.09.2CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

Affected products

  • Valve Software Source SDK (source-sdk-2013)

Classification

Weakness
  • CWE-121 Stack-based Buffer Overflow

References

  • oneupsecurity.com /research/remote-code-execution-in-source-games/ · technical-description, patch
  • github.com /ValveSoftware/source-sdk-2013 · product
  • vulncheck.com /advisories/valve-source-sdk-stack-based-buffer-overflow-rce · third-party-advisory

Sources

vulnwire keeps one entry per vulnerability: the CVE id wins, then GHSA; records that alias each other are merged. Machine-readable: JSON.