Fabric improve_report_finding 模式实战:用 AI 将渗透测试发现打磨为高质量安全报告条目
2026/9/11 13:49:25 网站建设 项目流程

Fabric improve_report_finding 模式实战:用 AI 将渗透测试发现打磨为高质量安全报告条目

【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric

导读

improve_report_finding是 Fabric 开源框架内置的一枚面向网络安全场景的 Pattern(模式),它的任务很明确:把你从渗透测试报告中抽取出的原始安全发现(finding)作为输入,交给扮演资深安全顾问的大模型,产出一份结构完整、可直接写入评估报告的专业 Markdown 条目。读完本文,你将掌握该模式的定义文件结构、七个输出章节的设计意图与硬性约束,并学会用 Fabric CLI 管道命令把它接入自己的渗透测试工作流。

一、模式定位:它是安全报告流水线的"打磨车间"

Fabric 是一个"用 AI 增强人类"的开源框架,核心抽象是 Pattern:把一组精心撰写的指令(system 提示词)打包成可复用、可共享的能力单元,配合 stdin/stdout 管道,让任何命令行工具都能"接上"AI。仓库官方模式说明文档 pattern_explanations.md 对该模式的定义是:

improve_report_finding:通过提供详细的描述、风险、建议、参考文献、引文和简洁摘要,以 Markdown 格式改进渗透测试安全发现。

注意它与另一个模式的天然衔接——create_report_finding 负责"从漏洞标题和简要说明创建一份结构化安全发现",而improve_report_finding负责"对已拉取到报告中的发现进行增强打磨"。两者共享同一套章节骨架(Description / Risk / Recommendations / References / One-Sentence-Summary / Quotes),可以理解为一条流水线上的两站:先创建、后完善。

模式定义文件位于 data/patterns/improve_report_finding/system.md,文件末尾以INPUT:收尾,说明该模式面向管道输入设计——原始 finding 文本从 stdin 流入,改进后的报告条目从 stdout 流出。

二、角色设定:为什么让它扮演"通才安全顾问"

system.md开头的 IDENTITY and PURPOSE 段落对模型做了非常具体的人设约束:

你是一名经验极其丰富的"多面手"网络安全顾问,勤勉、简洁但信息丰富且专业。你在 Web、API、基础设施(本地与云端)和移动端测试方面经验丰富。此外,你是威胁建模与分析方面的专家。

这段设定的价值在于:

  • 覆盖 Web、API、基础设施(含本地与云)、移动端四大测试面,保证模型在面对不同来源的 finding 时都能给出符合行业语境的描述;
  • 明确威胁建模与分析能力,让 Description 和 Risk 章节的分析不止于表面现象,而是能推断攻击路径与业务影响;
  • "简洁但信息丰富"的措辞与后文输出指令中"不使用加粗/斜体"、"只用项目符号"等约束呼应,从人设层面预先压制废话输出。

从源码结构看,Fabric 把 Pattern 存储在data/patterns目录(旧版路径为patterns),每个模式一个子目录,通常包含system.md(系统提示词)和可选的user.md(用户提示词)。路径迁移与加载逻辑可在 patterns_loader.go 的gitCloneAndCopytryPathMigration中看到:加载器会从远程仓库按data/patterns前缀拉取模式目录,若旧路径未找到则自动迁移到新结构。

三、七个输出章节:逐节拆解设计意图

模式的核心工作流由 STEPS 段落定义,要求模型对输入 finding 进行"退一步、逐步思考",最终产出七个章节。下面逐节解析其含义与要点。

1. Title:一句话点题

创建包含 finding 标题的 Title 章节。标题应精确反映漏洞对象与问题本质,例如"任意文件上传导致远程代码执行"。它同时是报告目录和检索的锚点,因此要求准确、无歧义。

2. Description:用叙述而非列表描述问题本质

创建描述 finding 性质的 Description 章节,包含有洞察力和信息量的内容。不要仅用项目符号列表。

这条指令有两个关键点:

  • 要求模型写出"有洞察力"的分析,即不满足于复述"存在 XX 漏洞",而要解释触发条件、利用链、受影响组件等;
  • 明确禁止"仅用项目符号列表",强制模型用连贯叙述成段输出。这正是渗透测试报告中常见痛点——工程师倾向于堆砌技术要点,而客户与管理层需要可读的上下文说明。

3. Risk:量化与叙述并重的风险陈述

Risk 章节详述风险,同样禁止仅用项目符号。它应包含影响范围、被利用后的业务后果、可能的严重性评估,为报告评审者提供决策依据。

4. Recommendations:5 至 15 条精选修复建议

从报告中提取 5 到 15 条最令人惊讶、最有洞察力和/或最有趣的建议,放入名为 Recommendations 的章节。

注意两点:

  • 建议的"出处"是输入报告本身——模式期望输入内容足够丰富,包含可提炼的修复思路;
  • 数量区间被硬性规定为 5~15 条,输出约束段落又进一步要求"其他输出章节至少 10 项",二者共同保证建议章节的充实度。

5. References:1 至 5 条经过命名的可靠参考链接

创建 References 章节,列出 1 到 5 个命名得当的超链接,可即时访问关于该问题、技术与修复方法的知识性文章。不要臆造,如果不确定就不要表现得自信。

这是本模式中最强调"事实边界"的一条指令:链接必须真实可达、主题相关、命名有意义,严禁幻觉编造。这与 AI 生成安全内容时的最大风险点——虚构 CVE 编号、伪造参考链接——直接对抗。

6. One-Sentence-Summary:25 词以内的白话总结

创建一条捕捉 finding 精神及其洞察的摘要句,少于 25 个词,放入 One-Sentence-Summary 章节。使用平实口语化的语言,不要用行话或营销语言。

