The unserialize() function supported a type code, "S", which was meant to be supported only for APC serialization. This type code allowed arbitrary memory addresses to be accessed as if they were static StringData objects. This issue affected HHVM prior to v4.32.3, between versions 4.33.0 and 4.56.0, 4.57.0, 4.58.0, 4.58.1, 4.59.0, 4.60.0, 4.61.0, 4.62.0.
{
"cpe": [
"cpe:2.3:a:facebook:hhvm:*:*:*:*:*:*:*:*",
"cpe:2.3:a:facebook:hhvm:4.57.0:*:*:*:*:*:*:*",
"cpe:2.3:a:facebook:hhvm:4.58.0:*:*:*:*:*:*:*",
"cpe:2.3:a:facebook:hhvm:4.58.1:*:*:*:*:*:*:*",
"cpe:2.3:a:facebook:hhvm:4.59.0:*:*:*:*:*:*:*",
"cpe:2.3:a:facebook:hhvm:4.60.0:*:*:*:*:*:*:*",
"cpe:2.3:a:facebook:hhvm:4.61.0:*:*:*:*:*:*:*",
"cpe:2.3:a:facebook:hhvm:4.62.0:*:*:*:*:*:*:*"
],
"extracted_events": [
{
"introduced": "0"
},
{
"fixed": "4.32.3"
},
{
"introduced": "4.33.0"
},
{
"fixed": "4.56.1"
},
{
"introduced": "4.57.0"
},
{
"last_affected": "4.57.0"
},
{
"introduced": "4.58.0"
},
{
"last_affected": "4.58.0"
},
{
"introduced": "4.58.1"
},
{
"last_affected": "4.58.1"
},
{
"introduced": "4.59.0"
},
{
"last_affected": "4.59.0"
},
{
"introduced": "4.60.0"
},
{
"last_affected": "4.60.0"
},
{
"introduced": "4.61.0"
},
{
"last_affected": "4.61.0"
},
{
"introduced": "4.62.0"
},
{
"last_affected": "4.62.0"
}
],
"source": [
"CPE_RANGE",
"CPE_STRING",
"REFERENCES"
]
}[
{
"source": "https://github.com/facebook/hhvm/commit/1107228a5128d3ca1c4add8ac1635d933cbbe2e9",
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "296497231455137404359568022051131713760",
"length": 1174.0
},
"deprecated": false,
"id": "CVE-2020-1899-381b6cb0",
"target": {
"function": "VariableUnserializer::matchString",
"file": "hphp/runtime/base/variable-unserializer.cpp"
}
},
{
"source": "https://github.com/facebook/hhvm/commit/55dc2e1650c1e79e67b7f0ef20e51cd2d504a4bb",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"331473762518125757472384839031571060902",
"4158620335537989919269120992316136210",
"37536044244405383633242229082848527784",
"140335216194151808759673220052749435881"
],
"threshold": 0.9
},
"deprecated": false,
"id": "CVE-2020-1899-b7606651",
"target": {
"file": "hphp/runtime/version.h"
}
},
{
"source": "https://github.com/facebook/hhvm/commit/d6af4b525b31c96526b2508642d58dbf5c7d496c",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"286093828909174357221555418457755310879",
"96311019219661911020751373701839576672",
"281574740350394436842520560909858709910",
"140335216194151808759673220052749435881"
],
"threshold": 0.9
},
"deprecated": false,
"id": "CVE-2020-1899-e22db0a3",
"target": {
"file": "hphp/runtime/version.h"
}
},
{
"source": "https://github.com/facebook/hhvm/commit/1107228a5128d3ca1c4add8ac1635d933cbbe2e9",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"305469386172568607995090889127400499800",
"164748909009527016058299342589249192028",
"74505882255080775097042379243447366500",
"321822967609217144650500439140456360480"
],
"threshold": 0.9
},
"deprecated": false,
"id": "CVE-2020-1899-e2430ba7",
"target": {
"file": "hphp/runtime/base/variable-unserializer.cpp"
}
}
]
"2026-07-09T00:21:25Z"
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2020-1899.json"