漏洞挖掘技术研究

2024-09-11 32 0

本文总结G.O.S.S.I.P推荐的一些文章或者是自己看过的一些的文章,主要以漏洞挖掘方面的顶会论文为主,集中在IOT、源码、智能家具方向,供有兴趣的朋友参考。

2020年论文

1、二进制代码相似度调查(A Survey of Binary Code Similarity)@CSUR 2021(期刊 SCI一区 16.6)

二进制代码的相似性分析广泛应用于多个领域,包括代码漏洞定位、恶意软件分类、恶意代码检测、自动化补丁生成、补丁信息分析、跨架构代码迁移和软件克隆检测等

论文:https://arxiv.org/pdf/1909.11424.pdf

2021年论文

1、“是公司、政府、你和我”:用户对智能家居隐私和安全责任的认知("It's the Company, the Government, You and I": User Perceptions of Responsibility for Smart Home Privacy and Security)@Usenix Security 2021(CCF-A)

目前,智能家居面临着巨大的安全与隐私风险,例如用户可能不了解隐私含义,制造商无法提供透明的配置选项,政府指导规范很少被广泛采用等。智能家居安全和隐私的责任也涉及方方面面,目前没有研究对此进行过深入了解。为此,本文详细探讨了智能家居的安全与隐私现状,作者通过对40位智能家居用户进行深入访谈调研,分析描述了消费者、制造厂商以及第三方(政府)对于智能家居安全的责任以及关联,并且根据研究结果提出了一些缓解措施。

论文:https://www.usenix.org/system/files/sec21summer_haney.pdf


2、使用自己的代码查找错误:检测功能相似但不一致的代码(Finding Bugs Using Your Own Code: Detecting Functionally-similar yet Inconsistent Code)@USENIX Security 2021(CCF-A)

作者提出了一种基于机器学习、除了分析的codebase之外不需要额外代码样本的漏洞检测方式,命名为FICS(Functionally-similar yet Inconsistent Code Snippets)

论文:https://www.longlu.org/publication/fics/fics.pdf


3、利用机器学习实现轻量级、混合的 DOM XSS 漏洞检测方法(Towards a Lightweight, Hybrid Approach for Detecting DOM XSS Vulnerabilities with Machine Learning) @WWW 2021 (CCF-A)

DOM XSS是web应用中常见的漏洞,而且不易防御。污点分析是最常用的检测DOM XSS的方法,但是对于许多实际的例子来说非常的消耗计算资源。所以作者提出了用机器学习方法结合污点分析来解决这一问题,相较于单独的污点分析,其花销降低了3.43倍,并且仍然能覆盖到94.5%的漏洞。

论文:https://users.ece.cmu.edu/~lbauer/papers/2021/www2021-dom-xss-dnn.pdf


4、物联网Bug及开发挑战(IoT Bugs and Development Challenges)@ICSE 2021 (CCF-A)

IoT系统的典型架构主要包含三层:设备层、边缘层、云服务层。不同层次的故障、原因分布、不同的设备表现使得开发人员很难处理物联网的错误,并且目前尚没有研究工作考虑了物联网开发的实际场景和经验。因此,本文作者从物联网开发人员的实际经验出发,对物联网错误和挑战进行了系统性的研究与概括。

本文的主要工作包括以下两个方面:

(1)物联网中的错误类别有哪些?

(2)物联网开发人员在实践中面临什么挑战?

论文:https://ieeexplore.ieee.org/document/9402092


5、研究论文开头句

作者调查了379篇USENIX Security论文的opening sentence,人工阅读并试图仅从这一句话中去弄清楚文章想要传递的中心思想。对这最重要的第一句话的总结如下图所示:

漏洞挖掘技术研究插图
最后,调查人员选出了最喜爱的5个论文首句

  1. “It is difficult to keep secrets during program execution.”
  2. “Our phones are always within reach and their location is mostly the same as our location.”
  3. “Do programmers leave fingerprints in their source code?”
  4. “The dismissal of human memory by the security community reached the point of parody long ago.”
  5. “Peripheral devices are now powerful, portable, and plentiful.”

文章:https://medium.com/madiba-security-group/opening-sentences-of-research-papers-35d0ef5d0241


6、利用深度神经模型识别程序二进制文件中的非控制安全关键数据(Identifying Non-Control Security-Critical Data in Program Binaries with a Deep Neural Model)(arxiv 2021)

一篇结合机器学习来开展二进制代码中那些“安全攸关”(security-critical)数据的识别的研究论文

论文:https://arxiv.org/pdf/2108.12071.pdf

2022论文

1、EnBinDiff:识别二进制文件的纯数据补丁(EnBinDiff: Identifying Data-Only Patches for Binaries)@TDSC 2022 (CCF-A)

