Cpanel::JSON::XS before 4.80 has 15 Perl JSON flaws
The notice describes decoded-key leakage, stack exhaustion under allow_tags, and missed duplicate non-ASCII bare keys.
Cpanel::JSON::XS versions from 4.33 before 4.80 for Perl miss duplicate non-ASCII bare keys, allowing type confusion under dupkeys_as_arrayref in decode_hv. With allow_barekey, which relaxed enables, a bare key containing a non-ASCII byte is stored as UTF-8 but looked up as raw bytes, so a repeated key escapes the duplicate-key check and replaces the earlier value. From 4.41, under dupkeys_as_arrayref, a bare repeat replaces the array that collects a key's values with a plain value, and the next quoted repeat pushes onto that value as if it were an array. A JSON integer there is dereferenced as a pointer. Untrusted JSON decoded with relaxed and dupkeys_as_arrayref can crash the process or dereference an address chosen by a JSON number.
The notice describes decoded-key leakage, stack exhaustion under allow_tags, and missed duplicate non-ASCII bare keys.
Today 1.2K readers · 1.8K views · 1.4K reads · all time 160K views