[Community-sigs] Request update to signature for CVE-2018-8298

Dan Bodart dan.bodart at triptease.com
Thu Dec 5 05:52:09 EST 2019


The current signature for CVE-2018-8298 is generating many false positives
for modern websites that use the modern Javascript internationalisation
support under Intl.DateTimeFormat and Intl.NumberFormat. As Google Safe
Browsing uses ClamAV this can cause a whole business to at risk of going
out of business if they rely on web traffic (as most do)

As listed on https://www.exploit-db.com/exploits/45217 the exploit requires
not using the functions as constructors and calling apply directly passing
in the same object 3 times to each of the methods.

Exploit example:

let object = {};
Intl.NumberFormat.apply(object);
Intl.DateTimeFormat.apply(object);
Intl.DateTimeFormat.prototype.formatToParts.apply(object);



The current signature definition is as follows:

VIRUS NAME: Html.Exploit.CVE_2018_8298-6602925-1
TDB: Engine:81-255,Target:3
LOGICAL EXPRESSION: 0&1&2&3
 * SUBSIG ID 0
 +-> OFFSET: ANY
 +-> SIGMOD: NOCASE
 +-> DECODED SUBSIGNATURE:
formatToParts{WILDCARD_ANY_STRING(LENGTH<=25)}.apply
 * SUBSIG ID 1
 +-> OFFSET: ANY
 +-> SIGMOD: NOCASE
 +-> DECODED SUBSIGNATURE:
DateTimeFormat
 * SUBSIG ID 2
 +-> OFFSET: ANY
 +-> SIGMOD: NOCASE
 +-> DECODED SUBSIGNATURE:
NumberFormat
 * SUBSIG ID 3
 +-> OFFSET: ANY
 +-> SIGMOD: NOCASE
 +-> DECODED SUBSIGNATURE:
.prototype


The definition is incredibly broad in its scope

   1. It matches on ".prototype" which virtually every single Javascript
   file in the world would match on. Recommendation remove or combine with
   formatToParts
   2. It matches on any use of "DateTimeFormat" or "NumberFormat".
   Recommendation only match when "apply" and it is prefixed by "Intl" is
   called as this is required by the exploit.
   3. It matched formatToParts followed by up to 25 characters later apply.
   Recommendation don't add a random 25 character gap as it's just security
   theatre and make it explicit on which object



So here is my updated logical signature

VIRUS NAME: Html.Exploit.CVE_2018_8298-6602925-2
LOGICAL EXPRESSION: 0&1&2
 * SUBSIG ID 0
 +-> OFFSET: ANY
 +-> SIGMOD: NOCASE
 +-> DECODED SUBSIGNATURE:
Intl.DateTimeFormat.prototype.formatToParts.apply
 * SUBSIG ID 1
 +-> OFFSET: ANY
 +-> SIGMOD: NOCASE
 +-> DECODED SUBSIGNATURE:
Intl.DateTimeFormat.apply
 * SUBSIG ID 2
 +-> OFFSET: ANY
 +-> SIGMOD: NOCASE
 +-> DECODED SUBSIGNATURE:
Intl.NumberFormat.apply


And here it is encoded:

Html.Exploit.CVE_2018_8298-6602925-2;Engine:81-255,Target:3;0&1&2;496e746c2e4461746554696d65466f726d61742e70726f746f747970652e666f726d6174546f50617274732e6170706c790a::i;496e746c2e4461746554696d65466f726d61742e6170706c790a::i;496e746c2e4e756d626572466f726d61742e6170706c790a::i



Please let me know if I got anything wrong.

Kind regards

Dan


More information about the Community-sigs mailing list