1、基本情况
应用于大量IOT设备的Mini_httpd组件存在任意文件读取漏洞(CVE-2018-18778)。当服务器上的Mini_httpd组件开启vhost模式时,由于没有对http头数据进行安全过滤,导致外网攻击者可发送HOST头为空的HTTP数据包,触发漏洞,读取设备任意文件。
Mini_httpd是一个微型的Http服务器,在占用系统资源较小的情况下可以保持一定程度的性能(约为Apache的90%),因此广泛被各类IOT(路由器,交换器,摄像头等)作为嵌入式服务器。而包括华为,zyxel,海康威视,树莓派等在内的厂商的旗下设备都曾采用Mini_httpd组件。
2、攻击原理
漏洞原因在于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函数根据绝对路径读取文件。
3、影响范围
目前漏洞影响版本号包括:
Mini_httpd 1.30之前版本。
4、处置建议
1)在漏洞未完全修复前,设备使用方应限制问题设备的互联网访问权限。
2)安装最新ACME mini_httpd 1.3版本,新版本官网下载地址:
http://www.acme.com/software/mini_httpd/
5、 参考链接
https://acme.com/software/mini_httpd/