2026-09-17 · 原文发布日
每天自动产出漏洞暴露简报发Slack
免费n8n模板给安全运维用:每天定时拉取CISA已知被利用漏洞(KEV)清单,用NVD接口补充CVSS评分和受影响版本范围,可选地对接你的RMM/EDR/网络设备清单做暴露匹配,再用Tavily搜索近期安全新闻;对30天内已报的CVE和URL去重、算趋势后,交给Google Gemini生成JSON格式的简报,发到Slack频道(有匹配时含“你的暴露面”部分)并把完整载荷存档到Google Drive。自带DEMO_MODE可用合成数据端到端试跑,PROBE_MODE只出探测报告不发消息。
原文要点
原模板是免费n8n工作流:每天17:30(Asia/Bangkok)定时触发,拉取CISA KEV的JSON清单取最新条目,逐条调NVD接口补CVSS评分与受影响版本范围;可选填RMM/EDR/网络设备API做暴露匹配,并用Tavily搜索近期安全新闻。对30天内已报的CVE和URL去重、算最高优先级CVE与类别趋势后交给Gemini生成JSON简报,发Slack(有匹配时含Your Exposure段)并存档到Google Drive。内置DEMO_MODE用合成数据端到端试跑,PROBE_MODE只出探测报告不发消息。
这次做成什么
在自有n8n里跑通一条「定时拉漏洞情报→富化去重→AI生成简报→发Slack并存档」的每日流水线;先用作者自带的DEMO_MODE合成数据端到端验证,再切真实凭据。本页给出一套可直接粘贴的配置与提示词练习方案。
准备什么
- 一个可登录的n8n实例(自托管或云端均可),能新建/导入工作流
- Google Gemini(PaLM API)密钥、Slack Bot Token、Google Drive OAuth2凭据
- 可选:Tavily Search API密钥(HTTP Header Auth方式)用于新闻段
- 可选:RMM/EDR/网络设备三个系统的API地址与HTTP Header Auth凭据
具体怎么做
导入模板并先开安全模式
在n8n导入该工作流后,找到配置节点(作者说明中的configuration flags),把DEMO_MODE设为true、PROBE_MODE设为true。PROBE_MODE下流程只输出探测报告、不真的发Slack,适合第一轮验证。
配置定时触发器
打开Schedule Trigger节点,作者默认每天17:30(Asia/Bangkok)运行;按需改成你的时区和cron表达式,保存后先手动Execute一次。
接入凭据
在Credentials里依次新建:Google Gemini(PaLM API)填API密钥;Slack用Bot Token并确认机器人已加入目标频道;Google Drive用OAuth2授权;如要新闻段,再以HTTP Header Auth建Tavily凭据,具体头名与格式以Tavily官方文档为准。在配置节点填目标Slack频道名,可选填DEEP_DIVE_URL附加链接。
核对数据流与字段映射
HTTP节点拉取CISA KEV的JSON feed,保留近期条目(常见字段cveID、vendorProject、product、dateAdded);随后对每个cveID调NVD接口补CVSS评分与受影响版本范围;去重逻辑以30天窗口内的CVE编号和URL为键;暴露匹配把KEV的受影响版本与设备清单的installedSoftware/firmware字段比对。逐节点点开确认字段名没有被你的改名破坏。
端到端试跑并切正式模式
DEMO_MODE下用合成车队/CVE数据跑完整流程,检查末尾是否产出探测报告且各节点无红错。确认无误后把PROBE_MODE改为false,手动执行一次:Slack频道应收到含「Your Exposure」段(有匹配时)的简报,Google Drive指定文件夹出现当日JSON存档;最后把DEMO_MODE改false接真实数据。
可直接复制的材料
每日漏洞简报生成提示词(本站独立编写)
本站按模板「Gemini生成JSON简报」环节独立编写,未复制原提示词;字段名需与你工作流中实际拼接的上下文变量一致,粘贴到Gemini节点的提示词框。
你是企业安全运营简报撰写员。下面给你三段JSON上下文:kevList为最新CISA已知被利用漏洞(含cveID、vendorProject、product、cvssScore、affectedVersions、dateAdded),exposureFindings为与我方设备清单匹配出的暴露项(含deviceName、matchedSoftware、cveID),newsList为近期安全新闻(含title、url、publishedAt)。
要求:
1. 只输出一个JSON对象,不要输出任何额外文字或markdown代码块。
2. JSON结构固定为:{"date":"YYYY-MM-DD","topPriorityCve":"字符串","topPriorityReason":"字符串","kevSummary":[{"cveId":"","product":"","cvss":0,"action":""}],"yourExposure":[{"device":"","cveId":"","risk":""}],"newsDigest":[{"title":"","url":"","oneLine":""}],"trendNote":"字符串"}。
3. topPriorityCve从kevList中按CVSS评分与是否命中exposureFindings综合选出一条。
4. 若exposureFindings为空数组,yourExposure输出空数组,不要编造设备。
5. action字段用一句不超过40字的中文给出处置建议(如“48小时内升级至X.Y以上版本”)。
6. trendNote用不超过80字概括本周漏洞类别趋势。
上下文数据如下:
{{ $json.context }}配置旗标与频道示例(本站独立编写)
本站设计的配置示例,键名需对照原模板配置节点的实际字段名调整;DRIVE_ARCHIVE_FOLDER_ID换成你自己Drive文件夹ID;先保持两个MODE为true做干跑。
{
"DEMO_MODE": true,
"PROBE_MODE": true,
"SLACK_CHANNEL": "#sec-daily-brief",
"DEEP_DIVE_URL": "https://example.internal/vuln-playbook",
"NEWS_ENABLED": false,
"EXPOSURE_MATCHING_ENABLED": false,
"RMM_API_BASE": "",
"EDR_API_BASE": "",
"NETWORK_API_BASE": "",
"DRIVE_ARCHIVE_FOLDER_ID": "1AbCDefGhIjKlMnOpQrStUv"
}合成KEV测试条目(本站虚构)
本站虚构的合成测试数据,字段参照CISA KEV公开feed结构并补了cvssScore/affectedVersions模拟NVD富化结果;仅在DEMO_MODE下使用,不代表真实漏洞。
[
{
"cveID": "CVE-2026-10001",
"vendorProject": "ExampleSoft",
"product": "EdgeGateway",
"vulnerabilityName": "ExampleSoft EdgeGateway 远程代码执行漏洞",
"dateAdded": "2026-09-15",
"dueDate": "2026-10-06",
"knownRansomwareCampaignUse": "Unknown",
"cvssScore": 9.8,
"affectedVersions": "< 4.2.1"
},
{
"cveID": "CVE-2026-10002",
"vendorProject": "NetDemo",
"product": "SwitchOS",
"vulnerabilityName": "NetDemo SwitchOS 认证绕过漏洞",
"dateAdded": "2026-09-14",
"dueDate": "2026-10-05",
"knownRansomwareCampaignUse": "Unknown",
"cvssScore": 7.5,
"affectedVersions": "2.0.0 - 2.3.4"
}
]输入与输出示例
本站虚构演示,展示提示词约束下应有的JSON形态,非调用Gemini的真实结果;未实际运行。
输入
DEMO_MODE下注入合成上下文:kevList含CVE-2026-10001(EdgeGateway,CVSS 9.8,影响<4.2.1)与CVE-2026-10002(SwitchOS,CVSS 7.5);exposureFindings含一条匹配{"deviceName":"branch-fw-03","matchedSoftware":"EdgeGateway 4.1.0","cveID":"CVE-2026-10001"};newsList为空。对应输出
{"date":"2026-09-17","topPriorityCve":"CVE-2026-10001","topPriorityReason":"CVSS 9.8且在branch-fw-03上检测到受影响版本4.1.0","kevSummary":[{"cveId":"CVE-2026-10001","product":"EdgeGateway","cvss":9.8,"action":"48小时内升级至4.2.1以上版本"},{"cveId":"CVE-2026-10002","product":"SwitchOS","cvss":7.5,"action":"本周内安排固件升级窗口"}],"yourExposure":[{"device":"branch-fw-03","cveId":"CVE-2026-10001","risk":"边界网关存在远程代码执行风险"}],"newsDigest":[],"trendNote":"本周新增条目集中于网络边界设备,远程代码执行类占比上升"}做完检查这些
- PROBE_MODE=true时手动执行能跑完全部节点并产出探测报告,Slack频道不收到任何消息
- DEMO_MODE下合成的CVE-2026-10001出现在Gemini节点的输出JSON中,且topPriorityCve字段非空
- 关闭PROBE_MODE后,目标Slack频道收到一条简报消息,且因存在暴露匹配而包含Your Exposure段落
- Google Drive指定文件夹中出现当日的完整简报JSON存档文件,文件名含日期
- 重复执行时,30天窗口内已报过的CVE和新闻URL不会再次进入简报
容易卡住的地方
- 作者称每天17:30按Asia/Bangkok触发,换时区必须改Schedule Trigger的时区字段,只改时间会偏移
- 三个设备清单API和Tavily都是可选的,留空时应确认配置节点走的是demo fleet/not-configured分支,否则HTTP节点会报连接错误
- Slack Bot Token必须把机器人邀请进目标频道,否则发消息节点报channel_not_found
- NVD接口有速率限制,KEV条目多时逐条富化可能触发限流,这是本条流水线的固有边界
- PROBE_MODE输出的是探测报告而非正式简报,别把它当作最终效果验收
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Send daily CISA KEV exposure briefings to Slack with Gemini and Google Drive
- 原作者
- Oliver Uribe
- 原始发布日期
- 2026-09-16T21:23:00.771Z
- 来源
- https://n8n.io/workflows/19660