Binary Ai
约 679 个字 预计阅读时间 2 分钟
CONTENT
- 传统SCA的缺陷:
- Binary-to-binary:将源代码自动编译成不同版本的二进制文件存在困难,导致可供纳入binary database的数据量严重不足,极大限制了分析的准确性
-
Binary-to-source:选取的是基本语法特征,这些特征可能会被重复许多次,根本无法判别具体是哪个库,此外,实际当中经常是找不到合适的特征,现有的查找字符串的方法也会产生大量遗漏。故需要找到一种更优的特征,即函数级别的特征。
-
方法(BinaryAI):
- Feature Extraction
- Source Function:构建AST提取特征,存储在两个inverted index里,一个是库映射到它包含的函数,另一个则反过来
- Binary Function:反汇编生成C-link的伪代码,另外构建了相对的虚拟地址
- embedding-based function retrieval:
- 核心是把源码和二进制代码里的函数转化为一个列(行)向量表示,进而可以定义内积去计算距离(即函数间的差异程度)
- C/C++的特色之一就是编译时各种优化和混淆,这对于分析会造成很大困难,现有的语言大模型可以很好的扩展到编程语言上来
- locality-driven matching:
- 单纯靠语法识别出来的top-k个近似函数大概率会很相像,为了作进一步区分,我们引入了连接时的区域信息和函数调用表
- 来自同一个源文件的函数在链接时的位置是连续的,我们可以借此找出哪些函数函数来自同一个源文件,进而还原出源代码
-
Third-partyLibraryDetection:
- 厘清不同第三方库的依赖关系,有效避免一个第三方库使用了另一个第三方库带来的混乱
-
实验结果:实验表明,BinaryAI在精确度和召回率方面明显优于现有的SCA工具,显著减少了误报率并提高了准确性。与其他工具相比,BinaryAI将精确度从73.36%提高到85.84%,召回率从59.81%提高到64.98%。
THE ADITIONAL
the explanation of nonus
- TPLs(Third Party Library)
- vulnerability propagation:漏洞传播
- SCA(Software Composition Analysis)
- DevSecOps(Development, Security, and Operations)
contrastive learning
对比学习(Contrastive Learning)是一种自监督学习技术,其核心思想是通过让模型区分相似和不相似的数据点来进行训练。具体来说,它会把相似的数据点的表示拉近,同时将不相似的数据点的表示拉远。这种方法常用于标签稀缺的任务,因此在图像处理、语音处理和自然语言处理等领域非常有效。