cbcvebase.
CVE-2018-4438
published 2019-04-03

CVE-2018-4438: A logic issue existed resulting in memory corruption. This was addressed with improved state management. This issue affected versions prior to iOS 12.1.1, tvOS…

PriorityP259high8.8CVSS 3.0
AVNACLPRNUIRSUCHIHAH
EXPLOIT
EPSS
5.83%
92.4th percentile
A logic issue existed resulting in memory corruption. This was addressed with improved state management. This issue affected versions prior to iOS 12.1.1, tvOS 12.1.1, watchOS 5.1.2, Safari 12.0.2, iTunes 12.9.2 for Windows, iCloud for Windows 7.9.

Affected

13 ranges
VendorProductVersion rangeFixed in
appleicloud< 7.97.9
appleicloud_for_windows
appleios
appleiphone_os< 12.1.112.1.1
appleitunes< 12.9.212.9.2
appleitunes_12.9.2_for_windows
applesafari< 12.0.212.0.2
applesafari
appletvos< 12.1.112.1.1
appletvos
applewatchos< 5.1.25.1.2
applewatchos
debianwebkit2gtk< webkit2gtk 2.22.3-1 (bookworm)webkit2gtk 2.22.3-1 (bookworm)

Detection & IOCsextracted from sources · hover to see the quote

urlhttps://github.com/WebKit/webkit/blob/9ca43a5d4bd8ff63ee7293cac8748d564bd7fbbd/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h#L3481
  • The exploit requires two global objects (e.g., via an iframe) to bypass the haveABadTime guard. Look for iframe creation combined with cross-frame Object/Proxy construction and prototype chain manipulation on arrays in JavaScript executed within WebKit-based browsers.
  • The exploit abuses Proxy objects inserted into the prototype chain of native Int32/Double arrays. Detect JavaScript that sets __proto__ of an array or array prototype to a Proxy object, particularly across iframe boundaries.
  • The vulnerability is triggered via the HasIndexedProperty DFG node in JavaScriptCore when the array mode is Int32 or Double and a Proxy is in the prototype chain. The JIT incorrectly assumes no side effects for these array types. Monitor for JIT-compiled code paths involving HasIndexedProperty on arrays with non-standard prototype chains.
  • The exploit uses a timed callback (setTimeout ~500ms) after JIT warm-up loop to trigger the corrupted array state. Behavioral detection: look for tight numeric loops over arrays followed by a delayed callback that reads/writes the same array.
  • Processing maliciously crafted web content triggers this vulnerability. Ensure WebKit-based products are updated: iOS 12.1.1, tvOS 12.1.1, watchOS 5.1.2, Safari 12.0.2, iTunes 12.9.2 for Windows, iCloud for Windows 7.9.
  • ·The haveABadTime bypass requires two separate global objects. The exploit only works if a second global object (e.g., same-origin iframe) has NOT already had haveABadTime triggered on it, since subsequent calls to haveABadTime have no effect on already-transitioned VMs.
  • ·The vulnerability is specific to the DFG JIT compiler's abstract interpreter for HasIndexedProperty on Int32/Double/Contiguous/ArrayStorage array modes. SlowPutArrayStorage arrays are not affected by this incorrect no-side-effect assumption.

CVSS provenance

nvdv3.08.8HIGHCVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
nvdv2.06.8MEDIUMAV:N/AC:M/Au:N/C:P/I:P/A:P
osv8.8HIGH
vendor_debian8.8LOW
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.