二进制补丁比对技术是挖掘 1day 漏洞的重要方式,通过对原二进制文件和补丁二进制文件进行比对,研究它们的不同以定位漏洞的位置。结构化补丁比对技术是当前最主流的补丁比对技术,具有较好的效果,但结构化补丁比对技术无法识别出数据补丁。针对上述问题,为了能够发现数据补丁,作者设计并实现了一个基于值集分析(VSA)的补丁比对系统:EnBinDiff。EnBinDiff对于输入的原始二进制和补丁二进制进行预处理,得到在结构匹配函数对和结构补丁函数。对于每对结构匹配函数对,EnBinDiff 进行数据补丁分析,得到数据补丁函数。

论文:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9645381


2、自动静态分析工具检测误报:我们还有多远?(Detecting False Alarms from Automatic Static Analysis Tools: How Far are We?)@ICSE 2022 (CCF-A)

目前自动化静态分析工具(ASAT)被广泛用于开源项目的问题代码检测中,但是这些工具并不能保证所有的警报都是真正的bug,即存在虚假警报的问题。已有工作大多采用机器学习的技术来识别和删减这些虚假警报,例如通过从工具警报和修复的历史数据中提取相关特征(“Golden Features”)来判断警报的真实性。尽管相关实验结果表明目前已有的检测ASAT虚假警报的方法和工具能够达到很好的效果,但他们的有效性却并没有得到深入的讨论。因此,本文作者从两个方面来分析并测试这些已有检测ASAT虚假警报方法的表现:

  • Why do the Golden Features work?
  • How suitable is the closed-warning heuristic as a warning oracle?
    论文:https://arxiv.org/pdf/2202.05982.pdf

3、源代码与二进制漏洞发现的融合——案例研究(The Convergence of Source Code and Binary Vulnerability Discovery – A Case Study)@AsiaCCS 2022 (CCF-C)

这篇论文探讨的问题是在漏洞检测中,源代码分析和二进制代码分析应该如何结合。在很多情况下,针对源代码的漏洞检测和针对二进制代码的漏洞检测几乎是平行的研究内容,两者需要处理的困难和使用的技术手段都缺乏交集。本文作者试图利用反编译器作为辅助手段,观察源代码漏洞检测工具是否可以帮助二进制代码漏洞检测。实验表明,这种想法可能是很有前景的:在测试的二进制代码案例中,有超过71%的情况,源代码漏洞检测工具(SAST tool)是可以通过分析反编译器的输出结果而找到问题的(注意:直接使用反编译工具的输出结果去投喂源代码漏洞检测工具是不可行的,相关“代码”还需要一定程度的人工干预调整!)。

结论1:在诸多代码分析工具的测试横评中,Joern、Clang(CSA)和CodeQL表现相当不错,相比之下商业工具反而没那么好的效果。

漏洞挖掘技术研究插图1
结论2:如果分析工具以极高的误报率换来对漏洞更全面的捕获,那基本上可以认定这个工具是没有多少实用 价值的。在这一项测试中,我们注意到Joern和CodeQL较少产生高误报,特别是Joern,基本上对所有的分析 对象都没有输出高误报结果。
漏洞挖掘技术研究插图2
论文:https://www.s3.eurecom.fr/docs/asiaccs22_mantovani.pdf

实验数据:https://github.com/elManto/SASTonDecompilers


4、物联网固件中第三方组件引入的漏洞的大规模实证分析(A Large-Scale Empirical Analysis of the Vulnerabilities Introduced by Third-Party Components in IoT Firmware) @ISSTA 2022 (CCF-A)

作者对物联网固件中的第三方组件(Third-party Component, TPC)的安全性展开了研究,设计实现了一个TPC检测和安全分析自动化框架——FirmSec,识别出了429个CVEs造成的128,757个漏洞。作者总共收集了35978个固件,来自13家供应商,涉及35种设备。经过数据过滤后,最终获得了13家供应商的34136个有效固件

论文:https://nesa.zju.edu.cn/download/zbbpdfissta_22.pdf

数据集:https://github.com/NESA-Lab/FirmSecDataset/tree/main


5、用代码表示学习程序语义:实证研究(Learning Program Semantics with Code Representations: An Empirical Study)@SANER 2022 (CCF-B)

作者针对于上述问题,首次系统地调研了程序的四种常见表征方式(Feature-based, Sequence-based, Tree-based 和Graph-based)在常见软工场景代码功能分类(program classification),漏洞检测(vulnerability detection)和克隆检测(clone detection)三个任务学习程序语义的能力。

