虽然公众可能会将无人机想象成玩具或电影制片人使用的工具,但经济实惠的地理空间、数据收集和诊断技术的进步只会增加它们的受欢迎程度。如今,我们看到无人机出现在许多行业和用例中,例如制造业、农业和监控。考虑到现代无人机的飞行范围超过 10 公里,飞行高度超过 5 公里,操作员在执行任务时可以距离他们的设备数英里。
无人机可用于使用高清摄像头对偏远或危险环境进行目视检查,或与热成像等技术结合使用。其他无人机可与高精度定位和位置相结合,用于勘测、状态监测和检查、监视和搜索救援等情况。在这些关键应用中,所有相关方都希望操作安全可靠并尽可能地管理风险。
正如本系列第一部分所介绍的那样,Nozomi Networks Labs 对 DJI Mavic 3 系列无人机中使用的基于 Wi-Fi 的 QuickTransfer 模式协议进行了安全分析。该协议有助于快速将图像和视频检索到用户的移动设备上。这项研究的主要目的是揭示可能对无人机构成威胁或导致数据泄露的潜在漏洞。调查发现了总共九个需要用户交互(QuickTransfer 模式激活)的漏洞。
虽然第 1 部分解释了从无人机获取固件并解压的过程,但本博客描述了我们对固件的分析以及每个漏洞的严重性和潜在影响。这些漏洞有可能通过利用 QuickTransfer 模式 Wi-Fi 协议来促进未经授权的视频和图片泄露。
DJI 检查了所报告的漏洞并确定了受影响的无人机型号。他们已经解决了九个问题中的七个,认为其余两个不需要修复。因此,发布了两个 CVE,状态为“有争议”。DJI 发布了固件更新,以解决每个受影响的无人机型号所发现的问题:
-
Mavic 3 Pro:v01.01.0300
-
Mavic 3:v01.00.1200
-
Mavic 3 经典版 v01.00.0500
-
Mavic 3 Enterprise v07.01.10.03
-
Matrice 300 v57.00.01.00
-
Matrice M30 V07.01.0022
-
Mini 3 Pro v01.00.0620
服务分析与仿真
获取并解压固件后,我们的第一步是分析init 脚本(包括init.rc和所有导入的配置脚本),以识别无人机上运行的服务,构成潜在的攻击面。特别令人感兴趣的是那些向外部公开功能的服务(套接字连接、文件上传、HTTP API 等),因为它们为相邻的攻击者(例如,利用 QuickTransfer 模式的移动设备上的恶意应用程序)提供了可利用的攻击面。随后,进行了两种类型的分析:
静态分析:二进制文件的逆向工程
动态分析:运行时调试服务
鉴于 Mavic 3 固件是定制的 Android 版本,因此通过在经过微调的Android 模拟器中执行目标二进制文件可以促进动态分析。这种方法可以使用strace和gdb等工具跟踪和分析值得注意的服务。
Wi-Fi连接
QuickTransfer 模式协议在无人机和移动设备之间创建 Wi-Fi 连接。为了启动 Wi-Fi 会话,无人机在不飞行时提供基于 WPA2 的接入点,移动设备可通过 DJI Fly 应用程序访问该接入点。这代表了所有 DJI 无人机上的标准通信系统。图 1 显示了检测到的 DJI Mini 3 Pro 接入点的示例。
图 1. DJI Mini 3 Pro 公开的 Wi-Fi 接入点。
连接密码由无人机生成,并通过蓝牙与移动设备安全交换。分析无人机的固件初始化脚本后,可以发现负责管理 WiFi 连接的服务是从位于/system/bin/dji_network 的二进制文件执行的,并在启动过程中启动(图 2)。
图2. dji_network服务配置。
深入研究二进制文件后,可以发现 Wi-Fi 密码是在无人机初始启动期间随机生成的,此后保持不变。此过程由函数generate_default_passwd()实现,该函数调用libc random()过程四次,如图 3 所示。
图 3.generate_default_password ()函数。
图 3 揭示了第一个漏洞,因为密码是使用十六进制字符集 ([0-9a-f]) 生成的 8 个字符的字符串。使用 8 个字符的密码和 16 个十六进制字符集,只有 40 多亿种可能的密码组合,按照今天的标准,这些组合不足以被视为安全。事实上,借助 Hashcat 工具或类似工具以及 GPU,可以轻松破解这么多的密码组合。使用单个 Nvidia T4 GPU 进行的快速实验表明,Wi-Fi 密码可以在大约 2 小时内破解,最坏的情况大约需要 4 小时,如下所示。
图 4 和图 5 分别展示了攻击方案和对其中一架存在漏洞的 DJI 无人机(本例中为 DJI Mini Pro 3)的破解尝试结果。使用托管在动态生成的云服务器实例上的单个 Nvidia T4 GPU 破解密码大约需要 2 个小时。受到攻击的无人机的 Wi-Fi 密码为 df46c50a。
图4.攻击QuickTransfer模式的Wi-Fi连接。
图5.QuickTransfer Wi-Fi密码破解。
该漏洞的 CVE ID 为CVE-2023-6951,CVSS 评分为 6.6(AV:A/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N – MEDIUM)。通过利用此问题,位于 Mavic 3 Wi-Fi 网络范围内的攻击者可以在未经任何授权的情况下与无人机建立连接。随后,攻击者可以与无人机互动,可能利用其他漏洞来破坏其安全性。
FTP 服务
我们在研究中检查的攻击面之一是无人机上运行的 FTP 服务,该服务无需身份验证即可访问加密的诊断数据。通过在 Android 模拟器上对运行该服务的服务进行模糊测试,发现了由格式错误的SIZE请求触发的持续拒绝服务攻击。纠正此问题需要重新启动无人机设备以正确重启服务。
鉴于 FTP 服务仅用于诊断目的,其可用性可能不会被视为影响很大,尽管为该漏洞分配了 CVE(CVE-2023-6950)且 CVSS 评分为 3.0(AV:A/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:L – 低),但 DJI 选择不解决该漏洞。这一决定背后的理由是该服务仅用于诊断目的,仅提供对加密数据的访问。因此,该漏洞已被归类为“有争议”。
vtwo_sdk服务
vtwo_sdk守护进程服务通过/system/bin/dji_vtwo_sdk二进制文件实例化。此服务可能用于维护目的,其作为攻击面的重要性源于其以提升的权限(root)执行(如图 6 所示)以及其在端口 10000 上监听 TCP 连接。
图 6. vtwo_sdk服务配置。
这使得它容易受到外部攻击,无论是利用快速传输模式安装在手机上的恶意应用程序,还是未经授权连接到无人机 Wi-Fi 网络的入侵者,利用前面描述的漏洞来检索随机生成的密码(CVE-2023-6951)。
该服务基于自定义的 TLV 协议(类型-长度-值)通过 TCP 构建,用于处理外部输入命令。为了识别此协议中的漏洞,我们在 Android 模拟器上对其进行了分析。为了探索潜在的安全问题,我们发起了一项简单的模糊测试活动,旨在发现可能暴露安全漏洞的极端情况。图 7 显示了模糊测试活动期间在模拟器上运行的服务。
图 7. 模糊测试期间检测到vtwo_sdk服务崩溃。
因此,我们发现了六个不同的崩溃,其中三个仅可利用来发起拒绝服务攻击(CVE-2023-6948、CVE-2023-51452、CVE-2023-51453),这归因于 Android FORTIFY 安全功能强制执行的健全性检查。对于这些漏洞,CVSS 基本评分为 3.0(AV:A/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:L – 低)。
其余三起崩溃事件涉及两个越界写入问题和一个数组索引越界漏洞。根据攻击者的熟练程度,这些原语可能会导致任意代码执行或信息泄露,最终导致无人机完全被攻陷,这要归功于授予 vtwo_sdk 服务的提升权限。
对于这三个漏洞(CVE-2023-51454、CVE-2023-51455、CVE-2023-51456),CVSS 评分为 6.8(AV:A/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H – MEDIUM)。
HTTP 服务
最后一个要考虑的攻击面是运行在端口 80 上的 HTTP 服务,可以通过 QuickTransfer 连接的移动设备访问。分析固件映像的 init 脚本后,确定该服务是在二进制文件/system/bin/dji_http_server中实现的。
通过对二进制文件进行逆向工程,我们发现 HTTP 服务包含一个未经身份验证的 API,可以扫描无人机的内存并从中下载图片和视频。由于 DJI Fly 应用程序和无人机上的 HTTP 服务器之间缺乏身份验证,因此 API 容易受到滥用,从而允许未经授权从无人机中窃取媒体。
鉴于这些问题,大疆已向 DJI 通报了关键功能缺失身份验证漏洞,以解决并保护此功能。
更详细地说,HTTP API 可以通过这种方式调用:
v2?storage=[storage_id]&path=[file_path]
在哪里:
-
存储:0 和 1 之间的选择,指定内部或外部(sdcard)无人机内存
-
file_path:要下载的媒体文件的路径,相对于所选的存储
由于生成的文件名在保存到内存时具有标准格式(DCIM/100MEDIA/DJI_xxxx.JPG 或 DCIM/100MEDIA/DJI_xxxx.MP4,其中 xxxx 是增量数字),因此可以猜测文件名并以未经授权的方式下载照片和视频(例如,使用 python 脚本强制文件名路径)。可以从无人机(192.168.2.1)窃取数据的 HTTP 请求示例如下:
GET /v2?storage=1&path=DCIM/100MEDIA/DJI_0005.JPG HTTP/1.1
Host:192.168.2.1:80
User-Agent:python-requests/2.28.1
Accept-Encoding:gzip, deflate
Accept:*/*
Connection:close
图 8 显示了无人机静态 IP 地址(192.168.2.1)上请求文件 DJI_0005.JPG 的未经身份验证的请求如何成功。
图 8.通过未经身份验证的 HTTP 请求下载图像。
利用前面提到的与弱随机 Wi-Fi 密码生成相关的漏洞 (CVE-2023-6951),攻击者可以连接到无人机并滥用此 API(图 9a)。此外,使用 QuickTransfer 安装在移动设备上的恶意应用程序可以悄悄地从无人机中窃取图片和视频,而无需任何特权,除了互联网访问(执行 HTTP 请求所必需),如图 9b 所示。
图 9.通过 HTTP 泄露数据。
该漏洞的官方 CVE ID 为CVE-2023-6949,CVSS 评分为 5.2(AV:A/AC:L/PR:L/UI:R/S:U/C:H/I:N/A:N – MEDIUM)。然而,由于 DJI 不承认这是一个安全问题,因此其状态被标记为“有争议”。这一决定背后的理由是,人们相信纠正弱 Wi-Fi 密码生成(CVE-2023-6951)将消除远程攻击媒介。此外,任何对移动设备的潜在危害都被视为用户的责任。
评估和管理风险
无人机的使用越来越广泛,用途也多种多样。大疆占据了 90% 以上的市场份额,是领先的无人机供应商。鉴于其设备被广泛采用,特别是在专业环境中,确保大疆无人机的安全至关重要。
我们强烈建议用户及时将其设备升级到最新的固件版本,从而保护其数据免受已发现的九个漏洞的潜在安全风险,这些漏洞可能会利用 QuickTransfer 模式 Wi-Fi 协议促进未经授权的视频和图片的泄露。
运营任何类型的无人机的组织还应考虑这些操作和连接的应用程序如何受到网络攻击的影响。如果无人机内部的功能受到损害,这会如何改变特定操作期间的风险暴露?例如,如果在监视或监控工作期间可以打开或关闭照明会怎样?
对于提供将操作从一个操作员传递给另一个操作员等功能的设备,如果未经授权的操作员能够控制该设备,结果会怎样?在多架无人机由多名操作员操作的作业过程中,这种情况会意外发生吗?
所有无人机操作员都必须考虑其操作的位置,明智的做法是考虑如果突然失去控制,风险状况会如何变化,尤其是大规模失控。在考虑数据隐私时,操作员应考虑如何管理与未经授权访问视频或图像相关的风险。最坏的情况可能是敏感镜头泄露,这会危及更广泛的操作并导致风险状况发生意外变化。
在评估和评估风险时,无人机硬件、相关固件和软件不应成为唯一的关注点。无人机操作员环境中的其他设备、程序和流程可能容易受到攻击,从而暴露或扩大攻击面。在评估无人机操作的风险时,组织必须考虑更广泛的基础设施。
与此同时,组织还应考虑第三方无人机的运行会如何影响其业务和运营风险。我们已经看到过机场运营因无人机未经授权入侵而中断的例子。风险管理和安全领导者应该考虑这种入侵会如何影响他们的运营,以及可能需要实施哪些缓解措施来控制和管理这些风险。
DJI Mavic 3 Drone Research Part 2: Vulnerability Analysis
https://www.nozominetworks.com/blog/dji-mavic-3-drone-research-part-2-vulnerability-analysis
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里
原文始发于微信公众号(Ots安全):DJI Mavic 3 无人机研究第 2 部分:漏洞分析