文章总结: 该文档详细介绍了作者利用ClaudeSkills开发自动化代码审计工具的全过程。通过结合LSP协议实现代码智能跳转,构建了包含12个模块、5个阶段的审计体系,支持双向数据流追踪和业务逻辑分析。实战测试表明该工具能发现真实项目中的未公开漏洞,但攻击链自动识别能力仍需优化。文章提供了完整的架构方案和与传统工具的对比,展示了AI辅助安全审计的可行性。 综合评分: 85 文章分类: 代码审计,安全工具,AI安全,安全开发,漏洞分析
从灵感到落地:用Claude Skills实现”一键代码审计”全过程
Z2O安全攻防
2026年1月25日 20:54 北京
在小说阅读器读本章
去阅读
以下文章来源于Purpleroc的札记 ,作者Purpleroc
Purpleroc的札记 .
聊聊AI和安全,写写感受与经历。为了取代博客吧~
写在前面
先说结论:我用两天时间,让CodeBuddy帮我写了一套代码审计的Skill,拿去跑真实项目,还真能挖到未公开的漏洞。不过,离好用、通用,还需要不断优化和调整的。
这篇文章,我会从「为什么想做这件事」聊起,到「怎么一步步实现」,再到「实战效果如何」,最后把完整的技术方案也分享出来。如果你对AI辅助安全审计感兴趣,往下看。
一、起点:Skill到底是什么
去年10月,Claude提出了Skill的概念。那会儿我知道这回事,但没太在意。
直到12月,ui-ux-pro-max-skill火爆出圈,短视频刷到的全是各种Skill的使用介绍,GitHub也是一堆给Skill项目点star的动态。
于是想着,用ui/ux给小程序升级一下吧,让色调更活泼、交互更友好。用uipro init --ai cursor给cursor加了个command,之后用了起来。先不说效果吧——我当时最大的感受是:这东西,核心价值是把普通人口语化、不清晰、不规范的表达,转换成专业的、清晰的、规范的描述,让AI更懂你想要什么。
所以,Skill本质上是个降低专业门槛的工具。
那它和MCP什么区别呢?
还记得MCP火的时候,大家都说它给AI加上了「手」和「脚」,让AI有了更多输入和反馈能力。如果说MCP是手和脚,那Skill就是操作手册——比如篮球Skill可能就定义了什么时候拍球、什么时候跨步、什么时候起跳投篮。这么说,Skill有点workflow的意思了,但似乎又比workflow更加灵活一些。
所以叫「技能」嘛,有执行流程,也能调用「手」和「脚」。
二、灵光:Claude支持LSP了?
前几天刷视频,疯狂给我推Claude支持LSP了,说什么token减少40%之类的。
LSP是什么?全称Language Server Protocol(语言服务器协议)——就是把「跳转定义、自动补全、错误诊断、重命名重构」这些IDE的智能能力,从具体编辑器里抽出来,放进一个独立的服务进程,通过统一协议调用。
说人话就是:让Claude也能像你在VSCode里按Ctrl+点击一样,快速找到变量在哪声明的、函数在哪定义的——而不是每次都靠grep全局搜索。
搜索不仅慢,结果还可能很多,多了就浪费token、浪费钱。
三、碰撞:这两个东西加一起,不就是我想要的吗?
等等——
- • LSP能做各种代码跳转
- • Skill能写流程、调用工具
那我很早之前想过的那个事,是不是能实现了?
当时我想写一个VSCode插件,辅助做代码审计:从HTTP请求处理的地方开始,挨个函数跟下去,自动看逻辑、找漏洞。
现在,用Claude Code + Skill + LSP,似乎可以实现?
刚巧那天中午遛弯,又刷到另一个视频,大致是用CodeBuddy创建一个写PPT的Skill,能自动解析PDF、Excel,梳理内容,用指定风格生成PPT。
我想:那我是不是也可以创建一个「代码审计Skill」?
说干就干。
四、动手:周末两天,从零到一
于是,周末两天,各种push各种编码客户端。我轻声细语地给AI说:
> 核心诉求:我想做一个能"自动做代码安全审计"的Claude Skill,请帮我实现。
>
> 任务背景:我经常需要做代码审计,找出源码中的安全风险,生成漏洞报告。报告需要给出完整的source到sink的调用链路径,并提供漏洞触发PoC。我希望这个工具能一键搞定。
>
> 具体要求:
> 1. 仅针对Web框架,从HTTP请求入口出发作为source点
> 2. 支持正向审计:从source出发,完整分析代码逻辑,找调用链,理解业务,发现漏洞
> 3. 支持反向审计:通过规则梳理所有sink点,从sink往回找,最终必须能追溯到HTTP入口
> 4. 利用Claude LSP来做代码跳转和检索,而不是单纯搜索匹配
> 5. 最终漏洞必须可通过网络请求触发,需要完整调用链和PoC
> 6. 能组合多个漏洞/功能,构建完整攻击链
很顺利,第一版Skill就这么跑起来了。
五、靶场验证:效果还真不错
原本想支持Python、Java、Go三种语言。想了想,先从Python开始吧。
于是找了个Python靶场——PyHackMe。
随便一跑,你还别说,效果挺好,两三分钟跑完:
靶场测试结果和项目说明一对比,嘿,挺准的。信心来了。
但我转念一想:是不是因为它是靶场,漏洞名都写在路径上了?文件也少、代码量也小,不用Skill是不是也能找出来?
于是,去掉Skill再跑一次:
⏺ 安全审计完成。我已经生成了完整的安全审计报告。
审计结果摘要:共发现 16个安全漏洞
结果差别不大。(信心受打击了…
六、真刀真枪:拿真实项目试试水
靶场不够有说服力,那真实项目呢?
Python项目里跟大模型相关的挺多。我突然想起2月份的时候,WeDetect抓到过一个反序列化漏洞。去项目的issue和security看了看,似乎没人提CVE,可能还在。
于是clone下代码开跑。
结果出来一些漏洞,仔细看了一遍——都是些无伤大雅的,比如「存在沙盒的代码执行」之类。并没有出现我预期的那个反序列化漏洞。
仔细看了看代码,哦,某个版本被修掉了。
于是,回退到3月份的版本,再跑一次。
这下有了:
反序列化漏洞发现
这么看,效果是有的。
七、进阶挑战:能不能自动找出攻击链?
单点漏洞能找了,那复杂的攻击链呢?
想起之前RR挖的ComfyUI的洞,是多个步骤组合才能利用的。拿来试试。
于是把ComfyUI-Manager拉下来跑了一波。结果只找到了git下载和Python库安装的问题:
ComfyUI扫描结果1
ComfyUI扫描结果2
但并没有把完整攻击链组合起来。
手动看了看代码,发现是因为还需要ComfyUI主项目的代码一起分析。加上后,确实多跑出了几个漏洞。
但完整攻击链还是没出来。
于是我提示它:“那你看看userdata是不是可以用来更改安全级别呢?”
这下,它输出了完整的攻击链:
完整攻击链
看起来挺完美。
但问题是:怎么让它自动发现这个链路,而不是靠我提示?
我都知道洞在哪了,还需要你找啥呢?
八、自我进化:让AI反思,优化Skill
于是我反问它:
“反思一下,为什么第一次审计没有发现这个漏洞/攻击链路?结合当前Skill,站在通用漏洞发现的角度,给出优化建议——但不可以包含当前漏洞的信息和特征。”
于是它认真思考了一下:(下图是某个越权没找出来的反思,上面case的反思图没截到~
AI反思优化建议
就这样,一次一次让Skill反思、进化。
九、最终成果:12个模块、5个阶段的完整方案
经过多轮迭代,最终形成了一套完整的代码审计Skill体系。
架构图
┌─────────────────────────────────────────────────────────────────┐
│ code-security-audit (主控协调器) │
│ │
│ 协调所有Skill,按阶段执行审计流程,生成最终报告 │
└─────────────────────────────────────────────────────────────────┘
│
┌─────────────────────────┼─────────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Phase 1 │ │ Phase 2 │ │ Phase 3 │
│ 资产发现 │ │ 漏洞审计 │ │ 业务审计 │
├──────────────┤ ├──────────────────┤ ├──────────────────┤
│入口扫描 │ │Sink点扫描 │ │访问控制审计 │
│Sink点扫描 │ │数据流追踪(双向) │ │业务逻辑审计 │
│安全资产扫描 │ │漏洞验证 │ └──────────────────┘
│数据模型分析 │ │PoC生成 │
└──────────────┘ └──────────────────┘
│
▼
┌──────────────────┐
│ Phase 4 │
│ 攻击链分析 │
└──────────────────┘
审计流程
Phase 1: 资产发现
├─ web-entry-discovery → 发现所有HTTP入口
├─ sink-point-scanner → 扫描危险Sink点
├─ security-asset-scanner → 识别敏感配置和代码加载点
└─ data-model-analyzer → 分析数据模型和所有权关系
Phase 1.5: 入口功能分析
└─ entry-function-analyzer → 理解每个接口的业务逻辑
Phase 2: 技术漏洞审计 (反向追踪)
├─ dataflow-tracer → 从Sink往回追到Source
├─ vulnerability-validator → 验证漏洞是否真实可利用
├─ vulnerability-correlator → 搜索同类漏洞模式
└─ poc-generator → 生成可验证的PoC
Phase 2.5: 正向数据流追踪
└─ forward-flow-tracer → 从Source追到Sink
Phase 3: 业务逻辑审计
├─ access-control-auditor → 发现越权漏洞(IDOR/垂直越权)
└─ business-logic-auditor → 发现业务流程缺陷
Phase 3.5: 交叉验证
└─ 正向 + 反向结果交叉验证,减少漏报和误报
Phase 4: 攻击链分析
└─ attack-chain-analyzer → 漏洞组合利用分析
Phase 5: 报告生成
└─ 整合所有发现,生成Markdown格式审计报告
十、核心价值:和传统工具的区别
| 维度 | 传统安全扫描 | 这套Skill方案 | | — | — | — | | 漏洞类型 | 只能发现注入类技术漏洞 | 技术漏洞 + 业务逻辑漏洞 | | 追踪方式 | 单向追踪 | 双向追踪 + 交叉验证 | | 误报率 | 高 | 多层验证,显著降低 | | 业务理解 | 无 | 结合数据模型,理解资源所有权 | | 攻击链 | 单独漏洞分析 | 支持漏洞组合分析 |
写在最后
两天时间,从一个想法到一套可用的代码审计Skill,这个过程本身就挺有意思的。
关键在于:不是我在写代码,而是我在”训练”AI写代码。我的角色更像是产品经理+QA,负责提需求、验收结果、反馈问题,让AI不断迭代。
这套Skill目前只支持Python,后续计划扩展到Java和Go。如果你也对AI辅助安全审计感兴趣,欢迎交流。
最后的最后,这套方案的核心思想其实很简单:
Skill定义”怎么做审计”的流程和规范 LSP提供”看懂代码”的能力 Claude负责”理解和执行”
三者结合,就有了一个能自动挖漏洞的AI安全研究员。
虽然离完美还有距离,但确实能用一些些了。当然,随着不断使用,这里肯定会遇到越来越多的问题,然后Skill或者项目也会越来越复杂,这是肯定的。
在做加法的同时,可能也需要做减法,比如,是不是把覆盖的漏洞类型,再聚焦一点?
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Z2O安全攻防 《从灵感到落地:用Claude Skills实现”一键代码审计”全过程》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论