作者进一步提出三个研究问题:

  • 在上述任务上比较不同的表征方式,从而确定哪种方式性能最佳?
    Graph-based最好,Feature-based最差
  • 针对Tree-based和Graph-based表征,节点的类型信息和文本信息对于上述分类任务的影响。
    相对于节点类型信息,节点的文本信息对于模型的影响更大,但是当拼接节点类型和节点文本信息通过一个全连接神经网络(即Hybrid),模型的性能达到最优。
  • 由于一个程序可以解析出不同的结构(如抽象语法树AST,控制流图CFG,控制依赖图CDG和数据依赖图DDG),针对Graph-based表征,哪种结构能够在这三个任务上达到最好的表现?

漏洞挖掘技术研究插图3
论文:https://arxiv.org/abs/2203.11790


6、静态C代码分析器漏洞检测有效性实证研究(An Empirical Study on the Effectiveness of Static C Code Analyzers for Vulnerability Detection)@ISSTA 2022 (CCF-A)

作者在真实 CVE 数据上对静态分析工具检测漏洞的效果做了详细的评估。

静态分析技术由于较低的部署成本和性能开销被广泛用于代码安全检测中,不过高误报率(high false positive rate)是其广为人知的一大缺点

  1. 作者将静态分析技术分成两类
    • 语法分析(Syntactic Static Analysis):只是搜寻一些可能引入漏洞的代码,比如对memcpy这种函数的调用,所以对源代码应用即可,无需编译信息
    • 语义分析(Semantic Static Analysis):需要考虑控制流或数据流信息,所以要先将源代码转换成抽象语法树、调用图和控制流图等更抽象的表示,尽管语义分析一般会伴随着不可判定性问题,但它可能发现更多复杂的漏洞
  2. 使用工具
    • 开源:Flawfinder (FLF), Cppcheck (CPC), Infer (IFR), CodeChecker (CCH), CodeQL (CQL)
    • 商业软件:CommSCA (CSA)
  3. 漏洞分类
    Common Weakness Enumeration (CWE) 是一种漏洞分类系统,每种漏洞类型都被赋予唯一的编号,不同类型之间还可具有树形层级关系,顶部的 CWE 更多代表抽象的 class,底部的 CWE 则表示更具体的漏洞 type,不同静态分析器中对漏洞的描述都可以被归到 CWE 体系中。
    论文地址:https://doi.org/10.1145/3533767.3534380
    Artifacts 地址:https://doi.org/10.5281/zenodo.6515687

7、jTrans:用于二进制代码相似性检测的Jump-Aware Transformer(jTrans: Jump-Aware Transformer for Binary Code Similarity Detection)@ISSTA 2022 (CCF-A)

作者提出了一种不依赖CFG,同样可以学习指令之间以及程序块之间相关性的方法,并以此实现了一个新的二进制代码相似性检测系统jTrans

要识别两个二进制代码片段之间的相似程度,传统方法非常依赖二进制代码的CFG以及手工设计的特征,鲁棒性差,且通常耗时耗力。而基于深度学习的方法要么只考虑了指令序列,没有考虑到CFG;要么对于CFG内部的指令没有足够的重视。即便采用了GNN来学习CFG,也因为GNN的难以训练,导致效果欠佳。作者为了解决上述问题,设计了jTrans,构建了新的模型用以适配二进制代码相似性检测。

为了能够让传统的BERT模型学习到二进制文件的特征,作者参照NLP的方式对二进制文件进行了tokenization。

  • 采用IDA对二进制文件进行反编译。
  • 将单个mnemonic以及operand视为单个token。
  • 引用的字符串以及常量值分别采用<str>以及<const>作为token。
  • 对于引用的外部函数,采用其名字或者标签作为token,但是引用的内部函数全部采用<function>作为token。
  • 对于有跳转关系的,源地址以及目的地址构成了一个jmp pair,作者将其token定义为JUMP_XXX,XXX为目的地址所在的token索引。比如0x40046A: js 0x40047c,目的地址0x40047c经过token化后,索引为20,因此该条语句token化后成为JUMP_20
    论文:https://dl.acm.org/doi/pdf/10.1145/3533767.3534367

2024论文

1、A Taxonomy of C Decompiler Fidelity Issues (USENIX Security 2024)

提出了一些反汇编失真程度的标准,并评估了四个反汇编工具


2、Ahoy SAILR! There is No Need to DREAM of C: A Compiler-Aware Structuring Algorithm for Binary Decompilation (USENIX Security 2024)

提出了一个新的算法以是的在反编译时尽可能的减少goto出现的情况

反编译历史介绍:https://mahaloz.re/dec-history-pt1


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

苹果试图保护你的隐私,OpenAI可能做不到
Shuffle:一款完全自动化的安全栈增强平台
如何使用CODASM编码Payload并降低熵值
SessionExec:一款针对会话安全的安全命令测试工具
Arkime:一款大规模数据包捕获和索引数据库系统
从蓝队流量角度分析Shiro-550反序列化漏洞

发布评论