{"uuid": "68c85a34-8da3-4d6c-8552-0ce1fc92eb3e", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "2a075640-a300-48a4-bb44-bc6130783b9b", "vulnerability": "CVE-2018-18311", "type": "published-proof-of-concept", "source": "https://t.me/novitoll_ch/19", "content": "\u0411\u044b\u043b \u0432 \u043e\u0442\u043f\u0443\u0441\u043a\u0435.\n\"size_t or int for strlen()\"\n\n*CVE-2018-18311* - Perl \u0434\u043e 5.26.3 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043c\u0435\u0435\u0442 integer-overflow \u0435\u0441\u043b\u0438 \u0432 \u043c\u0430\u043f\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0432\u0432\u0435\u0441\u0442\u0438 `(1&lt;&lt;32) - 1` \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442.\u0435. `$ENV{'K'} = 'V' x 0xffffffff`, \u0442\u043e \u0432 \u043a\u043e\u0434\u0435 perl5/util.c [1] \u0441 `unsigned int` \u0432 64-\u0431\u0438\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043c\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c 2 GB \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0434\u043b\u0438\u043d\u0430 \u0438 \u043a\u043b\u044e\u0447\u0430, \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0434\u0435\u0441\u044c int) \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0437\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0447\u0435\u0440\u0435\u0437 safesysmalloc (\u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0432\u0440\u0430\u043f\u043f\u0435\u0440 malloc).\n\n```\nint nlen, vlen;\n....\nnlen = strlen(nam); // name - ENV key\nvlen = strlen(val); // val - ENV val\nenviron[i] = (char*)safesysmalloc((nlen+vlen+2) * sizeof(char));\n```\n\n[1] - https://github.com/Perl/perl5/blob/41715441c03ba3cca251b6bba5fecee19073b7ae/util.c#L2078-L2129\n#cve #perl", "creation_timestamp": "2019-02-21T01:55:08.000000Z"}