主页 / 安全论文每日读 / Modular Control-Flow Integrity
  • 作者
    GoSSIP @ LoCCS.Shanghai Jiao Tong University
  • 简介

    Modular Control-Flow Integrity是发表在PLDI‘14会议上的论文 。这篇文章研究了如何使用一个动态的数据结构来表示CFG,并封装相应的对数据结构进行读写的事务来保证线程安全。

    摘要

    过去CFI不支持单独编译,影响了CFI技术的推广。

    MCFI支持模块独立插桩、静态和动态链接。组合多个模块,用每个小模块的CFG生成一个新的CFG。一个难点是在多线程的动态链接中如何保证从旧的CFG安全地转换到新CFG去。文中使用一个动态的数据结构来表示CFG,并封装相应的对数据结构进行读写的事务来保证线程安全。

    引言

    分离编译,编译器能独立地编译应用程序的每个模块,并连接这些模块,添加CFI规则时,无需考虑其他模块,独立地插桩,并将插桩好的模块连接到一个工作可执行程序中。

    MCFI中,一个app被分成了多个模块,每个模块都有代码,数据以及帮助与其他模块进行链接和生成模块CFG的辅助信息。当一个模块与其他模块连接后,应该生成一个新的CFI规则,新规则允许原来的ICF能够跳到更多的target上去。故在连接时CFI规则发生了变化。

    MCFI在链接lib时,两个挑战是:

    • 在多线程中如何在运行时安全有效地更新规则
      • MCFI在代码段之后,用一个独立地表来表示CFG。为保证表的平稳更新,MCFI设计了table-check和table-update 事务,使用了一个轻量级的STM(software Transactional Memory)算法
    • 在模块进行组合是,如何有效地生成精度高的规则

      • 使用辅助类型信息来生成cFG 贡献:
    • MCFI是第一个支持单独编译的有效CFI插桩方法,很大改善了CFI实践性

    • 基于类型匹配的C程序CFG生成的方法,高效且可在动态链接中使用,C程序无需或只需做小的修改即可与CFG生成过程兼容
    • 实现了一个编译工具链,可对X86的C程序进行插桩。
  • 援引
    http://www.securitygossip.com/blog/page/2/
  • 提示
    本站仅做资料的整理和索引,转载引用请注明出处
相关推荐
附件下载
  • Modular.Control.Flow.Integrity阅读笔记.pdf
    时间: 大小: 0.55 M 下载: 26
  • Modular.Control.Flow.Integrity.pdf
    时间: 大小: 0.24 M 下载: 4