一周安全资讯 1-1
本周安全学术资讯有车联网安全、AI安全、软件安全、网络安全、IoT安全以及Web与隐私安全,包括针对自动驾驶中深度估计算法的攻击、探索隐藏摄像头等。
@
车联网安全
针对自动驾驶系统中基于深度估计的避障的远程攻击
关键词:深度算法攻击;避障;无人机
该研究利用深度估计算法中立体匹配的弱点和光学成像中的镜头眩光效应,通过投射来自两个互补光源的纯光来注入虚假障碍物的深度,以达到如上图的效果。
首先,深度估计算法基本原理使用仿人类眼球的视觉成像原理(a),在汽车上放置两个相机(b)等价的两个眼球,以算出三角形的边距 (c)。
上图则展示了三种不同攻击的模式,橙色圆圈表示图像中注入光(眩光)的外观,虚线白色圆圈表示未对准相机的光源位置,绿色小圆圈代表球体,P和Q则是攻击中的两个点光源,可以看到三种不同的光束交替情况导致其识别的障碍物(绿色球体)深度不同。
该研究基于这类的攻击方式进行细化攻击实验,从而成功地对自动避障系统造成伤害。
IoT与IIoT安全
Lumos:在陌生环境中识别和定位各种隐藏的物联网设备
关键词:隐藏摄像头;无线信号度量;
该研究的目的是识别在各类陌生环境下隐藏的IoT设备。实验环境与人员模型如上图,在其设定的环境中,攻击者拥有完全控制环境且已经设置好隐藏的通过802.11无线协议进行通信的IoT设备如恒温器、智能充电口等,同时,这些设备的协议、固件内容不会变。用户可使用一个具备监听模式的WiFi接收器如手机、笔记本电脑,嗅探加密的802.11蓝牙数据包。
如上图 Lumos 的架构图。首先,指纹模块为常见的物联网设备离线训练阶段,当用户进入一个陌生的新空间时会运行一个客户端代理嗅探正在进行的 802.11 流量,该模块使用机器学习中的XGBoost算法来进行分类。
然后,通过指纹模块检查与每个设备相关的数据包以识别这些设备。由于用户不知道这些设备在哪个无线信道上运行,因此 Lumos 使用设备感知信道感知机制来决定嗅探哪个信道、何时以及持续多长时间。
最后,Lumos 使用基于 RSSI-VIO 的定位技术通过请求用户在空间周边走一圈来估计每个已识别设备相对于用户的粗略位置。
MPInspector:一种用于评估 IoT 消息传递协议(MP)的安全性的自动化方法
关键词:消息传递协议安全;MQTT;CoAP
该研究主要评估IoT协议的安全性。作者们提出的工具包括五个模块:消息语义提取、交互逻辑提取、属性生成、形式代码翻译和形式验证。
首先,消息语义提取模块接受 MP 流量和 IoT 平台文档作为输入,并提取标准 MP 规范中指定的每个参数的自定义组合语义,分为两部分,一部分是基于流量的语义提取,一部分是基于IoT平台的标准文档的语义提取,其中,基于文档的使用了NLP方法。该模块最终形成一个语义图。
其次,交互逻辑提取模块通过向 MP 实现中的相关方发送消息并监控他们的响应来执行主动模型学习以推断原始状态机。该模块要求用户指定通信配置,以便在学习过程中生成消息。在这两个阶段之后,MPInspector 将从第一个模块中提取的消息语义添加到在第二个模块中推断的原始状态机中的转换消息中,以形成详细的状态机。
第三,属性生成模块使用从详细状态机推断的扩展属性以扩展标准 MP 规范中的元属性,进而形成最终要验证的安全属性。
第四,代码翻译模块将详细的状态机和安全属性翻译成 Tamarin 代码。最后,MPInspector 应用 Tamarin Prover 对 Tamarin 代码进行形式化验证。最终输出是违反安全规则的属性,也就是最终的结果。
网络安全
一种对 VPN 的盲入/通路攻击
关键词:VPN漏洞;盲入/通路攻击;
该研究主要通过两类方式对VPN服务的加密隧道进行攻击。
一种是将恶意数据注入到客户端的网络堆栈(盲入),这意味着攻击者与客户端的网络是相邻的,因为任何网络相邻的攻击者都可以通过ARP 投毒攻击轻松地将自己置于网络路径中。许多客户端的操作系统不会根据数据包进入系统的接口来区分数据包,因此攻击者有可能将看似来自远程应用程序服务器的数据包欺骗到VPN 客户端。
具体的攻击流程如上图,简要概括如下:
- 确定VPN客户端的虚拟IP地址;这里运用到一个原理:网关发送一个带有网关源地址的SYN数据包到受害者主机,如果这个受害者主机的虚拟IP地址是错误的,那么它不会做任何回应,如果是正确的,受害者主机无线网口会发送一个带有虚拟IP地址的RST响应包。
- 使用虚拟IP地址推断激活连接;
- 使用对未经请求的数据包的响应包,来确定激活连接的序列号和确认号,以劫持 TCP 会话。
如上图,另一种是在网络线路上骗取数据包并将其发送到VPN客户端。此类数据包可以从 Internet 上任何位置骗取,但由于该研究假设攻击者可以查看加密的 VPN 流量(以计算加密数据包或字节数),因此,服务器端攻击必须是由在 VPN 服务器和 VPN 客户端之间的路径中的路由器执行。
从上文两类角度提出三种攻击方式:
-
从邻近网络攻击者(例如 WiFi 接入点)的角度推断和劫持 TCP 连接的客户端攻击。
-
服务器端攻击,从 VPN 服务器和 VPN 客户端之间的中间路由器的角度推断和劫持 TCP 连接。
-
从 VPN 服务器和 VPN 客户端之间的中间路由器的角度劫持 DNS 查询的服务器端攻击。
软件安全
使用可能的不变量作为模糊测试工具的反馈
关键词:模糊测试;反馈标志;
该研究主要针对模糊测试工具中,以单纯的代码覆盖率为评判指标所造成的一些程序的关键点无法被测试的问题,他们提出以一些不变的参数值将程序划分以形成一种基于程序状态的反馈机制。
该研究在模糊测试过程之前,通过使用一些基于初始语料库的样例作为输入,输入到测试程序中来学习一些不变量,以对程序空间进行划分。该论文以如下图片所展示的代码为例子阐述他们的思想:
这两部分代码都来自WAV文件格式中libsndfile的ms_adpcm.c,该研究做出的实验表明,很多现有的基于代码覆盖率的模糊测试工具都覆盖到了这个位置,但是并没有触发bug(listing1)究其原因,如果要触发这个bug,需要在程序处于特定的状态,即pms缓冲区(listing1 line8)的分配很小,且pms->blocksize(listing1 line13)的值足够大从而迫使循坏写出listing2中line7-10中的几个数组边界,这就是所谓的特定状态。
他们通过调查Fuzzer在训练过程中保存的参数值,设定他们所认为的上图中的两个listing 的代码的可能的不变参数列在了line4-6之间。该论文通过这些不变的参数将被测代码分为ABCD四个部分,如下图所示:
纵坐标是blockalign的值,横坐标是samples-perblock的值,对称线为二者相等值所构成的线,可以看到,以LI2条件所构成的块区域就是对称线的下方,当blockalign大于samplesperblock时就是上方;以LI1所构成的条件是y=0,2,256,也就是图中A,C两个块;当同时满足LI1和LI2条件,就是块C。
当然,很多不变量没有太大作用,这里该研究提出了三类修剪规则:
第一类是丢弃那些不可能违反规则的变量,例如非字符型整型变量即总是大于或等于0,很难第二类是不相关的变量,为了消除这些关系,该研究为被测试的程序的每个函数,计算可比集:每个变量只属于一个这样的集合,并且将不同集合中的变量组合在一起的不变量丢弃。
第三类是只要不同的不变量有重叠的条件,就可以通过重用以前计算的值来优化它们的运行时的验证。
这里作者们提出两种方式作为语料库以寻找到这些不变量,一种是初始种子,一种是fuzzer的队列中的有价值的种子(发现了新的分支的种子),他们对比了一下两种方式下的效果,发现以队列中的值作为不变量所带来的效果最好。
上图是基于不变量的fuzz工作流程图,分为两个阶段:
-
学习阶段,程序状态变量发出日志记录,为不变量的发掘器提供数据;
-
插桩阶段,增加被测程序的代码,以直接适用于覆盖引导的FUZZER的形式评估合适的不变量。
在 Instrumentation 阶段,在程序函数中编码可能不变的信息,以将它们暴露给基于覆盖率引导的FUZZER,这样,FUZZER就可以针对性的以暴露出的不变量作为指导进行Fuzzing
工具公开在https://github.com/eurecom-s3/invscov
有请客官关注微信公众号信安科研人观看剩下的内容
定期更新安全学术资讯、安全学术复现、以及安全技术分析。希望您提出宝贵的意见!