Group of Software Security In Progress

Hey Alexa Is This Skill Safe Taking a Closer Look at the Alexa Skill Ecosystem

作者:Christopher Lentzsch, Sheel Jayesh Shah, Benjamin Andow, Martin Degeling, Anupam Das and William Enck

单位:Ruhr-Universitat Bochum, North Carolina State University, Google Inc.

会议:NDSS 2021

链接:https://www.ndss-symposium.org/ndss-paper/hey-alexa-is-this-skill-safe-taking-a-closer-look-at-the-alexa-skill-ecosystem/

0 Abstract

Amazon Alexa语音助手能够使用户通过语言对话来直接与各种web服务进行交互,并且提供了一系列选项使得开发人员能够创建在Alexa上运行的第三方应用(即技能skill)。

本文作者对Alexa的技能生态系统进行了首次大规模的安全分析,发现了一些潜在漏洞和审计缺陷,使得攻击者能够发布恶意的技能来欺骗用户以及用户隐私信息泄露等危害。

1 Introduction

本文作者主要针对如下问题:

RQ1:当前技能审查阶段存在什么限制? RQ2:Skill Squatting(技能蹲起)攻击效果如何? RQ3:要求开发者提供一个隐私策略链接的政策有效吗?

在这篇文章中,作者收集了来自7个不同的技能商店的技能进行分析。主要贡献如下:

  • 作者实现了一个针对Alexa技能的大规模的分析,覆盖七个技能商店。
  • 作者深入分析了Amazon Alexa技能的认证流程,并找到了几个潜在的漏洞,使得攻击者能够发布恶意技能。
  • 作者描述了一些常见的用于技能蹲起的技术,包括之前没有提到过的。作者设计了一个半自动化的方法来评估这些技术的有效性。
  • 最后,作者分析这些技能的隐私政策内容有效性。

2 Background

Building an Alexa Skill

Alexa技能主要包含两类

  • 由Amazon开发和维护的本地(local skill)
  • 由第三方人员开发的自定义技能

主要的技能使用流程如图1所示。所有语音识别和转换都是由Alexa在云端处理的。

  1. 当用户向一台Alexa-enabled设备发出对话(激活技能)时,语音信息会被传输到Alexa web服务,通过语音识别和自然语言处理技术来识别匹配技能短语
  2. 然后,web服务向注册技能的后端服务器发送包含相关短语的JSON请求,服务器处理并响应。

Skill Certification Process

当开发者想要提交发布一个新的技能时,Amazon会对该技能进行安全审计,主要包含以下验证要求:

  • 技能符合Alexa政策,例如调用名称不会侵犯现有品牌名称
  • 确保实现正确、完整的语音界面和用户体验
  • 进行功能测试,例如检查技能功能是否与技能描述相匹配
  • 确保隐私政策链接是有效的
  • 确保技能满足外部服务器托管服务的安全要求,例如检查服务器是否响应未经Amazon签发的证书请求

3 Collecting Skill Data

作者首先从七个不同国家(US、UK、AU、CA、DE、JP、FR)的Alexa技能库中收集数据,收集的技能信息包括标题、调用名称、所需权限以及隐私策略链接等。

作者将所有的技能分为21类,并获得了总计90,194个唯一技能。

  • 技能数量分布:英语技能商店(US、UK、AU、CA)提供了11,192个唯一技能,欧洲技能商店(UK、FR、DE)有538个技能;7个国家共有163项相同的技能。
  • 隐私政策链接:平均24.2%的技能会提供隐私策略链接,其中在欧洲商店具有较高的比例。

  • 技能商店重叠:有102名开发者将技能发布到所有7个商店中;在英语技能商店中,有5567名开发者会在全部4个商店中发布技能;每个商店都有独特的技能。

4 Loopholes in Skill Vetting

RQ1:技能审查过程存在哪些缺陷?

Duplicate Skill Invocation Names

Alexa如何从具有相同调用名称的技能中选择一个技能?

Amazon允许第三方的技能使用相同的调用名称,美国技能商店中由9948种技能与其他技能共享相同的调用名称,所有技能商店中只有36055种技能拥有唯一的调用名。用户可以通过名称来安装技能。但是目前还没有研究分析Alexa如何在具有相同调用名称的技能之间进行选择。

  • 作者对具有相同调用名称的技能的其他属性来进行分析,包括技能的评分、平均分、技能的上架时长以及内容。
    • 结果:评分较高的技能被激活的可能性越高(高16倍),其他属性没有看到明显影响。

