作者:{WXL}@ArkTeam
原文作者:Daimeng Wang, Ajaya Neupane, Zhiyun Qian
原文题目:Unveiling your keystrokes: A Cache-based Side-channel Attack on Graphics Libraries
原文来源:Graphics Libraries_NDSS_2019
作为侧通道攻击的目标,这些图形库由操作系统提供并且由应用程序动态加载在用户进程之间共享,即不同的虚拟页面被映射到相同的物理页面。为恶意进程创造了一个推断受害者进程的图形相关活动的机会。
图形库通常会优化其执行逻辑以实现高性能。例如,在处理更简单的图形内容时,图形库会执行与复杂内容不同的一组过程。同时,即使执行相同的子程序集,对于不同的输入(例如,要呈现的不同字符),执行时间仍然可以不同。因为这些图形操作的执行时间是依赖输入并且可测量的,因此该处理逻辑创建的侧通道,可以允许攻击者推断用户的输入。
攻击实现步骤:
图1 攻击模拟流程图
- 标识容易受到攻击的缓存行。使用不同的输入多次运行受害者应用程序,收集应用程序使用的图形库程序跟踪;使用特征提取在噪声影响最小的库中识别可能存在漏洞的高速缓存行。
- 完全自动化发现和选择可利用的旁道。离线模拟攻击,监视每一对缓存行,收集不同按键访问缓存行的时间戳构建预测模型(随机森林机器学习算法)。预测模型和随机猜测性能进行对比,测试所有的缓存行,选择出性能最佳的缓存行对。
- 在线攻击。根据离线模拟生成的训练预测模型,执行flush+reload侧通道攻击,监视最佳的两对缓存行来推断结果。将结果和其他信息结合起来提高准确性,最后推断受害者字符输入。
攻击模拟实现:
-
Ubuntu屏幕键盘。使用flush+reload 侧通道攻击。结果只需输入一次密码,可以在第一次尝试中正确猜出 50%的密码,在 10 次猜测中可以猜测 80%的密码。如果攻击者可以测量 10 次登录尝试,则可以在第一次猜测中破解 95%的密码。结果取决于字典大小。
图2 ubuntu屏幕键盘密码猜测结果
-
Android 应用程序。使用evict+reload攻击。结果预测单个字符所需的猜测次数,在第一次猜测时猜测 60%的密码,在 10 次猜测中猜测 90%的密码。图3(b)显示以 100%准确度猜测单个数字所需的猜测次数。
图3 Android应用程序密码猜测结果
- 攻击内置键盘。内置键盘更容易受到此类攻击。论文中在此情景下使用evict+reload攻击中信移动银行应用程序,结果大多数字符在四次猜测中准确率高达90%。