news 2026/4/16 10:37:26

基于污点分析的 AI 自动化漏洞挖掘尝试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于污点分析的 AI 自动化漏洞挖掘尝试

1.概述

参考资料

本文是受Protect AI的vulnhuntr项目的启发,结合自己的经验做的另一种AI挖洞的尝试,如下图所示:

与vulnhuntr思路不同的是,我们先逆向找到sink到source的链路,再利用AI做Source到Sink的正向污点分析来检测和判断整个链路的连通性。当然这种方式只适用于调用链不是很深的常规漏洞挖掘,因为链路查找如果不做污点分析,对于反序列化利用链这种情况会延伸出很多无效链路,肯定是不现实的。后面我也设计了V2版本来适配做反序列化利用链的查找,但是用AI测试的效果并不好,不过只是一种尝试罢了。

为什么想用AI做污点分析?

最初的想法:用AI做污点传递连通性检测可能更有优势,它的知识量很大而且很智能,根****据网页版交互使用体验和测试,它有时候确实能给你惊喜,所以做了下去。

2.调用链查找-工具端-V1版

参考资料

由于做Java方面多一些,对编译后的字节指令和源代码更熟练一点,后续部分都是以Java语言为例。

2.1 整体设计

大致分为两部分,一部分处理类信息库,一部分做反向搜索链的查找,如下图所示:

类信息库处理:

反向调用链查找:

2.2 为什么要反向找链

2.3 附加提示信息

附加信息可以提示AI做对应的转换处理。

3.链路连通性检测-AI端-V1版

参考资料

3.1 整体设计

由于目前Java对AI处理的适配性没有Python、JS好,所以做了API/RPC这种结构,AI端需要的信息从远程Java端进行获取,如下图所示:

整体思路就是从Java端拿到调用链信息,发送携带调用链信息的Request,响应的Response需要哪些信息,就在上一次Request的基础上添加这些信息,如此循环直到AI判断无法继续向下走或者拥有足够的信息能判断最终链路连通。

3.2 Prompt

主要就是限定请求模板和相应模板做数据映射和控制,以及具体的分析方法。

3.3 分析方法

这里还可以加入sanitize检测,但是目前AI对sanitize的检测不太行,而且很多bypass方法AI可能还没有人工处理得好,因此这里没有加入。

4.漏洞演示-V1版

参考资料

这个版本是去年做的,当时XAI的grok线上模型有免费的额度,用之前某cms旧版本做了下小测试,录了个演示视频,可以在此处观看:

5.一个JDK链引发的改版-V2版

参考资料

当时是一个朋友问我,虽然最初的想法本就不是做这种反序列化的利用链的挖掘,但是还是做了下尝试,然后引出了改版以适配做这种反序列化利用链挖掘,如果能适配好有能力挖掘反序列化利用链的能力,那挖常规漏洞更是易如反掌了。

6.试错-V2版

参考资料

中间做了很多试错的测试,最后得出用每两层之间做污点分析的方法:从上一层->sink,上上层->上一层…,通过使用这种思路,如果sink->上一层的通路都无法进行了,那就没必要继续了。这种方式提前加入污点分析,就能更早中止链路,防止后续无效链路的延伸。

7.条件控制-V2版

参考资料

为了防止无效链路出现,需要加入更多的条件控制,对于每两层调用,首先要做的就是检测被调用函数,如下图所示:

这里其实是对多态的处理,需要AI根据上下文推测实际的类型,如果没有绑定其他类型并且该处调用是属性对象、参数对象或经过污染的对象调用,那么这个位置才能被认为可以用被调用函数替代。

污点分析的条件控制:

图中红色标记处也是处理多态的情况,只是这是在两层调用之间出现的中间调用。

8.现实很骨感-V2版本

参考资料

由于控制条件太多,抑或是我的prompt无法准确描述想要的东西,测试过一些本地模型和线上模型,实际效果都不太好:

后面也想过做条件拆分,在代码中做结果整合,但是很棘手,因为漏洞本身就是需要上下文和条件控制的,仅根据我目前的认知,漏洞挖掘这个场景做条件拆分再组合我实在是很难办到。

9.结论

可以看到上面所做的工作,核心的东西都是利用prompt描述做控制,强依赖AI,中间过程具有极其的不稳定性。其实在做V1和V2版本的过程中,我就意识到自己在做一个对标codeql的东西,但是我知道凭我是肯定没办法实现codeql那种效果的,想用几千个文字描述codeql做的东西,确实有些异想天开了,不过较下劲尝试下,毕竟它有时候确实能给你惊喜。经过这一系列折腾,给我的感觉是对于这类条件控制很多或者需要精细处理的场景,AI只有赋能在已经具有稳定性的架构中,核心的东西不能过于强依赖AI,才可能最大的发挥AI的作用以及获得较好的效果。

以上只是本人结合AI做漏洞挖掘粗浅和拙劣认知,AI目前还有很多技术,结合这些技术或许能在自动化漏洞挖掘方面达到期望的效果。

网络安全学习路线&学习资源

网络安全的知识多而杂,怎么科学合理安排?

下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!

初级网工

1、网络安全理论知识(2天)

①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)

①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)

①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)

①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)

①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)

①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

【“脚本小子”成长进阶资源领取】

7、脚本编程(初级/中级/高级)

在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。

8、超级网工

这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。

网络安全工程师企业级学习路线

如图片过大被平台压缩导致看不清的话,可以【点这里】加我耗油发给你,大家也可以一起学习交流一下。

一些我自己买的、其他平台白嫖不到的视频教程:

需要的话可以扫描下方卡片加我耗油发给你(都是无偿分享的),大家也可以一起学习交流一下。

网络安全学习路线&学习资源

结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

特别声明:

此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:03:09

PaperRed 智能降重 vs 其他软件:核心优势全解析(2026 最新)

PaperRed 智能降重功能凭借双降同步、深度语义重构、学科精准适配等核心优势,在众多降重工具中脱颖而出,成为大学生论文优化的首选。以下从技术、功能、效果、价格四大维度,对比其与传统降重软件(如维普、PaperPass)、…

作者头像 李华
网站建设 2026/4/16 11:02:58

2026开年新风向:上下文即Teacher,三文详解Self-Distillation新范式

2026 开年三文连发,大模型如何靠上下文实现自我进化? 最近几天,MIT、ETH Zurich 和 UCLA 等团队,几乎在同一时间提交了关于 Self-Distillation 的重磅论文。 虽然它们分别探讨的是持续学习、强化学习和复杂推理,但在技…

作者头像 李华
网站建设 2026/4/16 12:46:57

Java面试题及答案整理(2026最新版,后端通用)

Java学到什么程度可以面试工作? 要达到能够面试Java开发工作的水平,需要掌握以下几个方面的知识和技能: 1. 基础扎实:熟悉Java语法、面向对象编程概念、异常处理、I/O流等基础知识。这是所有Java开发者必备的基础,也…

作者头像 李华
网站建设 2026/4/16 10:20:08

C++ 数组引用

一、先搞懂&#xff1a;为什么需要数组引用&#xff1f; 先看 C 语言 / 普通 C 代码的痛点&#xff1a;数组作为函数参数时&#xff0c;会自动退化为指向首元素的指针&#xff0c;丢失数组的长度信息和数组类型&#xff0c;比如&#xff1a; cpp 运行 #include <iostrea…

作者头像 李华