你可以用U盘黑掉一辆马自达
得益于三年来一系列的已知Bug,马自达汽车的MZD信息娱乐系统可以通过将U盘插入仪表板进行黑客入侵。
这些Bug早在在2014年5月就被Mazda 3 Revolution论坛用户发现了。自此,马自达论坛的车主们一直在使用这些“黑客手段”定制汽车的信息娱乐系统、调整设置或安装应用程序,MZD-AIO-TI(MZD整合调整安装包)就是其中最好的工具之一。
通过之前项目分享的知识积累,Bugcrowd的APP安全工程师Jay Turla搭建了mazda_getInfo,该系统可以让整个“黑客”过程自动化。
研究始于好奇心
Turla表示,在最近自购马自达汽车之后,他就开始了研究。
最初我只是想检查一下我的车,看看有哪些可能的攻击点。”Turla告诉BleepingComputer的记者。“另外,因为个人研究原因我也想测试一下我的车。去年我第一次参加维加斯DEFCON24期间的CarHackingVillage就爱上了,我有几个在菲律宾的朋友也正在研究汽车黑客行为。
Turla的mazda_getInfo项目上周在GitHub上开放,可让使用者在他们的U盘上复制一组脚本,将其插入汽车的仪表板即可在MZDConnect固件之上执行恶意代码。
在测试期间,Turla尝试过执行一些简单的攻击,如在汽车仪表盘上显示文本或显示终端命令。由于MZDConnect是一个基于*NIX的系统,所以任何人都可以创建脚本并执行更多入侵攻击。
在一封电子邮件中,Turla提到了该项目的一些细节。
我做了一些相关调查,包括如何创建APP。我研究了MZD-AIO-TI的工作原理,发现该系统可以通过cmu_dataretrieval.up和dataRetrieval_config.txt执行tweak.sh脚本。因此,我决定创建mazda_getInfo项目,研究证明USB端口是马自达汽车信息娱乐系统的攻击面,通过jci-dialog用两个已知的*nix命令来回显输出就能完成入侵过程。我只是想让侵入过程更简洁高效,以便让更多人知道还有这么回事儿。
Turla表示,MZConnect系统在先前的固件更新后默认禁用了SSH,而他的脚本实际上只是重新启用SSH支持。
USB攻击自动执行
此外,在用户将U盘插入汽车仪表板后,攻击会自动执行。
Turla告诉记者:
无需用户交互,只要将U盘插入汽车的USB端口即可。想像一下在Windows上直接执行脚本的自动播放功能。
虽然自动攻击这点很棒,但缺点也是有的。例如,在脚本执行之前,汽车必须处于ACC模式,或者需要发动机正在运行。这也意味着您不能使用这个信息娱乐系统漏洞来启动或劫持汽车。
尽管如此,Turla承认他的研究还不够到位,同时他也觉得这样的攻击场景也是的确存在的。
他在电子邮件中说:
虽然我还没有做出PoC,但这种攻击是完全可能的。
Turla表示,有些黑客可能会打造出僵尸车队,以下是用于dataRetrieval_config.txt的文件配置示例,Turla通过电子邮件分享了该示例:
CMU_STATUS=no
此外,Turla称他的一名同事认为这些缺陷可能会被滥用,导致马自达汽车上被安装RAT(远程访问木马)。
其他查看了MZDConnect固件的研究人员也赞同这一观点。安全研究员Aris Adamantiadis在Twitter上写道:
汽车多媒体单元(CMU)充满了远程执行程序漏洞。如果将汽车连接到WiFi,你就可以通过网络DBUS对CAN总线进行(只读)访问。
USB攻击漏洞在最近的固件更新中被修复
一切皆有可能,因为Bug可致用户在其信息娱乐系统上执行未经授权的代码。如果攻击者具有编写代码的技能和知识的话,那么“一切”就是字面意思了。
MZF-AIO-TI项目提到,上个月发布的固件版本为59.00.502的MZDConnect已经修复了该USB代码执行漏洞。尚未更新到此版本的汽车最有可能遭到攻击,尽管没有任何报告指出该漏洞被用来执行除调整信息娱乐系统之外的操作。
BleepingComputer已经联系了马自达,并请求他们发表评论,但他们在文章发布之前尚未收到回复。
以下是已知配置了MZDConnect系统的马自达车型列表:
MazdaCX-3
Turla告诉BleepingComputers,他将继续研究汽车漏洞。
Turla说:
我想尝试一下特斯拉ModelS、本田City2017,或是三菱MonteroSport2017,希望我有机会在今年的DEFCON上对展示车辆的仪表板或信息娱乐系统上手测试一番。另外,我还需要点现金,毕竟车可不便宜……所以我觉得还是借朋友的车来测试一下好了。
最后值得一提的是,上周安全研究员AaronGuzman在澳大利亚举行的计算机安全会议上介绍了一种黑入斯巴鲁汽车的方法,马自达有伴儿了。
- FFmpeg_3.2.4+SDL_2.0.5学习(2)视频同步基础
- ubuntu17.04更换主题
- ubuntu17.04新安装之后的软件准备
- 打造一流编辑器vimplus
- ffmpeg+sdl播放类
- 拉丁猪文字游戏
- 在Windows Mobile的控制台应用中使用Notification
- vim使用经验积累
- Spring+Mybatis+Maven+Mysql编程实战
- LD_LIBRARY_PATH和LIBRARY_PATH的区别
- c++11的Condition_variable
- lib 和 dll 的区别与使用, 没有头文件改如何使用
- PhoneFinder--寻找丢失的手机
- 调整进程的最大linux文件描述符
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法