- 博客(109)
- 收藏
- 关注
原创 LLM for program analysis
检查(针对CWE-476)。一个关键的观察是,尽管LLM过于拘泥于为声明的变量插入检查,但它经常忽略结构体中字段可能是问题根源的情况,导致在此测试中的结果不佳。(1).最基础的prompt如下,作者先前的研究表明,如果没有明确的instruction来限制对“vulnerable”或“non-vulnerable”的response,模型经常会产生多余且不确定的结果。作者基于GPT-4o (gpt-4o-2024-05-13)、GPT-4 (gpt-4-turbo-2024-04-09)、GPT-3.5。
2025-01-10 15:52:29
981
原创 Versioned Staged Flow-Sensitive Pointer Analysis
要么是间接调用指令,或者是可能被间接调用的函数的入口指令,这里用到的是AUX分析出的间接调用结果(paper中给出的形式化描述有点晦涩难懂,看SVF代码分析的)。压缩后的point-to map会被赋予version id,可用来获取对应的point-to map,这里version。完整的传播规则如下图所示,红框中标出的为VSFS相比SFS改进的部分,传播过程的多了查询version的步骤。的入口处consume的version,返回的是version,也就是入口处version。
2024-09-06 22:46:34
836
原创 Value-Flow分析工具Pinpoint
Pinpoint曾经开源,不过目前已经商业化,因此参考资料只能找到paper,不过其design还是很有参考意义的。相比和的(即先进行全程序指针分析 -> 全程序value-flow分析 -> 全程序bug检测),Pinpoint采用的整体性设计在分析时采用整体性设计原则进行,因此能减少很多不必要的性能开销。
2024-08-05 17:57:36
816
原创 SyzDescribe: Syscall Description Generation For Kernel Fuzzing
一种自动生成syzkaller规约的方法
2024-01-25 19:37:44
1339
原创 间接调用分析工具2
大概就是通过约束求解的方式遍历所有可能指向的function,每个function都会记录在什么条件下执行。可以看到在求解indirect call时fork出了4个状态,每个对应1个icallee。可能指向的一个地址。中给函数指针赋值处fork了4次,每个状态都只对应到1个callee。可以看到klee是可以求解出每个call-site分别调用了哪些函数。klee输出如下,可以看出klee同样有求解该icall的能力。,可以分配的函数都会分配一个全局对象,长度为8。将函数在符号内存上的地址映射到函数。
2023-11-17 15:21:54
50
原创 间接调用分析工具
符号,后续需要手动分析,不过它们的主要应用场景是云端code search、code navigation,可能并不需要太复杂的代码分析。在上面2个示例程序中,注册回调函数实现函数指针的操作很常见,用sourcegraph和github-code分析依旧会指出同symbol的所有引用位置,并不会采用严格的数据流分析。cpg的函数指针分析受限于data flow的结果,导致只有在很简单的情况下能正确link icallsite。和curl一样,linux中的icall存在复杂的回调函数调用链,跨越多个函数。
2023-11-17 15:19:17
115
原创 SVF Saber的实现
Saber检测内存泄漏的工作流程FileChecker 类实现对File操作的检查。DoubleFreeChecker 类实现对DoubleFree的检查。LeakChecker 类实现对Use-After-Free和其它泄漏漏洞的检查。其中 DoubleFreeChecker 和 Fil
2023-01-08 22:09:09
1381
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人