今天的论文推荐开始前,先纠正一下两天前的公众号文章里面的一个巨大的错误,当时文章里面说“一对在 University of Wisconsin-Madison 任教的(兄弟?)教授”,我们的热心读者纷纷指出,这两个人可能是 system 研究社区最有名的一对 couple,欸呀呀我们编辑部真是太孤陋寡闻了(忙着去关心 Cillian Murphy 去了)~
九月第一天,为大家推荐的论文是来自上海交通大学向立瑶老师研究组投稿的关于小程序隐私泄露检测的工作 MiniTracker: Large-Scale Sensitive Information Tracking in Mini Apps,目前该工作已发表于安全领域顶级期刊 TDSC:
一、研究背景
小程序在日常生活中被广泛使用,给人们带来了极大便利。但是很多小程序需要用户提供隐私信息(如手机号、地理位置信息等)后才可使用,比如
-
搜集地理位置信息
-
搜集用户手机号
-
搜集用户昵称、头像、证件号码等
随着个人信息保护法出台,我们迫切需要了解小程序是如何使用用户的个人隐私信息。检测隐私泄露的一个主要方法是静态污点流分析,即追踪数据流从敏感的源点(source)流向不受信任的汇聚点(sink)。然而,小程序以下的特点,给静态污点流分析提出了独特的挑战:
小程序的主要特点是它与用户有大量的交互,这带来了两个挑战
C1:需要追踪小程序渲染层和逻辑层之间的数据流。这里的难点在于跨语法数据流的追踪。渲染层的语法类似于HTML,如微信的WXML;而逻辑层由JavaScript编写。许多敏感信息,如用户输入,可以从HTML元素流向JavaScript对象。
C2:处理异步数据流。小程序非常依赖异步执行来确保流畅的用户体验,例如等待GUI事件或网络请求来产生结果。许多敏感API,如“getLocation”,都是异步调用的。
小程序的另一个特点是它由JavaScript开发,这个分析数据流带来了2个挑战
C3: 识别JavaScript对象的属性链。属性链是由点连接起来的一系列属性,例如“a.b.c”。由于JavaScript的动态和反射特性,在小程序中跟踪对象的属性,很难平衡精度和效率。
C4: 识别函数别名。小程序的模块化结构允许将API封装到模块并存储到单独的文件中。因此,函数别名可以跨文件并分配给不同对象。
二、MiniTracker
为了解决这些挑战,本文提出了污点分析工具MiniTracker
来追踪小程序的隐私泄漏。如上图所示,它包含3个部分:taint tracker
、util analyzer
和page analyzer
taint tracker
是核心组件,它在JavaScript对象粒度上应用基于属性链的分析,较好地平衡了分析的精度和效率(C3)。具体来说,taint tracker
首先构建赋值流图(assignment flow graph),然后使用一个worklist算法来跟踪污染流。为了识别由模块化结构引入的函数别名(C4),
util analyzer
递归地识别封装起来的source和sink。为了检测渲染层和逻辑层之间的数据流(C1),
page analyzer
显式地将与HTML文件关联的数据流集成到每个页面的JavaScript流中,并合并每个页面的流以检测跨文件的隐私泄漏。为了解决异步数据流的调整(C2),
MiniTracker
理解异步流并将其等效地转换为同步流,以便进行统一分析。
三、实验验证
本文通过一个包含了65个测试小程序的Benchmark,以及156490个微信和百度的小程序对MiniTracker进行了验证。
在Benchmark上的研究
本文根据前人构建benchmark的原则,设计了65个小程序测试用例,其中54个包含一个隐私泄露,11个没有隐私泄露。评测套件中的小程序根据类别被分成了13个子类。
本文选择CodeQL和TaintMini做baseline。CodeQL是一个流行的商用污点流分析工具,TaintMini是一个专门针对小程序的静态污点分析工具(不了解的读者可以参考本公众号在2023-05-26的阅读推荐)。
实验结果如下表所示,结果表明: MiniTracker的召回率比CodeQL高34.3%,比TaintMini高63.0%,说明MiniTracker能有效地捕捉小程序的数据流。
在微信和百度的小程序上的大规模研究
我们的主要发现有:
source的特点:微信和百度小程序的主要source API来自开放类API。这类API能够访问存储在手机应用中的用户信息,如果它们被利用,将构成重大的隐私风险。
sink的特点:微信和百度小百度中的top sink分布是相似的,网络请求是主要的泄漏。
污点流的复杂性:污点流表现出高度的复杂性,其特征是大量的异步流以及对封装的source和sink API的利用。
小程序行为与隐私策略不一致。大多数小程序缺乏正式的隐私政策,即使有,它们的政策也经常与数据收集行为不一致。
其他
论文链接:https://ieeexplore.ieee.org/document/10197457
代码和benchmark链接:https://github.com/flyboss/MiniTracker/
投稿作者:
李威,上海交通大学博士研究生,主要研究方向为软件安全隐私。
向立瑶,上海交通大学,电子信息与电气工程学院,约翰·霍普特克罗夫特计算机科学中心,长聘教轨副教授。主要研究方向为数据安全隐私,智能物联网等,其代表性成果发表在网络、安全、人工智能领域国际一流会议与期刊,包括INFOCOM,UbiComp,NDSS,ESORICS,ICLR,KDD,ICDM,CIKM,IEEE JSAC,IEEE TIFS,IEEE TDSC,IEEE TMC等,为IEEE ICDCS,IEEE ICDM,IEEE MASS,IEEEE GLOBECOM等会议程序委员会成员。作为项目负责人,主持国家自然科学基金委面上项目、青年项目、上海市2019年度“科技创新行动计划”扬帆计划项目、CCF-蚂蚁科研基金项目、华为-上海交通大学网络空间安全学院创新实验室合作项目等,作为课题负责人、项目骨干参与国家自然科学基金委重点项目、科技创新2030—“新一代人工智能”重大项目。曾指导学生获得交大-华为网安创新实验室优秀个人奖。主页:http://xiangliyao.cn/