{"uuid": "0ceecbdb-9dff-4f41-9929-e87c83ef5d95", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "2a075640-a300-48a4-bb44-bc6130783b9b", "vulnerability": "CVE-2018-16864", "type": "published-proof-of-concept", "source": "https://t.me/novitoll_ch/22", "content": "\"Surprised by the heavy usage of alloca() in journald\" @ Qualys lab\n\nCVE-2019-6454 (CVSSv3 7/10) - systemd D-Bus (sd-bus): Insufficient input validation in bus_process_object() resulting in PID 1 crash\n\n\u041a\u0430\u043a \u0438 root-cause \u043f\u0440\u043e\u0448\u043b\u044b\u0445 systemd CVE-2018-16864/16865/16866, \u0433\u0434\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u0432 `alloca()` (\"alloc mem in stack that is auto-freed\"), \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a Stack Clash --- \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0432\u044b\u0448\u0435\u043b RHEL7 errata \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c systemd D-bus [1], \u0433\u0434\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e (AV=local) \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043a\u0440\u044d\u0448\u0430\u0442\u044c PID=1 (systemd) \u0438\u0437-\u0437\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0438\u043d\u043f\u0443\u0442. \u0412 PR \u043e\u0434\u0438\u043d \u0447\u0443\u0432\u0430\u043a, \u043a\u0441\u0442\u0430\u0442\u0438, \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e sd-bus \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0441\u043b\u0430\u0431\u043e \u043f\u043e\u043a\u0440\u044b\u0442\u0430 OSS-fuzzing [2], \u0447\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u0431 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0432\u044b\u0445 \u0431\u0430\u0433\u043e\u0432 \u0432 systemd.\n\n\u0427\u0442\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0435\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 BDFL systemd (@poettering):\n\n- added 64 bytes of string length validation of D-Bus path [3]\n- used heap-allocation malloc() wrapper (systemd `new()`) instead of stack alloca() wrapper (systemd `newa()`) [4]\n\n25 \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434, BDFL of systemd \u0437\u0430\u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043b \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u043a\u043e\u0434\u0430 systemd, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c new \u0432\u043c\u0435\u0441\u0442\u043e alloca [5], \u0433\u0434\u0435 \u043b\u0438\u043c\u0438\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u044d\u043a 4 \u041c\u0411 (\u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 RLIMIT_STACK = 8 MB \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0445)\n\n[1] \"D-Bus \u2014 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u0435\u0436\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (IPC), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u0432 OS \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c.\" @ Wiki\n[2] https://storage.googleapis.com/oss-fuzz-coverage/systemd/reports/20190218/linux/src/systemd/src/libsystemd/sd-bus/report.html\n[3] https://github.com/systemd/systemd/pull/11754/files#diff-88d4b05d65f1377f716024145dc65d16R1155\n[4] https://github.com/systemd/systemd/blob/1dea095cdb3ccb88cecaf29b1a12598793e04038/src/basic/alloc-util.h#L17\n[5] https://github.com/systemd/systemd/commit/6e9417f5b4f29938fab1eee2b5edf596cc580452#diff-88d4b05d65f1377f716024145dc65d16\n#cve #systemd", "creation_timestamp": "2019-02-21T02:05:06.000000Z"}