Finding 1:Amazon Alexa对具有相同调用名的技能激活机制缺乏透明度,用户很容易激活错误的技能,且激活的技能与评分数之间存在正相关关系。

Registering using Well-known Developer Names

攻击者是否可以使用任意开发人员或公司注册技能?(网络钓鱼攻击)

技能界面会显示开发者或公司的名称,但作者发现攻击者能够轻易地模仿任何知名的厂商名称,使得用户被欺骗以为该技能是由合法厂商开发的,而实际上是由攻击者发布的。

  • 作者使用了不同知名公司注册了多种技能。
    • 结果:大多数技能均能够成功发布,例如使用Microsoft、Samsung、Ring和Withings;但是,使用部分厂商名称(如Philips)注册技能时被标记可能侵犯第三方品牌使用权。

    • 此外,在技能信息页面的开发者名称通常为非交互式文本,但Amazon在查看评论的页面为开发商的所有产品提供一个链接,这可能会进一步诱导用户。 > Finding 2:攻击者可以利用知名厂商名称来发布技能以欺骗用户。作者认为这可能是因为Amazon没有采用自动的方法而是采用(不同员工)人工审查的方式来检测这种恶意行为。

Code Change after Approval

在技能认证后,攻击者如何通过修改后端代码诱使用户泄露敏感数据?

Amazon设置了后端服务器托管代码的权限,确保后端服务器仅响应Amazon签名的请求,但是对后端代码更改却没有任何限制,即在认证之后,后端代码可以随时修改。

攻击步骤:攻击者遵循所有注册即能的常规步骤,但在技能验证通过并发布之后,攻击者会更改后端的逻辑,使得用户触发某些意外操作(例如休眠、敏感信息泄露)。

作者构建了一个trip planner技能,要求用户创建一个旅行路线。然后在技能验证和发布之后,作者更改了后端代码,向用户查询他们的电话号码以使得通过短信发送旅行行程。由于最初的技能发布时没有要求提供电话号码,因此减少了Amazon审查时被标记为请求电话号码权限的可能。 > Finding 3:攻击者可以在技能发布之后更改后端服务代码,诱使用户泄露其信息。

Bypassing the Permission Model

Amazon如何协调敏感数据的收集?

Alexa技能可以请求访问Alexa账户个人信息(例如设备地址、用户姓名、电子邮件、电话、支付等)的权限,这些权限需要在用户激活技能时授予。

但是由于Amazon依赖于开发者权限API的声明,而不是验证数据类型本身,因此作者发现开发者可以绕过Amazon个人数据隐私政策的要求和相关权限API,而直接向最终用户请求相关信息。

  • 通过口头交互请求个人数据来避免请求访问个人数据的权限。
    • 例如,将特定地名作为调用短语的一部分,这可能被用来追踪一个人的行踪。
  • 技能开发人员直接要求用户提供个人数据,而不通过权限API请求。
    • 作者构建一种技能,该技能要求用户提供他们的电话号码,而不调用电话号码权限API。尽管使用了Amazon.Phone这种受权限保护的内置数据类型,但并没有被标记为请求敏感属性。 > Finding 4:Alexa没有正确的识别包含敏感数据类型的操作,攻击者可以直接请求受权限API保护的数据类型,而无需请求调用相关权限API。

5 Skill Squatting

RQ2:Skill Squatting攻击的有效性?

Common Approaches for Squatting Skills

作者针对美国商店中,具有唯一调用名的技能的语音距离来计算其语音相似性。具体来说,作者首先使用三种流行的语音算法来生成每个调用名称的语音编码;然后计算所有语音编码之间的Levenshtein距离,来确定调用名称之间的相似性。

  • 大多数调用名称的相似度得分在0.2-0.4范围内。

作者考虑相似性≥ 0.96的调用对(共338个),对其进行人工分析,来过滤发音完全不同的调用对(例如github stats和github status)。最终获得了85个调用对,作者将这些标记为potential squatting attempts。

之后作者对其进行了分类,并发现常见的四种squatting技术:同音字、标点符号、空格、不同拼写(拼写错误)。

作者进一步检查发现目前尚没有大规模的滥用。出现上述问题的原因可能包括:谐音词、英美拼写差异,或者开发人员注册类似调用名以提高调用该技能的可能性。

