澳大利亚安全研究人员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://example.com:
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
PoC
Moberly发布了PoC 漏洞利用和PoC视频来证明该漏洞。PoC 代码参见:
https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/red-team-tech-notes/-/blob/master/firefox-android-2020/ffssdp.py
PoC 视频如下所示:
https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/red-team-tech-notes/-/raw/master/firefox-android-2020/poc.mp4
漏洞影响和补丁
该漏洞允许用户点击同一网络内的其他用户手机上的链接。漏洞与RCE 漏洞有点类似,同一WiFi 网络内的攻击者可以在与用户零交互的情况下执行非授权的函数。但远程代码执行并不是可以执行任意的函数,而只能执行预先定义好的应用intent。
研究人员将该漏洞提交给了Firefox 团队,Firefox 团队在Firefox 安卓版本v80及更高版本中修复了该漏洞。如果你在安卓手机上使用Firefox 浏览器,那么建议更新到v80及更新的版本。
更多技术细节参见:https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/red-team-tech-notes/-/tree/master/firefox-android-2020
本文转载自:嘶吼专业版,参考及来源:https://thehackernews.com/2020/09/firefox-android-wifi-hacking.html