漏洞检测工具和论文

cwe_checker

cwe_checker是另一种用于漏洞检测的工具,它基于"Common Weakness Enumeration"(CWE)标准。根据论文中的描述,cwe_checker可以检测到某些特定情况下的NPD漏洞,例如在Redis和Glibc等库中的漏洞[1]。cwe_checker使用预定义的列表来确定哪些函数可能返回空指针,并对这些情况进行检测[2]。
论文指出,虽然这两种工具在检测其他类型的漏洞方面表现良好,但在NPD漏洞检测方面的效果有限。其中的差异并不是因为二进制分析工具的能力受限,而是由于检测算法本身的不完整性[1]。
总之,根据论文中的描述,这篇论文主要讨论了NPD漏洞以及使用bap-toolkit和cwe_checker等工具进行NPD漏洞检测的挑战和限制

NPDhunter

通过NPDHunter的内部过程来识别NPD漏洞的源和汇。基于第三节中描述的限制,我们的方法中的不受信任源标识考虑了以下情况:(1) 二进制中的具体零值。这不是一种漏洞,而是由程序员自身造成的程序错误。但是,对零值进行解引用将导致程序崩溃。因此,我们的方法将检测到如果具体的零值被传播到汇点,这种情况。(2) 函数的参数指针。第二,函数的参数被视为不受信任的源,以防止null指针传播到函数内部。因此,我们分析寄存器或堆栈的别名集是否包含函数参数的值,如RDI、RSI和RDX。由于使用了SSA,如果参数寄存器分配了其他值,它们的索引会增加,如RDI.1或RDI.2。因此,我们只关注原始参数寄存器作为不受信任的源。(3) 函数调用返回的指针。第三,调用约定根据不同的体系结构而有所不同;我们只讨论了x86_64体系结构。在二进制中,函数的返回值存储在RAX寄存器中,它可能为null。因此,我们在函数调用下标记RAX寄存器为不受信任的源,以防止null传播到当前函数。(4) 全局变量的指针。最后,如第三节中所述,全局变量位于数据段或bss段中。在二进制中,全局变量的地址由具体值表示,例如0×76 F0。通过内存加载或存储语句,如RAX = mem[0×76F0],将全局变量的使用表示为对具体地址的解引用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值