G.O.S.S.I.P 阅读推荐 2022-04-18

机器学习是万能的吗?当然不是,但是如果能够恰当运用机器学习,在安全研究领域中很多labor work都可以化繁为简。今天我们就来看一篇USENIX Security 2022会议论文,讨论的是机器学习如何解决(助力、使能、赋能?)二进制代码相似性分析。(大家还记得我们栏目在2020年2月14日的第一篇推荐吗)



先来介绍一下本文的大背景:不论是系统安全、程序语言还是机器学习的研究社区,最近几年都发表了成吨的关于利用机器学习来解决二进制代码相似性分析的研究论文。作者在本文中希望对这些工作进行一个系统性评估分析,包括开展对各家技术的横向比较、同已有的一些老方法(如模糊hash)的对比、以及跨架构情况下相关工作的优劣变化评估等等。作者选择了10个最具代表性的相关技术,重新实现了它们,并开展了系统性的评估,发现了很多有趣的结果,并将实验数据集全部释出:
https://github.com/Cisco-Talos/binary_function_similarity

作者在论文中首先要对已有的研究成果进行筛选,选择标准中既考虑来自学术界和工业界的多样性,以及方法的代表性和前沿性,同时这些方法还必须能够应用在现实世界的大规模数据集上。


特别地,在选择代表性解决方案的过程中,作者考虑到随着历史的进程,新的技术会优于老的技术,因此在很多出自同一个研究组的系列论文中总是选择最新最好的那个


最后,作者从30篇代表性论文中选择了10大代表性解决方案:

  1. 基于Bytes fuzzy hashing的Catalog1:https://www.xorpd.net/pages/fcatalog.html

  2. 基于CFG fuzzy hashing的FunctionSimSearch:https://googleprojectzero.blogspot.com/2018/12/searching-statically-linked-vulnerable.html

  3. 基于Attributed CFG and GNN的Gemini:Neural network-based graph embedding for cross-platform binary code similarity detection,CCS 2017

  4. 基于Attributed CFG, GNN, and GMN:Graph matching networks for learning the similarity of graph structured objects,PMLR 2019

  5. 基于IR, data flow analysis and neural network的Zeek:Binary Similarity Detection
    Using Machine Learning,PLAS 2018

  6. 基于Assembly code embedding的Asm2Vec:Asm2Vec: Boosting Static Representation Robustness for Binary Clone Search against Code Obfuscation and Compiler Optimization,IEEE S&P 2019

  7. 基于Assembly code embedding and self-attentive encoder的SAFE:Safe: Self-attentive function embeddings for binary similarity,DIMVA 2019

  8. 基于Assembly code embedding, CFG and GNN的论文: Investigating Graph Embedding Neural Networks with Unsupervised Features Extraction for Binary Analysis,BAR(workshop of NDSS)2019

  9. 来自腾讯的CodeCMR/BinaryAI:BinaryAI Python SDK. https://github.com/binaryai/sdk 以及论文 Codecmr: Cross-modal retrieval for function-level binary source code matching,NeuIPS 2020

  10. Trex:Trex: Learning execution semantics from micro-traces for binary
    similarity. arXiv 2020

感谢作者为我们优选的这10大解决方案,让我们继续看看作者是怎么严格评估它们的优点缺点的。作者除了对腾讯家的CodeCMR/BinaryAI无法做到亲力亲为测试(请腾讯代替测试)之外,其它的9大方案都自己进行了实现,并用一致的测试集进行比较。

  • Dataset-1. ClamAV, Curl, Nmap, OpenSSL, Unrar, Z3, Zlib

  • Dataset-2:Binutils, Coreutils, Diffutils, Findutils, GMP, ImageMagick, Libmicrohttpd, LibTomCrypt, PuTTy, SQLite

针对测试集,作者还考虑了不同的编译器、不同的编译优化选项、不同的架构的影响,根据这些配置来进行了多组测试样例的生成。

在针对使用的机器学习模型的评估中, Graph Matching Networks (GMN) 占得上风:


对使用fuzzy hashing和使用机器学习的解决方案的横向对比,GMN继续占得上风:


值得一提的是,腾讯的CodeCMR/BinaryAI虽然无法和其它几个方案直接对比,但是作者经过和腾讯的交流并请他们进行了相关测试之后,认为CodeCMR/BinaryAI可能是一项前途比较光明的技术!



最后,作者将二进制代码相似性比较的一个重要应用场景——跨二进制代码漏洞检测纳入到测试中,对所有工具是否能将有漏洞的函数的ranking准确标记为第一名或者前几名进行了测试。结果表明,GMN模型驱动的比较具有非常好的效果,即使是在跨架构的情况下(但是它的缺点在于慢,没法大规模应用)



最后,我们想说,在这么一个小小的二进制代码相似性分析的测评上,作者就花费了巨大的精力去进行了非常严谨的实验和数据分析,而我们注意到《中国中医药报》的一篇《在血与火的洗礼中绽放科技之花——连花清瘟胶囊研发纪实》文章中报道“他们(连花清瘟研发团队)昼夜攻关,在短短的15天内完成了‘连花清瘟胶囊’的提取、浓缩、干燥、成型等生产工艺和质量标准的研究工作”。系统安全的科研工作者们,你们何时能达到这样的水准呢?

论文PDF:
https://www.eurecom.fr/publication/6847/download/sec-publi-6847.pdf


免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