2018年10月30日,白帽汇安全研究院监测到网络上出现了应用于大量IOT设备的Mini_httpd组件爆出任意文件读取漏洞(CVE-2018-18778),可能影响全球两百多万设备。该漏洞是由于当服务器上的Mini_httpd组件开启vhost模式时,由于没有对http头数据进行安全过滤,导致外网攻击者可发送HOST头为空的的HTTP数据包,触发漏洞,引起任意文件读取。
Mini_httpd是一个微型的Http服务器,在占用系统资源较小的情况下可以保持一定程度的性能(约为Apache的90%),因此广泛被各类IOT(路由器,交换器,摄像头等)作为嵌入式服务器。而包括华为,zyxel,海康威视,树莓派等在内的厂商的旗下设备都曾采用Mini_httpd组件。
概况
Mini_httpd是ACME Labs开发的软件,支持基本的HTTP协议的GET、HEAD、POST方法,也支持CGI和基本的验证功能。是相对比较适合学习使用,其简单实现了一个webserver的功能,因此适合作为个人网站搭建和各类物理设备的管理设置接口,不适宜大型的Web商业场景。
目前FOFA系统最新数据(一年内数据)显示全球范围内共有2579771个Mini_httpd的设备。中国台湾地区使用数量最多,共有423951台,越南第二,共有343538台,哥伦比亚第三,共有320493台,印度第四,共有163121台,巴基斯坦第五,共有95424台。需要注意的是,还有很多处于内网的IOT设备网站并不能统计的到。
全球范围含有Mini_httpd组件的IOT设备分布情况(仅为分布情况,非漏洞影响情况)
中国大陆地区中广东省使用用数量最多,共有15911;北京市第二,共有5772台,辽宁省第三,共有4222台,江苏省市第四,共有2387台,江西省第五,共有1551台。
中国大陆地区含有Mini_httpd组件的IOT设备设备分布情况(仅为分布情况,非漏洞影响情况)
危害等级
高危
漏洞原理
漏洞原因在于Mini_httpd中虚拟主机模式(vhost)有缺陷。
虚拟主机模式并不是默认开启,需要在命令行利用-v参数开启(mini_httpd -v -C mini_httpd.conf)
当虚拟主机模式开启后,网络请求文件的绝对路径为:Host头+url。因此攻击者只要在web端口访问服务器时,设置Host头为空,等同于通知服务器需要某绝对物理路径文件。
只有在vhost值不为0的情况下,才会调用virtual_file函数,进行拼接。virtual_file函数中的snprintf函数拼接host+url。
接着,会调用do_file函数,该函数功能是记录日志,并读取Host拼接后的文件输出给用户(客户端或web端)。此时,攻击者就可以直接看到返回的敏感文件数据。
do_file函数中的open函数根据绝对路径读取文件
最后的文件读取效果如下图所示。
直接读取/etc/passwd文件
而从官方发布的补丁来看,可以发现是由于安全过滤条件的缺失导致的漏洞。
可以看到补丁新添加了过滤条件,对0字节进行了过滤
漏洞影响目前漏洞影响版本号包括:
Mini_httpd 1.30版本之前
影响范围
暂无
漏洞POC
目前FOFA客户端平台已经更新CVE-2018-18778检测POC。
CVE-2018-18778 POC截图
CVE编号
CVE-2018-18778
修复建议
1、在打补丁前暂时下线设备。
2、安装最新的版本,新版本官网下载地址:http://www.acme.com/software/mini_httpd/
参考
[1] https://acme.com/software/mini_httpd/
白帽汇从事信息安全,专注于安全大数据、企业威胁情报。
公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。
为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。