【技术分享】斯巴鲁汽车软件漏洞分析—永不失效的令牌

http://p8.qhimg.com/t01d6fde763d2ce729b.png

图一: 斯巴鲁WRX STI

不久前,一位来自California的汽车信息安全研究员Aaron Guzman,在澳大利亚举行的计算机安全会议上介绍了一种黑入斯巴鲁汽车的方法。他在自己的2017款斯巴鲁WRX STI中发现了数量惊人的软件漏洞,通过这些高危的漏洞,未经授权的攻击者可以自由执行解锁/锁闭车门鸣笛获取车辆位置记录信息等一系列可怕的操作。

Guzman专注于iOS、Android移动应用程序和Web应用程序如何与斯巴鲁的Starlink服务器进行通信。他一共发现了八个漏洞,通过分析发现,当利用这几个漏洞组合使用时,他可以将其他用户也添加到Starlink帐户,从而利用斯巴鲁的移动应用获得汽车的远程控制权。

Starlink系统使用AT&T的4G LTE网络以及Sirius XM汽车互联服务,具有失窃车辆找回、自动碰撞通知、远程服务(包括通过智能终端遥控启动/关闭)及每月车辆诊断报告等功能,值得庆幸的是,Starlink并不能控制制动或加速等动力模块。Starlink还可以与车载主机系统无缝连接,让用户体验多媒体娱乐应用程序,如Pandora电台、iHeartRadio和Aha集成系统等。

http://p8.qhimg.com/t01f3b55ffa1e611b5f.png

图二:斯巴鲁Starlink系统

Guzman发现斯巴鲁的移动应用程序使用随机生成的认证令牌,以便在有用户认证后允许访问,通常来说客户端与服务端采用这样的认证方式是很正常的,根据良好的Web应用安全实践,令牌应在短时间内过期或失效,以防止重用。然而问题是,Starlink允许用户利用令牌永久登录斯巴鲁,也就是说令牌一旦生成,永远不会失效。据 Guzman透露,令牌通过一个URL发送,并且被存放在未被加密的数据库中。

http://p4.qhimg.com/t01b89e4f77f962c43e.png

图三:攻击流程分析

Guzman发现他可以使用该令牌制作远程服务请求,并通过网络发送。斯巴鲁的服务器认为令牌足以确认请求是从授权用户来的,将执行该命令。斯巴鲁服务端不会检查请求是从哪儿或由谁发送的,无论是通过iOS、Android还是其它终端设备,就像要打开一把锁,不管钥匙的所有者是谁,只要有钥匙,就可以开锁。因此,Guzman采取了一个更为冒险的攻击方式,入侵其他用户的邮箱获取个人信息,然后利用这些信息进行注册,斯巴鲁官方会回复邮件确认新用户的注册成功,这些都是在斯巴鲁汽车车主不知情的情况下完成的。

http://p9.qhimg.com/t0152daf5bff8220b09.png

图四:利用漏洞进行攻击

那么攻击是如何展开的呢?有先决条件:攻击者必须知道斯巴鲁用户安装了2017年或更旧版本的Starlink。 Guzman对斯巴鲁进行攻击的关键是捕获生成的令牌,并且有各种各样的方法来实现。

http://p1.qhimg.com/t013d235cc63a887f5c.png

图五:利用XSS捕获令牌

一种方法是利用Guzman发现的跨站脚本(也称为XSS)漏洞,它是常见的Web应用程序开发漏洞之一。我们知道,用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样,如果用户点开了这个链接,恶意脚本就会执行,窃取用户的信息和数据。为了证明风险,Guzman开发了可以抓取令牌的XSS有效数据负载,要求斯巴鲁车主采取一些行为,例如上面提到的诱导用户点击恶意链接等。

另外,攻击者也可以在受害者使用的同一个网络上执行中间人攻击,也即在斯巴鲁用户APP和斯巴鲁官方服务器的通信链路上,攻击者通过拦截和嗅探正常的通信数据,进行分析,从而窃取令牌,或以其它方式(如DNS欺骗等)欺骗受害者交出令牌的副本。做完这些之后,身处数百公里之外的攻击者就能和车主一样,访问斯巴鲁的软件系统并进行针对性的攻击。

下面我们来梳理一下Guzman的攻击过程:试想一下,怎样才能进入一个已经上锁的房间(管理者在房间内部)呢?并且这把门锁只有两种打开方式:

a. 输入了这把锁上注册的用户名和密码,能打开;

b. 用房间管理者提供的钥匙打开。

其实我们可以采取这样的方式:

a. 当第一次使用用户名和密码打开了这把锁后,进入房间,找到房间管理者,让他提供一把钥匙;

b. 那以后每次需要进入这个房间,就用这把钥匙就行了,不用担心旁边有人偷看到自己的用户名和密码。

事实上斯巴鲁的服务器就相当于这个房间,而就相当于管理者提供的钥匙,正常情况下,每进入一次房间,管理者都会更换一次钥匙,也即服务器更换一次令牌,并且随着时间的推移令牌会失效。然而,斯巴鲁服务器提供的令牌永远都不会失效,换句话说,一旦攻击者拿到这把“钥匙”,就可以无限次地进入“房间”,并且不会被“房间”管理者察觉。


安全防护建议

a. 鉴于斯巴鲁用户第一次登录后令牌可是明文保存的,令牌保存时附上一个超时时间expire。比如设置4800秒后登陆无效,则登陆成功时服务端将令牌和有效时间time()+4800这两个参数发送给客户端。这样只需要检查当前时间是否大于expire就能判断登陆是否还有效,不需要手动删除;

b. 同时服务端登陆成功时设置一个有过期时间的session,这样可以通过session是否存在来决定用户的登陆信息是否还有效;

c. 当用户退出登录时,需要通过调用相关程序,让斯巴鲁服务器把这个用户对应的的令牌失效或删除;

d. 斯巴鲁的身份验证过程是依赖于令牌的,如果用户泄漏了自己的URL, 那很大程度上令牌也被别人泄漏了,就相当于钥匙被人复制了一份,所以可采用URL签名机制,防止令牌在通信过程中被窃取。

记得斯巴鲁的广告词是这样说的:“品位,由水平决定”。显然,在汽车迅速智能化、网联化的今天,斯巴鲁在汽车信息安全方面还任重道远,这也给各大汽车制造厂商敲响了警钟:没有绝对安全的汽车,也没有绝对安全的服务端平台,只有不断地创新与升级,才能为汽车安全提供更加可靠的保障。汽车与黑客之间的较量才刚刚开始,汽车厂商们,请戴上白手套、跨上战马,准备接招亮剑吧!

(文章解释权归360智能网联汽车安全实验室所有,未经授权,不得转载!) 

 

参考文献

1https://translate.google.com.hk/translate?act=url&hl=zh-CN&ie=UTF8&prev=_t&sl=en&tl=zh-CN&u=http://www.databreachtoday.com/exclusive-vulnerabilities-could-unlock-brand-new-subarus-a-9970

2.  http://blog.csdn.net/newjueqi/article/details/44062849

3.  http://www.eeworld.com.cn/qcdz/2015/0407/article_10640.html

(完)