论文阅读:MiniTracker: Large-Scale Sensitive Information Tracking in Mini Apps (TDSC 2023)
相关链接:
1.Introduction
工具的三个组件:Taint Tracker、Util Analyzer、Page Analyzer。
提出了一些挑战和解决方案:
1.
挑战:跨语言的数据流(WXML ~ JavaScript)
解决:见Page Analyzer
2.
挑战:异步数据流
解决:理解异步流程并将其等效地转换为同步流程
3.
挑战:识别属性链(如a.b.c
),小程序打包后有很多单字母变量名,用名称匹配会有大量FP
解决:在JS对象的粒度上应用基于属性链的分析,见Taint Tracker
4.
挑战:识别函数别名(由于模块化、函数可以复制给变量等)
解决:见Util Analyzer
2.Preliminaries on Mini Apps
略。
3.Problem Setting and Attacker Model
目标:设计自动化污点分析工具来报告小程序中潜在的隐私泄露。
威胁模型:出于疏忽或恶意目的的小程序开发者。
4.Identifying Sources and Sinks
考虑的污点源与污点汇:
污点源:
设备信息:可用于确定设备状态、唯一识别用户或描述用户习惯的信息
定位
本地文件读取:比如wx.chooseImage
开放API:主应用提供的开放能力,比如wx.getUserInfo
可以获取用户的帐户昵称和头像
污点汇:
网络请求
不通过网络的信息传输:比如蓝牙、短信、电话等
本地文件写入:比如wx.setClipboardData
写入剪贴板后,其他应用可以从中读出信息
开放API:同样,有些开放API会把信息泄露给第三方,例如wx.requestPayment
传递的参数会传输到支付服务
5.MiniTracker

Taint Tracker
预处理
JS打包后的代码会出现很多相同名称的标识符,但引用不同的变量。预处理器将它们分配给具有范围信息的唯一标识符。
预处理器跟踪每个函数表达式,并用唯一标识符替换相应的AST节点。在访问完整的AST之后,预处理器对于遇到的每个函数向程序体追加一个函数声明。
