首页
社区
课程
招聘
[求助]关于AIfor二进制漏洞检测这个方向,有一些疑问
发表于: 2025-2-12 16:53 4165

[求助]关于AIfor二进制漏洞检测这个方向,有一些疑问

2025-2-12 16:53
4165

大大们好,我是一个正在研究AI4SE的研究生。方向主题主要是通过AI来检测二进制文件的漏洞。(衍生的类似方向比如clone检测,相似度检测等)
在研究的过程中,我发现一个现象:几乎95%的基于AI的模型都是基于相似度检测来进行的(BCSD),即假如我们有一个已知的漏洞库,然后我们把手上有的二进制文件(函数)与那些漏洞库做出比较,从而找出相似性比较高的匹配对得出漏洞检测的结论。这乍一看是比较合理的,但是对于此我有一些经验上的疑问,还请各位对逆向经验丰富的大大们不吝赐教,非常感谢。

1.现在的新漏洞,真的能通过这样的一个漏洞库匹配出来吗?或者说,现在的各个漏洞的作用机理真的会很相似吗?
其实这也可以转化为另一个问题:现在所谓挖到新漏洞,到底主要是集中在业务层(程序员平常开发的app层)呢,还是集中在更底层的一些API上呢?如果答案是后者的话,这个问题可能更能得到一些肯定的回答:毕竟底层的通用的API更加的细粒度高,也更能和场景解耦开来。但是我总觉得这种漏洞出现的概率不会太高。如果是前者的话,每个应用都有自己的场景,他真的能用这样的相似度检测来检测出来吗?
(这里的相似度检测大家做的都是函数级的,即对每单个函数进行匹配)。

2.漏洞补丁问题。这和AI关系更大一点,即我认为漏洞(比如缓存区溢出等这种比较典型的问题),它的修复前和修复后的代码的相似度其实是非常高的。现在的我还完全没有觉得AI的细粒度能达到这种细致的程度,但是在没有标签的无监督学习下,似乎也找不到什么更加有效的方案?
除非我能自己打上手工标签,把一些修补前修补后的代码标注出来再去进行特地的训练。

3.漏洞性质问题:一个漏洞真的能仅凭一个函数体就能认定它是存在漏洞的吗?是不是依然需要与其他函数的交互才能体现出来这种漏洞的存在?

确实有好多先进的论文(jtrans/HermesSim)成功的用BCSD方案挖出了好多1-day漏洞。但是我完全不相信这种方法能检测出来0-day漏洞,因为它只记住了曾经出现的漏洞的模式,对新型的大抵会无可奈何。这是我的想法,如果并不如此(比如其实每个漏洞的类型都是还是能被容易分类清楚的),还请大大们不吝赐教。

综上,我的问题是:我觉得光通过现有代码与所谓漏洞库的相似度的比较,无法胜任漏洞检测如此具有精细度的问题。另外就是也是不太清楚现在的漏洞多发生在一个完整的大型项目的哪个level上,我觉得需要知道这点才能让我的思路更加的清晰。
值得一提的是,现在使用的数据集基本上都是底层API,比如openssl,gutils,还有一些指令的实现,比如curl等。

我现在就总是觉得BCSD只能做到类似于“抄袭检测”并不需要很高细粒度的任务,但是对于漏洞检测有其他什么样的可能解决范式也陷入了迷茫。
问题表述若有不够清楚,还请大大们谅解。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 130
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
对,无法检测新漏洞,但是codeql是可以的
2025-3-24 22:48
0
游客
登录 | 注册 方可回帖
返回