Finding 5:作者分析发现了四种常见的野外squatting skills模式,但没有发现任何系统性的恶意滥用。这是之前工作没有考虑到的点。

Efficacy of Skill Squatting

为了检查发现的squatting模式的有效性,作者同样使用Amazon Polly语音合成服务来为两个用户账户生成调用短语,并从表8中确定的模式中随机选择技能对。

  • 结果表明,对于拼写问题,拼写正确优先于拼写错误,美式拼写优于英式拼写;对于标点符号场景,不使用标点符号的调用名更优先;对于同音词的场景,单词的原始拼写(而不是谐音)更优先。 > Finding 6:存在某些方法可以提高squatting skill的可能性。

6 Privacy Policy Analysis of Skills

RQ3: 隐私政策链接是否有效?

Availability of Privacy Policies

隐私政策链接在不同技能商店的普遍性?

Amazon没有强制所有技能提供隐私政策链接,而只是针对请求访问一个或多个权限API的技能。

  • 作者发现28.5%的美国商店技能提供了隐私政策技能;绝大部分(93.7%)属于”Smart Home”的技能提供了隐私证词,其次是”Connected Car”,包含隐私策略最少的类别为”Games & Trivia”、”Novelty & Humor”和”Education & Reference”。

  • 作者发现了一个技能指向了一个”file:\/\/”的隐私政策链接,这表明Alexa可能并没有正确审查隐私政策链接。
  • 此外从儿童隐私保护的角度看,Amazon仅在开发时提供了两项提示来帮助开发者决定自己的技能是否针对13岁以下的儿童。然而一旦激活之后,对儿童的技能没有进一步的限制。 > Finding 7:在美国技能商店,只有13.6%的属于”Kids”类别的技能提供了隐私政策。Amazon没有针对13岁以下儿童的技能制定相关隐私政策。

Efficacy of Privacy Policy Requirement

默认情况下,技能不需要任何隐私政策链接,但如果要请求一个或多个权限的技能则必须要由相应的隐私政策链接。表10显示了不同权限被请求的数量。

  • 设备地址在所有商店中都被较多次请求。

  • “shopping”,”music and audio”,”business and finance”,”education and reference”,”lifestyle”等类别技能或请求更多不同的权限,通常为设备地址和邮政编码。
  • 尽管Amazon要求开发者在访问权限API时提供隐私政策链接(除非进行了通知和提醒),但部分却没有提供。 > Finding 8:有部分技能的隐私政策链接存在页面未找到、服务器错误或未注册的域等问题;有些技能指向网站的主页与技能完全无关。

作者利用PoliCheck检查了隐私政策中是否正确的说明了所请求的相关权限。

  • 仅有76.7%(862/1124)的隐私政策说明了所有请求的权限,而其他技能则没有进行正确说明。
    • 例如,33.1%(41/124)获得Full Name权限的技能在隐私政策中没有说明此类数据的收集情况,而各种法规均要求公开说明。 > Finding 9:部分技能的隐私策略没有完全公开与技能请求的权限相关的数据类型。

作者还分析了两个流行的隐私政策模板导致46项技能中的74个权限与政策不一致问题(隐私政策说明存在问题)。

  • BBB模板:有35项技能使用BBB模板,包含62项权限请求,所有均存在不一致问题。
    • BBB模板讨论了数据的收集和共享,但没有披露所收集的数据的类型。
    • 例如,BBB模板包含过于宽泛的语句,例如,”我们只访问/收集您通过电子邮件或其他直接联系方式自愿提供给我们的信息,我们不会将此信息出售或出租给任何人。”
  • FPP模板:有22项技能使用FPP模板,包含31项权限请求,总共有12项权限被标记为不一致。
    • FPP模板为开发者提供了一个关于数据收集的配置规范,但可能由于开发者没有选择所有必需的复选框来覆盖他们的技能行为,或者生成器缺乏表述能力,导致了上述不一致问题。 > Finding 10:隐私政策模板导致46项技能的存在潜在不合规问题。这是由于开发者依赖于这些模板,而这些模板存在缺陷,从而导致了权限与政策的不一致。

7 Limitation

  • 仍然没有覆盖全部的技能数据
  • 更加自动化的检测方法
  • squatting skill技术使用较少的随机技能进行测试