Advisory: two vulnerabilities found in MikroTik's RouterOS Details ======= Product: MikroTik's RouterOS Vendor URL: https://mikrotik.com/ Vendor Status: fixed version released CVE: - Credit: Qian Chen(@cq674350529) of Qihoo 360 Nirvan Team Product Description ================== RouterOS is the operating system used on the MikroTik's devices, such as switch, router and access point. Description of vulnerabilities ========================== 1. memory corruption The resolver process suffers from a memory corruption vulnerability. By sending a crafted packet, an authenticated remote user can crash the resolver process due to invalid memory access. Against stable 6.46.5, the poc resulted in the following crash dump. # cat /rw/logs/backtrace.log 2020.06.18-14:38:03.27@0: 2020.06.18-14:38:03.27@0: 2020.06.18-14:38:03.28@0: /nova/bin/resolver 2020.06.18-14:38:03.28@0: --- signal=11 -------------------------------------------- 2020.06.18-14:38:03.28@0: 2020.06.18-14:38:03.28@0: eip=0x080508f6 eflags=0x00010206 2020.06.18-14:38:03.28@0: edi=0x08060620 esi=0x08062018 ebp=0x7fe5fd08 esp=0x7fe5fcc0 2020.06.18-14:38:03.28@0: eax=0x0000000c ebx=0x08061c98 ecx=0x77676f00 edx=0x00000005 2020.06.18-14:38:03.28@0: 2020.06.18-14:38:03.28@0: maps: 2020.06.18-14:38:03.28@0: 08048000-0805c000 r-xp 00000000 00:0c 995 /nova/bin/resolver 2020.06.18-14:38:03.28@0: 7763f000-77674000 r-xp 00000000 00:0c 964 /lib/libuClibc-0.9.33.2.so 2020.06.18-14:38:03.28@0: 77678000-77692000 r-xp 00000000 00:0c 960 /lib/libgcc_s.so.1 2020.06.18-14:38:03.28@0: 77693000-776a2000 r-xp 00000000 00:0c 944 /lib/libuc++.so 2020.06.18-14:38:03.28@0: 776a3000-776ab000 r-xp 00000000 00:0c 950 /lib/libubox.so 2020.06.18-14:38:03.28@0: 776ac000-776f8000 r-xp 00000000 00:0c 946 /lib/libumsg.so 2020.06.18-14:38:03.28@0: 776fe000-77705000 r-xp 00000000 00:0c 958 /lib/ld-uClibc-0.9.33.2.so 2020.06.18-14:38:03.28@0: 2020.06.18-14:38:03.28@0: stack: 0x7fe60000 - 0x7fe5fcc0 2020.06.18-14:38:03.28@0: 03 00 00 00 e4 8a 6f 77 38 fd e5 7f e4 fc e5 7f c0 dc 05 08 5c 03 e6 7f 08 fd e5 7f 1f e7 04 08 2020.06.18-14:38:03.28@0: 58 21 06 08 48 06 06 08 f8 1f 06 08 c0 0c 00 00 1c fd e5 7f 28 c7 05 08 02 fb 6f 77 98 1c 06 08 2020.06.18-14:38:03.28@0: 2020.06.18-14:38:03.28@0: code: 0x80508f6 2020.06.18-14:38:03.28@0: 88 10 8b 43 14 40 89 43 14 8b 55 dc 8d 72 04 8b This vulnerability was initially found in long-term 6.44.6, and was fixed in stable 6.47. 2. reachable assertion failure The user process suffers from an assertion failure vulnerability. There is a reachable assertion in the user process. By sending a crafted packet, an authenticated remote user can crash the user process due to assertion failure. Against stable 6.46.5, the poc resulted in the following crash dump. # cat /rw/logs/backtrace.log 2020.06.04-17:56:52.31@0: 2020.06.04-17:56:52.31@0: 2020.06.04-17:56:52.31@0: /nova/bin/user 2020.06.04-17:56:52.31@0: --- signal=6 -------------------------------------------- 2020.06.04-17:56:52.31@0: 2020.06.04-17:56:52.31@0: eip=0x7765a55b eflags=0x00000246 2020.06.04-17:56:52.31@0: edi=0x00fe0001 esi=0x77662200 ebp=0x7fee3790 esp=0x7fee3788 2020.06.04-17:56:52.31@0: eax=0x00000000 ebx=0x000000b4 ecx=0x000000b4 edx=0x00000006 2020.06.04-17:56:52.31@0: 2020.06.04-17:56:52.31@0: maps: 2020.06.04-17:56:52.31@0: 08048000-08059000 r-xp 00000000 00:0c 1002 /nova/bin/user 2020.06.04-17:56:52.31@0: 7762c000-77661000 r-xp 00000000 00:0c 964 /lib/libuClibc-0.9.33.2.so 2020.06.04-17:56:52.31@0: 77665000-7767f000 r-xp 00000000 00:0c 960 /lib/libgcc_s.so.1 2020.06.04-17:56:52.31@0: 77680000-7768f000 r-xp 00000000 00:0c 944 /lib/libuc++.so 2020.06.04-17:56:52.31@0: 77690000-776ad000 r-xp 00000000 00:0c 947 /lib/libucrypto.so 2020.06.04-17:56:52.31@0: 776ae000-776b4000 r-xp 00000000 00:0c 951 /lib/liburadius.so 2020.06.04-17:56:52.31@0: 776b5000-776bd000 r-xp 00000000 00:0c 950 /lib/libubox.so 2020.06.04-17:56:52.31@0: 776be000-776c1000 r-xp 00000000 00:0c 948 /lib/libuxml++.so 2020.06.04-17:56:52.31@0: 776c2000-7770e000 r-xp 00000000 00:0c 946 /lib/libumsg.so 2020.06.04-17:56:52.31@0: 77714000-7771b000 r-xp 00000000 00:0c 958 /lib/ld-uClibc-0.9.33.2.so 2020.06.04-17:56:52.31@0: 2020.06.04-17:56:52.31@0: stack: 0x7fee4000 - 0x7fee3788 2020.06.04-17:56:52.31@0: 00 20 66 77 00 20 66 77 c8 37 ee 7f 77 60 65 77 06 00 00 00 00 22 66 77 20 00 00 00 00 00 00 00 2020.06.04-17:56:52.31@0: 15 00 00 00 28 38 ee 7f c4 37 ee 7f e4 ea 70 77 01 00 00 00 e4 ea 70 77 15 00 00 00 01 00 fe 00 2020.06.04-17:56:52.31@0: 2020.06.04-17:56:52.31@0: code: 0x7765a55b 2020.06.04-17:56:52.31@0: 5b 3d 00 f0 ff ff 76 0e 8b 93 cc ff ff ff f7 d8 This vulnerability was initially found in long-term 6.44.6, and was fixed in stable 6.47. Solution ======== Upgrade to the corresponding latest RouterOS tree version. References ========== [1] https://mikrotik.com/download/changelogs/stable-release-tree