G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMini

admin 2023年5月27日11:23:30评论46 views字数 3076阅读10分15秒阅读模式

当当当当~ “G.O.S.S.I.P和朋友”系列再次和大家见面了,今天推荐的论文的第一作者王超在G.O.S.S.I.P实习期间表现出了强大的科研潜力,在冲破疫情阻隔前往俄亥俄州立大学 SecLab 之后,迎来了论文成果的大爆发。这篇关于小程序安全的最新工作 TaintMini: Detecting Flow of Sensitive Data in Mini-Programs with Static Taint Analysis 提出了一个基于小程序的污点分析工具,目前已经在 ICSE 2023 上正式发表。

G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMini

一、背景知识

最近几年,一种被称为小程序的新移动计算范式在社交应用中迅速发展,如微信、抖音和百度等都开始有自己的小程序。在这个范式中,超级应用(如微信)允许用户在主应用程序内安装和运行小程序。这些小程序与本地应用程序类似,可以通过各种服务(如社交、电商、和打车)丰富主应用程序的功能,并为移动用户提供生活便利。 小程序的成功可以归因于超级应用收集的丰富数据。例如,像微信这样的超级应用通常会收集大量涉及隐私的数据(如手机号码、用户家庭地址和位置数据)。为了进一步提升用户体验,这些敏感数据可以通过超级应用的 API 供小程序访问。既然隐私敏感数据可以通过超级应用提供的 API 直接被小程序访问,不可避免地,它们可能会被不小心编程的小程序意外泄露,或者被恶意的小程序有意泄露。如何保证小程序的隐私因而备受瞩目。

G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMini

小程序和传统网页、移动应用程序的区别

G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMini

小程序和用户交互时候可能的数据流

二、TaintMini 框架

解决隐私泄露问题的一种广为人知的技术是污点分析。然而,如下表所示,现有的用于移动应用程序的污点分析(如TaintDroid 和 FlowDroid),不能直接应用于小程序,因为小程序的污点分析引入了新的挑战。

G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMini

污点分析技术细节区别

首先,与仅使用一种编程语言实现的程序不同,小程序是用多种语言开发的。例如,微信的小程序通常包含至少两种类型的编程语言:WXML(用于设计用户界面的语言)和 JavaScript。其次,由于大多数小程序都需要响应用户的交互请求,它们的编程逻辑严重依赖于异步事件处理程序,例如从初始应用启动(例如,onLaunch)到服务就绪状态(例如,onReady)。设计一个适用于小程序的污点分析工具需要对这些事件处理的回调函数进行深入研究,定义好不同类型回调函数的分析顺序。第三,小程序本身的数据流是非常复杂的。单单分析小程序页面内的数据流是不够的,因为在用户转换小程序页面时,数据可以在不同页面之间流动。当一个小程序将用户重定向到另一个小程序时(例如,从一个购物小程序重定向到一个支付小程序),数据可以在不同的小程序之间流动。

作者提出了TaintMini,这是一个静态污点分析框架,用于跟踪小程序中跨事件、跨页面和跨应用程序的敏感数据流。TaintMini分别对 4 个领域的数据流进行污点跟踪:

  1. Webview 层(WXML)和逻辑层(JavaScript)之间的数据流;

  2. 异步事件处理程序之间的数据流;

  3. 同一小程序内不同页面之间的数据流;

  4. 不同小程序之间的数据流。

TaintMini的关键思想是构建一个通用数据流图,通过静态分析目标程序的 JavaScript 来展示变量、对象和对象属性之间的数据读写依赖关系。通过进一步考虑 JavaScript 和 WXML 之间的交互,为这些交互的 WXML 标签及其属性分配新的图节点,并将它们合并到 JavaScript 的数据流图中。TaintMini还提出了事件组的新概念(一组在给定小程序逻辑中同步处理的 WXML 和 JavaScript 数据对象),基于此,TaintMini生成了事件组执行顺序图。该图用于确定小程序中任意一对异步事件处理程序是否具有确定的执行顺序或灵活的执行顺序。这些收集到的知识对于决定异步事件处理程序之间各种数据流的可能性至关重要。最后,TaintMini通过分析处理这些操作的小程序 API 的参数来跟踪页面间和应用程序间的数据流(例如,导航到不同页面的wx.navigateTo,或导航到不同小程序的wx.navigateToMiniProgram)。

G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMini

三、实验评估

为了测试TaintMini 的各项性能指标,作者提出了四个问题,并依据实验对四个问题进行了系统性的回答。

Q1. TaintMini是否存在误报(False Positive,FP)和漏报(False Negative,FN)?

TaintMini检测的是小程序发送敏感数据的情况。因此,FP 是错误地识别了一个不发送任何敏感数据的小程序的情况,FN 是未能识别发送敏感数据的小程序的情况。为了验证结果是否有效,作者从每个集合中随机选择了 100 个小程序,对其进行解包,并进行手动代码检查。作者的手动分析结果显示,FP 的数量为零,但 FN 的数量为 5 个(占比5.00%)。

Q2. TaintMini的性能表现如何?

使用TaintMini对收集到的 238,866 个小程序进行性能分析。作者记录了每个小程序的执行时间。根据作者的结果,分析一个小程序的平均时间成本为 3.73 秒。考虑到污点分析本质上是一种耗费计算资源的程序分析技术,作者认为作者的工具性能是可以接受的。

Q3. 有敏感数据流的小程序都是些什么样的小程序?

在测试的 238,866 个小程序中,TaintMini发现了 27,184个(11.38%)包含敏感数据流的小程序。其中许多是工具、购物和教育类的小程序,如下表所示。此外,作者还分析了这些小程序的受欢迎程度。需要注意的是,微信引入了一种机制,允许用户对小程序进行评分,而这些评分只有在一定数量的用户进行评分后才会显示。因此,评分的高低可以反应小程序的受欢迎程度。分析表明大多数小程序没有评分,而排名考前类别是工具、购物和教育。

G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMini

Q4. 这些小程序访问了什么样的敏感数据?

作者进一步检查了小程序如何访问数据以及数据可能的泄露方式。 如下表所示,小程序可能会发送用户的位置数据、用户个人资料、微信运动(健身)数据等到外界。其中,大多数小程序通过网络渠道发送敏感信息(而不是小程序的跨小程序信道)。接下来,作者试图了解特定类型的泄露敏感信息与特定类型的小程序之间的关联。作者发现购物类小程序可能会访问用户的个人资料(以了解用户是谁)、用户的位置和地址(以了解用户的订单送达位置),以及本地存储的信息(例如,收集用户的搜索历史以进行推荐)。

G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMini

实际影响

TaintMini可以用于检测由合谋攻击导致的隐私泄露。根据微信文档的规定:“在特定的微信小程序中收集的用户数据只能在该特定的微信小程序中使用,不得在该特定的微信小程序之外使用,也不能用于任何其他目的,即使您同时注册了两个以上的微信小程序。” 因此,任何违反此规定的小程序将被微信封禁并视为恶意软件,TaintMini可以通过检查是否存在隐私敏感数据通过跨小程序的 API 流向其他的小程序来判断是否有合谋攻击。 如下图展示的就是一个涉嫌合谋攻击的小程序。

G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMini


文章链接:http://web.cse.ohio-state.edu/~lin.3021/file/ICSE23a.pdf
GitHub 链接: https://github.com/OSUSecLab/TaintMini
Slides: http://web.cse.ohio-state.edu/~lin.3021/file/TaintMini_ICSE23_slides.pdf


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMini

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月27日11:23:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-05-26 TaintMinihttp://cn-sec.com/archives/1765531.html

发表评论

匿名网友 填写信息