即时编译中隐式常量的防御研究

来源 :南京大学 | 被引量 : 0次 | 上传用户:yixinnet
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
即时编译器将输入型程序,如JavaScript程序(简称js程序),编译为本地可执行代码,这为攻击者提供了便利。攻击者可利用js程序中受控制的常量构造攻击时所需的代码片段(称为gadget)来构建攻击代码。常数致盲等方法可使得js程序中的显式常量不再出现在代码缓存中,解决此类问题。近期有研究提出,攻击者通过隐式常量注入攻击所需代码片段,以实现攻击,使常数致盲等显式常量防御方法无效。为此,本文研究隐式常量的防御方法。通过分析此类攻击的原理及形成条件,采取变换代码缓存中隐式常量的方法,防御隐式常量的复用攻击。本文的主要研究工作如下:(1)分析了隐式常量攻击的原理及形成条件。动态生成代码的过程中,当一个语句块中的指令都生成后,隐式常数的值才能通过计算得到。因此在生成包含隐式常数的指令时,常数致盲的防御方案因无法得到隐式常数的值而不能对隐式常数进行保护。攻击者可利用这一缺陷,通过大量的测试、了解即时编译器的编译规律后,精心控制脚本代码中的语句块大小,使得脚本代码经过即时编译后能够得到编码了 gadget的隐式常数,然后进一步实施ROP攻击。(2)设计了一个基于寄存器随机化与代码改写相结合的防御方案,以消除本地代码中可被利用的隐式常量。寄存器随机化的目的在于将攻击者精心制造并注入的隐式常量进行随机地变换,使其发生改变,不易被攻击者控制、利用。在动态生成指令时,通过将扩展寄存器与其他通用寄存器随机置换,使得最终生成的指令大小发生改变,间接改变隐式常量。进而,在动态生成代码运行之前,对于还存在的可能被利用的隐式常量,采用二进制改写的方法将这些隐式常数隐藏到索引表中。寄存器随机化在不影响性能开销的基础上能够消除大部分有害的隐式常数,而代码改写能够有针对性地将可被利用的隐式常数隐藏、消去。(3)基于上述方案,在SpiderMonkey中实现了原型系统,并利用Firefox自带的测试文件集测试、验证了方案的可行性。以Octane、Sunspider等基准测试集,测试了原型系统的性能开销。实验结果表明,该方案可有效防御隐式常量攻击,其时空开销都较小。
其他文献
互联网技术的飞速发展,使得整个人类社会成为了一个地球村。但是现有的语言却将不同种族与地域的人割裂开来,成为了人类沟通的障碍,世界迫切呼唤新的语言出现。符号因其简单
为解决生产装置中出现的手动控制频繁、系统稳定性不高、自控率低等问题,专家学者们提出了许多先进控制技术,但是这些技术多数是需要基于精确对象数学模型的。系统辨识就是通
随着互联网内容的复杂化,传统的一些匹配方法已逐渐无法满足识别出网络数据流中关键字间的逻辑含义的需求。同时,随着互联网内容的膨胀,对于大量数据的快速匹配需求越来越强
广义频分复用(GFDM)技术是为了应对第5代移动通信的高标准而提出的新型多载波传输技术。GFDM系统使用了非矩形脉冲成形技术,具有带外辐射低、频谱效率高、灵活性好等优点。但
随着系统控制精度的不断提高,非线性系统抗干扰问题变得越来越重要。滑模控制方法由于其优越的鲁棒性在处理干扰的问题中一直备受关注。传统的滑模控制方法对匹配的干扰具有
村民理事会是伴随着行政管理体制改革的不断深入以及乡村振兴建设的需要应运而生的新兴乡村群众自治组织,在新时代农村基层治理中日益发挥着重要的作用。在参与乡村管理的过程中,村民理事会发挥的管理功能、监督功能、文化教育功能,是乡村治理能力水平提升的一个侧面反映。同时,在改善党群关系与干群关系、推动基层民主政治建设、提升村民自治水平等方面发挥了积极作用。目前,村民理事会运行中尚面临诸多困难,包括缺乏必要的资
随着互联网的高速发展,监控告警系统作为大型运维管理的核心一环,不但可以实现对互联网中网络设备的系统性能和信息安全的实时监控与告警,而且还能够对安全事件和安全告警行
近年来城市各类灾害频发,对城市发展产生了较大负面影响,如何提高城市系统面对灾害事件的响应与适应能力是当前国内外城市领域研究的热点问题。以往的城市安全与防灾理念已不能达到现有城市发展的需求,而韧性城市理念从动态与发展的角度为城市灾害的应对开辟了新的道路。因此,提升城市韧性成为城市灾害治理新的发展趋势。随着社会城市的发展,燃气在人们的生产生活中得到了广泛应用,由于燃气的特殊性和危险性,随之而来的是日益
随着科技的发展,电离层对卫星导航、无线电通信、广播、空间探测等人类活动的影响越来越显著。因此,电离层的探测技术也越来越重要。非相干散射雷达具有时空分辨率高、覆盖空
从单幅图像中提取其中的层次关系是实现图像分析的基础,也是深层次图像信息提取问题的基础。该研究的运用面很广,可以应用到图片理解(目标识别、姿态估计)、机器人视觉(运动