论文部分内容阅读
短信验证码在移动应用生态系统中发挥着重要的作用,因为许多安全操作(例如个人身份识别,身份信息的修改和网上银行支付业务等)都是通过让用户填写收到的短信验证码来完成的,而且随着移动智能设备的日益成熟,短信验证码的作用不断扩大。特别是如资金支付这类重要操作,通常都是利用账户密码和短信验证码构成双因子保护。当账号密码被钓鱼等手段窃取时,短信验证码就成了最后一道防线。但是,短信中的验证码数据也同样会被攻击者窃取和转发,这就会带来了严重的安全问题,可能会给用户造成巨大的经济损失。为此,本文提出了一种轻量级的方法CodeTracker来跟踪和保护短信验证码,以防止短信验证码数据被恶意应用窃取和转发。该方法允许所有应用(包括恶意应用)读取短信内容,且无论它们后续对验证码数据进行何种变形操作(例如加密,二次存储等),CodeTracker都能有效的阻止它们从手机中窃取短信验证码数据。CodeTracker利用污点跟踪技术,在安卓手机收到短信的源头用污点标签来标记带有验证码的短信内容,然后保证这个验证码短信在安卓系统内传播的过程中一直会携带着这个污点标签。数据无论是通过方法传递,变量赋值,进程间数据通信,还是文件二次存储等各种形式的操作都不会丢失其所携带的标签。为此,本文修改了相关的数组结构、数组操作、字符串操作、IPC机制、线程实例结构和短信存储相关的文件操作,以确保污点标签不会丢失且无法被删除。当短信验证码通过短信系统或网络接口被发送出去时,CodeTracker在对应的接口处提取待发送数据中的污点标签,并强制执行预定义的安全策略(例如,仅允许白名单用户发送,禁止所有带特定标签的数据发送,提示用户选择是否允许发送),来防止短信验证码数据泄漏。论文在安卓的新一代ART虚拟机上开发了CodeTracker原型系统,并收集和测试了1218个与安卓短信窃取相关的恶意软件样本来评估该系统。测试结果表明,通过短信系统或者网络接口发送的携带了短信验证码的数据,都被成功检测到了对应的污点标签,并且CodeTracker成功阻止了这些数据的进一步发送。在进一步对CodeTracker进行的编译器性能,Java性能,IPC性能的多维度性能评估中表明,CodeTracker能够以较小的性能开销(平均<2%)有效地跟踪和保护短信验证码数据。