Ruby through 2.2.7, 2.3.x through 2.3.4, and 2.4.x through 2.4.1 can expose arbitrary memory during a JSON.generate call. The issues lies in using strdup in ext/json/ext/generator/generator.c, which will stop after encountering a '\0' byte, returning a pointer to a string of length zero, which is not the length stored in space_len.
{
"unresolved_ranges": [
{
"extracted_events": [
{
"last_affected": "14.04"
},
{
"last_affected": "16.04"
},
{
"last_affected": "17.10"
}
],
"cpes": [
"cpe:2.3:o:canonical:ubuntu_linux:14.04:*:*:*:lts:*:*:*",
"cpe:2.3:o:canonical:ubuntu_linux:16.04:*:*:*:lts:*:*:*",
"cpe:2.3:o:canonical:ubuntu_linux:17.10:*:*:*:*:*:*:*"
],
"source": "CPE_FIELD",
"vendor_product": "canonical:ubuntu_linux"
},
{
"extracted_events": [
{
"last_affected": "8.0"
},
{
"last_affected": "9.0"
}
],
"cpes": [
"cpe:2.3:o:debian:debian_linux:8.0:*:*:*:*:*:*:*",
"cpe:2.3:o:debian:debian_linux:9.0:*:*:*:*:*:*:*"
],
"source": "CPE_FIELD",
"vendor_product": "debian:debian_linux"
},
{
"extracted_events": [
{
"last_affected": "7.0"
}
],
"cpes": [
"cpe:2.3:o:redhat:enterprise_linux_desktop:7.0:*:*:*:*:*:*:*"
],
"source": "CPE_FIELD",
"vendor_product": "redhat:enterprise_linux_desktop"
},
{
"extracted_events": [
{
"last_affected": "7.0"
}
],
"cpes": [
"cpe:2.3:o:redhat:enterprise_linux_server:7.0:*:*:*:*:*:*:*"
],
"source": "CPE_FIELD",
"vendor_product": "redhat:enterprise_linux_server"
},
{
"extracted_events": [
{
"last_affected": "7.4"
},
{
"last_affected": "7.6"
}
],
"cpes": [
"cpe:2.3:o:redhat:enterprise_linux_server_aus:7.4:*:*:*:*:*:*:*",
"cpe:2.3:o:redhat:enterprise_linux_server_aus:7.6:*:*:*:*:*:*:*"
],
"source": "CPE_FIELD",
"vendor_product": "redhat:enterprise_linux_server_aus"
},
{
"extracted_events": [
{
"last_affected": "7.4"
},
{
"last_affected": "7.5"
},
{
"last_affected": "7.6"
}
],
"cpes": [
"cpe:2.3:o:redhat:enterprise_linux_server_eus:7.4:*:*:*:*:*:*:*",
"cpe:2.3:o:redhat:enterprise_linux_server_eus:7.5:*:*:*:*:*:*:*",
"cpe:2.3:o:redhat:enterprise_linux_server_eus:7.6:*:*:*:*:*:*:*"
],
"source": "CPE_FIELD",
"vendor_product": "redhat:enterprise_linux_server_eus"
},
{
"extracted_events": [
{
"last_affected": "7.4"
},
{
"last_affected": "7.6"
}
],
"cpes": [
"cpe:2.3:o:redhat:enterprise_linux_server_tus:7.4:*:*:*:*:*:*:*",
"cpe:2.3:o:redhat:enterprise_linux_server_tus:7.6:*:*:*:*:*:*:*"
],
"source": "CPE_FIELD",
"vendor_product": "redhat:enterprise_linux_server_tus"
},
{
"extracted_events": [
{
"last_affected": "7.0"
}
],
"cpes": [
"cpe:2.3:o:redhat:enterprise_linux_workstation:7.0:*:*:*:*:*:*:*"
],
"source": "CPE_FIELD",
"vendor_product": "redhat:enterprise_linux_workstation"
}
]
}{
"extracted_events": [
{
"introduced": "0"
},
{
"last_affected": "2.2.7"
},
{
"last_affected": "2.3.0"
},
{
"last_affected": "2.3.0-preview1"
},
{
"last_affected": "2.3.0-preview2"
},
{
"last_affected": "2.3.1"
},
{
"last_affected": "2.3.2"
},
{
"last_affected": "2.3.3"
},
{
"last_affected": "2.3.4"
},
{
"last_affected": "2.4.0"
},
{
"last_affected": "2.4.0-preview1"
},
{
"last_affected": "2.4.0-preview2"
},
{
"last_affected": "2.4.0-preview3"
},
{
"last_affected": "2.4.0-rc1"
},
{
"last_affected": "2.4.1"
}
],
"source": "CPE_FIELD",
"cpe": [
"cpe:2.3:a:ruby-lang:ruby:*:*:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.3.0:*:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.3.0:preview1:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.3.0:preview2:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.3.1:*:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.3.2:*:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.3.3:*:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.3.4:*:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.4.0:*:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.4.0:preview1:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.4.0:preview2:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.4.0:preview3:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.4.0:rc1:*:*:*:*:*:*",
"cpe:2.3:a:ruby-lang:ruby:2.4.1:*:*:*:*:*:*:*"
]
}