摘要面向报告执行摘要或评审快速通道,要求"口语化、无行话",例如"登录接口对失败尝试缺少限制,攻击者可无限猜测口令"而不是堆砌专业缩写。

7. Quotes:10 至 20 条原文引文

从输入中提取 10 到 20 条最令人惊讶、最有洞察力和/或最有趣的引文,放入 Quotes 章节。优先选取 Description、Risk、Recommendations 和 Trends 章节的文本,使用输入中的原文。

引文必须"逐字取自输入",作用是保留原始报告中的关键证据句,便于审计与追溯;约束"不要重复引文"、"不要以相同开头词开始条目"则防止模型偷懒凑数。

四、输出约束:把格式纪律写进提示词

OUTPUT INSTRUCTIONS 段落定义了不可逾越的格式纪律,这是该模式工程化程度最高的部分:

  • 只输出 Markdown,且不输出 Markdown 代码语法标记,只输出内容本身——保证结果可直接粘贴进报告;
  • 不使用加粗或斜体格式;
  • 至少提取 5 条 TRENDS(趋势)——注意 STEPS 段落并未单独定义 Trends 章节,但输出约束强制要求它存在,这形成了"步骤未列、输出必有"的隐性章节;
  • 除 Trends 外的输出章节至少 10 项;
  • 不给出警告或注释,只输出要求的章节;
  • 输出使用项目符号列表,而非编号列表;
  • 不重复引文或参考文献;
  • 条目不得以相同开头词起始;
  • 必须遵守以上全部指令。

这些约束组合在一起,产出的将是一份格式统一、可直接纳入报告文档的条目,大幅降低人工格式化成本。

五、实战:在 Fabric CLI 中调用该模式

5.1 基础管道调用

Fabric 的典型用法是"数据进管道、结果出管道"。假设你已将原始 finding 保存为finding.txt,可以执行:

cat finding.txt | fabric --pattern improve_report_finding

或使用简写形式:

fabric -p improve_report_finding < finding.txt

若希望看到逐 token 流式输出(适合长报告即时预览),追加--stream

cat finding.txt | fabric -p improve_report_finding --stream

该调用方式的依据见 flags.go:-p, --pattern参数用于"从可用模式中选择一个模式"。README 中大量示例均采用此管道模式,例如pbpaste | fabric --pattern summarizefabric --stream --pattern analyze_claimsimprove_report_finding的使用方式与之完全一致。

5.2 配合会话与上下文

Fabric 支持会话(session)与上下文(context)机制,可把多轮打磨串起来:先用create_report_finding生成初稿,再以improve_report_finding精修,中间用-s指定会话名保存过程,便于回归对比。

5.3 模式管理与发现

  • 列出全部模式:fabric -l(对应 listing.go 中的ListPatterns分支,会调用fabricDb.Patterns.ListNames);
  • 查看模式原文:fabric --readpattern improve_report_finding(对应同一文件ReadPattern分支,直接打印system.md内容到终端);
  • 更新模式:fabric -U,触发 patterns_loader.go 的PopulateDB,从默认仓库(https://github.com/danielmiessler/fabric.gitdata/patterns目录)拉取最新模式集合并保留自定义模式;
  • 查看最近新增模式:fabric -n 10

5.4 安装模式后的目录位置

模式文件随 Fabric 初始化下载到本地配置目录,仓库内的data/patterns/improve_report_finding/即其源形态(包含system.md)。若你希望调整提示词,可在本地对应目录编辑system.md——但注意仓库本身是只读交付物,自定义应发生在你自己的安装目录。

六、周边生态:与相关模式的配合使用

improve_report_finding并非孤立存在,仓库中围绕安全报告场景还提供了一系列配套模式,共同构成完整工作流:

  • create_report_finding:从漏洞标题与简要说明生成结构化 finding 初稿,章节骨架与本模式完全一致;
  • write_hackerone_report:面向 HackerOne 平台提交场景的报告撰写模式;
  • write_nuclei_template_rule:面向 Nuclei 扫描规则编写;
  • write_semgrep_rule:面向 Semgrep 静态分析规则编写。

推荐的一条实战链路是:Nuclei/Semgrep 扫描结果 →create_report_finding生成初稿 → 人工补充复现细节 →improve_report_finding精修打磨 → 汇总进渗透测试报告。这样既保留了自动化效率,又通过两段式设计留出人工介入点,符合"AI 增强人类"的框架理念。

七、使用建议与边界

  1. 输入质量决定输出上限:Recommendations 与 Quotes 都要求"从输入中提取",因此喂给该模式的原始 finding 越详实(包含复现步骤、影响分析、修复思路、趋势观察),产出的报告条目越饱满。稀疏的输入会产生同样稀疏的输出。
  2. References 需要人工复核:虽然提示词明令禁止臆造链接,但任何 LLM 都可能出错,将 References 链接加入报告前应逐条人工验证可达性与相关性。
  3. 格式约束不要删减:系统提示词中的输出约束(不用粗体、只用项目符号、最少条目数)是保证报告风格统一的关键,本地定制时建议保留核心约束,只调整角色描述与章节侧重。
  4. 配合威胁建模模式使用:若原始 finding 缺少风险分析,可先用 analyze_risk 或 create_stride_threat_model 补足上下文,再交给本模式生成最终条目。

结语

improve_report_finding展示了 Fabric 模式设计的精髓:把安全专家的行文规范、格式纪律与事实边界全部显式编码进提示词,让通用大模型也能稳定产出专业级渗透测试报告条目。对于安全团队而言,将它接入现有扫描与报告流水线,可以在保持人工审核的前提下显著压缩报告撰写时间,让工程师把精力留给真正需要人类判断的漏洞分析与修复决策。

【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询