cbcvebase.
CVE-2018-4192
published 2018-06-08

CVE-2018-4192: An issue was discovered in certain Apple products. iOS before 11.4 is affected. Safari before 11.1.1 is affected. iCloud before 7.5 on Windows is affected…

PriorityP263high7.5CVSS 3.0
AVNACHPRNUIRSUCHIHAH
EXPLOIT
EPSS
11.76%
96.1th percentile
An issue was discovered in certain Apple products. iOS before 11.4 is affected. Safari before 11.1.1 is affected. iCloud before 7.5 on Windows is affected. iTunes before 12.7.5 on Windows is affected. tvOS before 11.4 is affected. watchOS before 4.3.1 is affected. The issue involves the "WebKit" component. It allows remote attackers to execute arbitrary code via a crafted web site that leverages a race condition.

Affected

13 ranges
VendorProductVersion rangeFixed in
appleicloud< 7.57.5
appleicloud_for_windows——
appleios——
appleiphone_os< 11.411.4
appleitunes< 12.7.512.7.5
appleitunes_12.7.5_for_windows——
applesafari< 11.1.111.1.1
applesafari——
appletvos< 11.411.4
appletvos——
applewatchos< 4.3.14.3.1
applewatchos——
debianwebkit2gtk< webkit2gtk 2.20.1-1 (bookworm)webkit2gtk 2.20.1-1 (bookworm)

Detection & IOCsextracted from sources · hover to see the quote

otherfloatarr_magic = 0x3131313131313131 (as double)↗
otherjsval_magic = 0x3232323232323232 (as double)↗
otherJSCell header: 0x0118270000000200↗
otherFake typed array length/flags: 0x0001000000000010↗
otherCorrupted butterfly length marker: 0x41414141↗
otherStable OOB length marker: 0x42424242↗
bytes↗
0xcc, 0xcc, 0xcc, 0xcc
  • →Exploit triggers a race condition between GC and Array.prototype.reverse() in WebKit/JavaScriptCore to achieve a use-after-free on a butterfly (array storage), resulting in OOB read/write and eventual JIT page overwrite with INT3 (0xCC) shellcode. ↗
  • →Exploit allocates large strings (0x10000 * N bytes) to trigger GC during Array.reverse() racing — monitor for rapid large-string allocation combined with repeated Array.reverse() calls in JS engine. ↗
  • →Exploit overwrites JIT-compiled function code with INT3 bytes (0xCC) at offset +32 from the JIT page base and then calls the function — a crash/signal at a JIT page with 0xCC bytes is a strong indicator of exploitation. ↗
  • →Exploit uses a fake Float64Array object constructed inline in a JS object literal with a crafted JSCell header (structure ID ~0x200, m_type=0x27) — detection of fake typed array construction via addrof/fakeobj primitives is indicative of this exploit class. ↗
  • →The exploit requires loading external helper scripts 'util.js' and 'int64.js' — presence of these files alongside exploit JS, or network requests for them from a web context, may indicate exploit staging. ↗
  • ·The exploit is a proof-of-concept that ends with INT3 (breakpoint) shellcode rather than a full payload — in-the-wild variants would replace the 0xCC bytes with actual shellcode at the same JIT page offset. ↗

CVSS provenance

nvdv3.07.5HIGHCVSS:3.0/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
nvdv2.05.1MEDIUMAV:N/AC:H/Au:N/C:P/I:P/A:P
osv7.5HIGH
vendor_debian7.5LOW
CVEs like this are exactly what “Exploited This Week” covers.

Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.