研究人员最近在利用特斯拉Model 3和Model Y的无线钥匙漏洞,轻松解锁汽车、开走逃逸。通过重定向车主的手机或无线遥控钥匙与汽车之间的通信,他们可以欺骗特斯拉汽车的安全系统,使其认为车主就在汽车附近。虽然他是在一款特斯拉车型上演示了这项技术,但是该入侵技术并不是专门针对特斯拉的。今年年初,一位19岁的德国男孩就利用程序漏洞,连续破解了 25辆特斯拉汽车。可以远程控制门窗、灯光、音乐,甚至可以开走。
我们都知道问题出在第三方应用程序上,攻击者利用该应用程序可以访问特斯拉的数据。这使得他们可以锁定和解锁汽车,打开和关闭灯,甚至可以实现无钥匙驾驶。由于第三方数据记录软件的错误配置,本地特斯拉应用程序中的所有功能都可用了。
关于特斯拉事件的首次公开回应
大多数现代车辆都配备了特殊的远程信息处理模块。内置SIM卡的电子控制单元向制造商提供车辆的位置,警告车主即将进行的车辆检查,甚至可以联系紧急服务。此外,车主还能获得一些较为方便的功能,比如查看车辆位置、控制门锁、远程打开温度控制,甚至自动泊车。所有这些都是通过使用移动应用程序实现的。
典型配套应用程序的界面
但是,当所有这些功能都可以在汽车制造商的应用程序中使用时,人们为什么还需要第三方应用程序呢?
智能汽车自带的应用根本无法满足现代车主对功能的需求。例如,有些用户希望看到燃料/能源消耗如何根据他们的路线变化。有些人想在早上他们的车内暖和一些。还有一些人不喜欢他们需要为不同的汽车品牌使用多个移动应用程序,他们希望通过一个通用应用程序来管理所有这些应用程序。
那么,会出什么问题呢?在生活的其他领域也会发生同样的事情。使用汽车需要钥匙,但在对智能汽车来说,只需登录名或电子邮件和密码即可。如果汽车制造商的后端收到了这些证书,它就会向车主的车辆发送一个命令。它们将直接从汽车制造商的原生应用程序转移,但第三方应用程序可以要求用户提供原始凭证,并代表他们将它们发送到汽车制造商的API。
应用程序和车辆之间的通信
但凡事都有两面性,其风险是显而易见的:例如,第三方可以获得解锁汽车的能力,或者代表车主追踪汽车的所有移动轨迹。
卡巴斯基的分析师们对移动应用程序、开源软件和网络服务进行了分析,研究范围包括155个最受欢迎的解决方案,这些解决方案需要都车主的凭据(登录和密码对或API密钥)才能与车辆交互。在开放存储库中总共发现了69个移动应用程序和81个解决方案,比如各种编程语言的API客户端。调查结果还包括网络服务,以及其他一些有趣的东西。
应用程序类型
移动应用程序
让我们从普通用户最容易访问和理解的移动应用开始。如果仔细观察这些应用程序的功能介绍,它们往往具有强大的便利功能,甚至会将与汽车制造商提供的原生应用程序进行比较。
随机应用的介绍信息
对这些介绍的分析表明,超过一半的应用程序没有提及他们在汽车制造商的本地服务中使用了车主的账户。
在使用凭证时不通知用户的应用程序的比例
这里需要注意的重要一点是,排名第二的部分是由明确声明他们的应用程序不存储用户数据,或以加密形式存储数据,或只使用凭据来获取授权令牌的开发者组成的。但是,需要明确的是,你基本上是把你的车钥匙交给一个完全陌生的人,并相信他们的话,因为没有办法验证这些说法。
一些开发人员还建议使用授权令牌而不是用户名和密码,这样看起来更可信。但问题是,这个令牌使得以与用户凭据相同的方式访问汽车成为可能。此外,用户应该再次意识到,所有这些都将自负风险。只有19%的开发者认为有必要提及这一事实并警告用户。
警告用户责任的应用程序比例
用户联系应用程序开发人员的最常见方式通常是通过移动应用商店的评论部分中的反馈。但是,如果问题更严重,需要立即回应怎么办?在这里我们要感谢应用商店和他们的上传规则。 86% 的应用程序开发商的联系信息是很容易找到的,尽管它通常只是一封没有任何附加信息的电子邮件。但是对于某些应用程序,搜索可能会导致已删除的社交网络页面或没有联系人的存根页面。
与可用联系人共享应用程序
基于此,很明显,这些应用程序大多是由爱好者开发的。这其实并非都是坏事。但是,狂热的开发人员没有义务像国家监管机构要求汽车制造商那样,关心你的汽车安全和数据安全。
哪些汽车品牌最常受第三方应用程序控制?我们总共统计了 31 个品牌,前五名如下所示。请注意,某些应用程序可以控制一种以上的汽车品牌,因此提及次数不等于应用程序的总数。
受影响的汽车品牌前五名
特斯拉遥遥领先,其次是日产。电动车车主通常是汽车爱好者,他们似乎对这些应用程序很感兴趣。
说到价格,69款应用中有46款是免费的,或者至少有演示模式。如果一个程序可以在汽车上实现很多功能,并且花费很多钱,那么很可能会有一个免费的对应程序。
免费或付费比例
再加上这类应用程序在Google Play上的下载次数已超过23.9万次,人们不禁会想,究竟有多少人会让陌生人免费使用自己的汽车。
开源 API 客户端和 Web 服务
值得注意的是,稍微高级一点的用户倾向于使用来自GitHub的软件。实际上,很容易检查API客户端是否正在向第三方传输敏感信息。但是如果源代码稍微复杂一点呢?所有用户都会检查代码吗?检查的彻底程度如何?当然,这并不能保证应用程序本身或其组件中没有漏洞。本文第一个链接中的示例很好地说明了这一点。
我们选择的第三种应用程序类型是web服务。这些服务是以商业方式向用户提供的。但是,即使它们可能是由拥有高度熟练的开发人员和完善的管理的组织开发的,授权方案也没有太大的不同。用户仍然需要提供他们的凭证,但是提供给一个web表单,而不是移动应用程序或API端点。
另一种类型的应用程序与其他应用程序稍有不同。这是因为与常规附加组件或经典的“提供用户名和密码——获取令牌”不同,它们被设计为成熟的 B2B 解决方案。 例如,一家公司希望向用户销售应用程序或服务,而不深入研究不同汽车制造商的具体实施。而 B2B 提供商提供的通用解决方案能够与多家汽车制造商进行交互并促进他们的工作,成为一个中间环节。
下面是一个简单的例子:
用户在前面提到的在线第三方服务中注册,这项服务可以帮助估计车辆充电的最佳时间和地点。
该服务的系统不能直接访问汽车制造商的API,因此它将用户的凭证传递给前面提到的B2B提供商。
反过来,B2B提供商将凭据发送给汽车制造商的API,并获得一个授权令牌作为回报,允许直接访问用户的车辆及其数据。
因此,用户名和密码将同时用于第三方应用程序和B2B提供商。在这种情况下,“中间”的所有者和开发者都面临风险,因为用户数据的安全现在取决于另一家公司。
对于汽车制造商来说,这里也存在一些风险,因为这些服务要处理大量用户的数据。所有这些都需要最终用户的同意,但最近的事件表明,成为头条新闻的是汽车品牌,而不是应用程序的名称。
总结
如果你在阅读了这篇文章后决定停止使用这类应用程序,你需要考虑以下几点:
仅仅删除应用程序是不够的,一些服务要求你终止订阅或删除你在其网站上的账户;
必须更改密码;
即使在密码重置后,最好通过制造商的网站(如果有这样的功能)或客户支持服务来撤销访问权限。
当然,并不是所有这些配套应用程序都应该被视为不安全或不可信的。其中一些汽车使用了汽车制造商专门设计的解决方案,例如,出于安全考虑,远程打开车门是不可能的。相反,车辆数据的访问是通过制造商的网站提供的,不需要为特定的应用程序提供凭据。用户还可以在任何时候撤销此访问。不幸的是,目前还没有多少应用能够做到这一点。
因此,应用程序开发者将用户保护放在首位,并采取预防措施,以免损害他们的客户或自己。
卡巴斯基给应用程序开发人员的建议如下:
由于最近通过公共存储库的供应链攻击变得更加频繁,因此开发过程需要加强对外部干扰的保护。采用可确保软件开发过程安全的解决方案,包括在运行时控制应用程序、部署前扫描漏洞、对容器进行例行安全审查和对产品进行反恶意软件测试。
本文翻译自:https://securelist.com/third-party-automotive-app-security/106538/如若转载,请注明原文地址