MikroTik 路由器多个漏洞安全通告

发布时间 2019-10-31

漏洞编号和级别


CVE编号:CVE-2019-3976,危险级别:高危,CVSS分值:官方未评定

CVE编号:CVE-2019-3977,危险级别:高危,CVSS分值:官方未评定

CVE编号:CVE-2019-3978,危险级别:高危,CVSS分值:官方未评定

CVE编号:CVE-2019-3979,危险级别:高危,CVSS分值:官方未评定


影响版本


RouterOS Stable 6.45.6 and below

RouterOS Long-term 6.44.5 and below


漏洞概述


MikroTik RouterOS是拉脱维亚MikroTik公司的一套基于Linux开发的路由器操作系统。该系统可部署在PC中,使其提供路由器功能。


MikroTik 路由器中被曝多个漏洞,可导致攻击者获得后门。该利用链始于 DNS 投毒,然后降级所安装的 MikroTik RouterOS 软件的版本,最终启用后门。


漏洞简述如下:


CVE-2019-3976 路径遍历漏洞,该漏洞源于网络系统或产品未能正确地过滤资源或文件路径中的特殊元素。攻击者可利用该漏洞访问受限目录之外的位置。


CVE-2019-3977 该漏洞源于程序没有充分验证更新包下载的来源。攻击者可利用该漏洞获取系统全部的用户名称和密码。


CVE-2019-3978 攻击者可借助8291端口利用该漏洞进行DNS查询,可能造成缓存中毒。


CVE-2019-3979 远程攻击者可借助恶意的响应利用该漏洞污染路由器的DNS缓存。


研究人员建议禁用Winbox,而改用SSH,但已经发现超过50万个Winbox实例面向互联网。


漏洞验证


通过利用以上漏洞,未经验证的远程攻击者能够访问路由器上的端口8291,执行 RouterOS 降级,重新设置系统密码并可能获得 root shell。


漏洞利用过程如下:


1. DNS缓存中毒


DNS服务器在默认禁用的情况下仍有其自身的DNS缓存,DNS查找由“解析器”二进制文件处理,该二进制文件是挂接在RouterOS的Winbox协议中;


禁用的DNS服务器


DNS缓存


发送到Winbox端口的消息可以发送到不同的二进制文件及解析器;


然后调用如下图片中的三条命令(3,4,6)就能允许未经身份验证的远程用户通过路由器向自己选择的DNS服务器发送DNS请求;


命令3、4、6


使用自定义的恶意DNS服务器,攻击者可以将一系列恶意IP地址(包括下载地址)写入到路由器的缓存中,当路由器升级时,将转到攻击者的恶意站点,其提供RouterOS的早期版本。


2. 管理员身份登录


从6.43版开始,MikroTik密码处理机制做了更改,在MikroTik的相关变更日志中:“降级到6.43之前的任何版本,将清除所有用户密码并允许无密码身份验证”。


研究人员说:“当用户安装‘新更新’时,绕过禁止通过更新降级的常规逻辑,并降级到RouterOS 6.41.4,由此管理员密码重置到了默认的空密码,攻击者可以使用管理员身份登录”。


用户检查更新显示changelog


3. 后门启用文件/目录


“6.41.4版本系统存在后门,攻击者可以利用该后门获取完整的busybox shell”,“6.41.4的后门启用文件或目录就是/pckg/option,只要该文件或目录存在,就可以启用后门”,研究人员表示。


4. 创建任意目录


研究人员在软件包中发现另外一个漏洞,该漏洞使攻击者可以在系统上创建任意目录。MikroTik在更新期间处理.NPK文件的方式:一旦遇到签名部分,将停止软件包中SHA-1的计算,这种处理方式导致只解析部分信息字段,可用于在磁盘上的任何位置创建目录。


研究人员编写的一个名为option_npk的工具


修复建议


目前厂商已发布升级补丁以修复漏洞,详情请关注厂商主页:https://mikrotik.com。


参考链接


https://www.securityweek.com/mikrotik-router-vulnerabilities-can-lead-backdoor-creation