Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

You Shouldn’t Collect My Secrets: Thwarting Sensitive Keystroke Leakage in Mobile IME Apps

论文下载:http://ipads.se.sjtu.edu.cn/_media/publications/i-box-sec15.pdf

Indroduction

  • 文章主要想解决输入法软件(IME)泄漏输入隐私的问题。
  • 重打包,APP本身恶意(为了用户体验)。

挑战:

  1. 重打包检测,一直是问题
  2. APP的native
  3. 自定义协议
  4. 加密

考虑到Taintdroid污点分析的方式,缺陷有:

  1. native
  2. capture control-based propagation
  3. 定义source

Overview

目的是保护用户隐私输入,又不影响用户体验 简单的想法: 首先可以在用户输入密码时,切换到普通输入法,但是麻烦 或者输入时,切断网络连接,这个影响体验,而且可能先缓存,之后泄漏。

Fig

Fig

文章的方法:首先在开始输入前,保存一个IME app的检查点(checkpoint) 之后判断用户的输入,如果发现敏感字符(注意,这里是IME先得到输入),就采取措施:关闭网络,限制对其他进程或provider的写操作,限制intent等数据传输路径(防止当时泄漏),同时在用户输入完毕后,恢复原检查点(防止之后泄漏)。

策略

策略分两种:(1)根据editext的类型,输入类型为password,email等就是敏感字符。根据APP,可以制定黑白名单。(2)根据内容制定策略,比如ABC*就代表如果以ABC开头,就是敏感

Enabling Transactional Execution

首先,IMEapp是提供服务类型的APP,在没有用户输入事件刺激的情况下都处于静止状态(所有子线程都结束了,没有等待执行的部分)。这个静止状态会做为checkpoint。如果不是静止状态,会等待一段时间。强制结束新的交互。没发现一直不是静止状态的IME。 复制技术:copy-on-write (COW) features provided by Linux.创建一个shadow process ,记录变化,如果没变化就不会复制。

  1. files:data/data 和 sd卡 复制
  2. memory :堆栈,进程信息,pipe,waitqueue,memory都复制并恢复
  3. multi-thread rollback:首先理清所有线程的关系,找到所有相关线程,记录每个线程状态及之间的关系。
  4. IPC binder network:关键是找到没有这些的时机作为checkpoint。

Evaluation

  • 时间:
    • find a quiescent point 14ms
    • saving and restoring an IME app’s memory 29ms
    • files 60ms
  • power:
    • 电池从100%到99%,时间没区别。

Fig

  1. 黑盒测试:输入敏感字符串N次,对比有无这个沙盒时,网络数据包的差距
  2. 灰盒测试:找一个明文发包的应用,看看敏感字符会不会发出去
  3. 白盒测试:完全重打包一个APP,添加LOG,并将服务器地址修改成自己的,测试效果