自动化一点点技术分析
codeql相关
2025-12-18(四)12:27:20
ID:6S0Btd7 (PO主) [举报]
No.67673312
管理
po第一次用codeql应该是21年附近,企业存在审计需求所以做了一部分的相关工作与学习。
当时codeql能参考的数据量与规则量还很少,最近为了面试再次进行了学习。
在污点传播算法中,原理性的重点在于三方面,下面我们以反序列化漏洞为例。
1.souce
分为remote和local两种,重点关注的是调用了反序列化函数的地方。
java中关键词可能是readObject,hashcode,decode,serializable等等。
python中可能是decode,loads,unserializable,dumps等等。
可以将他们根据语言的不同定义为不同的规则souce规则。
PS:可以写很多然后用类似继承的方式进行聚合。
2.sink
sink就是可能可以产生危害的点。
java中可以是runtime,transform,fileinputStream,URLClassloader等等。
python中可以是exec,os,call,eval,file等等,也可以直接是loads。(区别点在于python有PVM用于字节码解析。)
3.flow(chain?)
这个主要是在自动化审计时候会出现断链问题与误报多,大多数源于语言特性。
例如java会有动态代理情况会断链,会有多继承情况,有同类名情况增加误报。
动态代理是否能够直接将继承了invocationHalder或者proxy的直接归入souce,这个误报率也会很高。
这时候就需要寻找他们的细微差异了,同类名是否存在不同的参数个数,是否有不同的继承等等用于区分与降误报。
不过AI现在分析这些都很快了,可以多借助学习(*´∀`)