<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>LiteLLM | Feisky</title><link>https://feisky.xyz/tags/litellm/</link><description>极客时间专栏作者，专注于 Kubernetes、AI Infra、AI Agent 领域的深度技术分享，让 AI 成为你的第二大脑</description><generator>Hugo 0.165.0</generator><language>zh-CN</language><managingEditor>Pengfei Ni</managingEditor><webMaster>Pengfei Ni</webMaster><lastBuildDate>Fri, 14 Aug 2026 12:39:05 +0000</lastBuildDate><atom:link href="https://feisky.xyz/tags/litellm/index.xml" rel="self" type="application/rss+xml"/><item><title>总把软件升到最新版？是时候改改这个习惯了</title><link>https://feisky.xyz/posts/2026-03-26-%E8%BD%AF%E4%BB%B6%E5%8D%87%E7%BA%A7%E6%9C%80%E6%96%B0%E4%B9%A0%E6%83%AF%E8%A6%81%E6%94%B9%E4%B8%80%E6%94%B9%E4%BA%86/</link><pubDate>Thu, 26 Mar 2026 10:01:00 +0800</pubDate><dc:creator>Pengfei Ni</dc:creator><category>供应链安全</category><category>AI安全</category><category>OpenClaw</category><category>Trivy</category><category>LiteLLM</category><category>软件工程</category><guid>https://feisky.xyz/posts/2026-03-26-%E8%BD%AF%E4%BB%B6%E5%8D%87%E7%BA%A7%E6%9C%80%E6%96%B0%E4%B9%A0%E6%83%AF%E8%A6%81%E6%94%B9%E4%B8%80%E6%94%B9%E4%BA%86/</guid><description>&lt;p&gt;做技术的人大都有个习惯：看到依赖库有新版本，第一反应就是升上去。CI/CD 流水线里配好了 Dependabot、Renovate，小版本自动提 PR，有些团队甚至设了自动合并。一个 patch 版本号的变化，changelog 里写着几个 bug fix，看起来毫无风险，顺手就合了。&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>做技术的人大都有个习惯：看到依赖库有新版本，第一反应就是升上去。CI/CD 流水线里配好了 Dependabot、Renovate，小版本自动提 PR，有些团队甚至设了自动合并。一个 patch 版本号的变化，changelog 里写着几个 bug fix，看起来毫无风险，顺手就合了。</p><p>大版本升级倒是大家都知道要谨慎，毕竟 breaking changes 摆在那儿，不测不行。但小版本呢？一个 0.69.3 到 0.69.4 的变化，谁会仔细去审核上游的每个变更？</p><p>最近发生的三件安全事件，让我觉得这个“小版本放心升”的默认心态，得改一改了。</p><h2 id="安全扫描工具自己被投毒了">安全扫描工具自己被投毒了</h2><p>3 月 19 日，安全圈炸了一个大雷：Trivy 被供应链攻击了。</p><p>Trivy 是 Aqua Security 开源的容器安全扫描工具，在 CI/CD 流水线里用得非常广，很多团队拿它来扫描容器镜像、检查依赖漏洞。结果这次，扫描工具自己成了攻击入口。</p><p>攻击者是一个叫 TeamPCP 的组织，手法相当老练。他们先是利用 Trivy GitHub 仓库里一个配置不当的<code>pull_request_target</code> 工作流，偷到了一个有特权的 Personal Access Token。Aqua Security 发现后做了密钥轮换，但轮换不彻底，攻击者手里还留着能用的凭证。</p><p>然后事情就失控了。3 月 19 日下午，攻击者用残存的凭证对<code>trivy-action</code> 仓库的 76 个版本标签做了 force-push，把所有 tag 指向了恶意代码。同时还触发了发布流程，把带后门的 v0.69.4 推到了 GitHub Releases 和容器镜像仓库。</p><p>恶意代码做的事情超乎你的想象：扫描 Runner 环境里的 AWS、GCP、Azure 凭证、SSH 密钥、Kubernetes Token、Docker 配置，加密后外传到一个伪装成 Aqua 官网的域名<code>scan.aquasecurtiy.org</code>（注意这个拼写错误，把 security 拼成了 securtiy）。而且整个过程不影响正常扫描，工作流看起来一切正常，你根本不知道自己的密钥已经被偷了。</p><p>更离谱的是，Aqua 团队在 3 小时内控制住了 GitHub Actions 的问题，但攻击者还留了后手。3 月 22 日，他们用另外获取的 Docker Hub 凭证，直接往 Docker Hub 推了 v0.69.5 和 v0.69.6 两个恶意镜像。Mandiant 后来确认，超过 1000 个云环境在这次攻击中被入侵。</p><p>如果你在用 Trivy，安全版本是 v0.69.3，<code>trivy-action</code> 升到 v0.35.0，<code>setup-trivy</code> 升到 v0.2.6。更重要的是，GitHub Actions 里所有第三方 Action 都应该锁定到 commit SHA，不要用可变的 tag，tag 是可以随时被 force-push 篡改的。</p><h2 id="安全扫描工具把下游也拖下水了">安全扫描工具把下游也拖下水了</h2><p>Trivy 的故事还没完。3 月 24 日，LiteLLM 也中招了。</p><p>LiteLLM 是做 AI 开发的人应该都不陌生，它是一个统一的 LLM 代理网关，也是 Anthropic 官方推荐的 LLM Gateway 之一。月下载量 9500 万，CrewAI、DSPy、Browser-Use 这些主流框架都依赖它。</p><p>LiteLLM 的 CI/CD 流水线里用了 Trivy 做安全扫描（对，又是安全扫描），而且没有锁定版本。构建时从 apt 拉了最新的 Trivy，正好拉到了被污染的版本。被污染的 Trivy 在扫描过程中偷走了 LiteLLM 的 PyPI 发布密钥 。</p><p>拿到密钥后，攻击者在 3 月 24 日上午连发了两个恶意版本。1.82.7 把恶意代码 base64 编码后藏在<code>litellm/proxy/proxy_server.py</code> 里，只要 import 了<code>litellm.proxy</code> 就会触发。1.82.8 更狠，往<code>site-packages/</code> 目录塞了一个<code>litellm_init.pth</code> 文件。Python 的<code>.pth</code> 机制会在解释器启动时自动执行，也就是说只要你的环境里装了这个版本，哪怕你没 import litellm，跑个<code>pip install</code> 或者 IDE 的语言服务器启动一下，后门就已经在跑了。</p><p>后门做的事情和 Trivy 那个如出一辙：扫描 SSH 密钥、云凭证、加密钱包、Slack 和 Discord Token、各种<code>.env</code> 文件，打包加密后外传。如果检测到 Kubernetes 环境，还会在集群里部署特权 Pod 做更多恶意行为。</p><p>好在 PyPI 团队反应快，3 小时就把恶意版本下架了。但 LiteLLM 日均下载 340 万次，3 小时的窗口期也不短了。</p><p>当前 Li 特 LLM 的安全版本是 1.82.6。如果你在 3 月 24 日那个窗口期内跑过<code>pip install litellm</code>，建议当作一次完整的凭证泄露事件来处理：轮换所有密钥，检查<code>site-packages/</code> 下有没有<code>litellm_init.pth</code>，排查系统里有没有可疑的进程服务等。</p><p>回过头看这条攻击链，一个安全扫描工具被攻陷，导致用它的项目被偷走发布密钥，进而污染了数千万下载量的 Python 包。如果 LiteLLM 的 CI 里锁定了 Trivy 的版本，这条链路就断了。</p><h2 id="openclaw-大更新微信飞书一起崩">OpenClaw 大更新，微信飞书一起崩</h2><p>第三个故事不是安全问题，但同样是急着升级惹的祸。</p><p>3 月 22 日，OpenClaw 发了 v2026.3.22 版本。这是个大版本，包含 12 个 breaking changes、一个新的默认插件商店 ClawHub、30 多个安全补丁。</p><p>然后，微信刚上线 72 小时的 ClawBot 插件直接崩了。飞书插件也崩了。DingTalk、WhatsApp 也没幸免。</p><p>根本原因是 OpenClaw 重构了插件 SDK 的导入路径，把原来的统一入口<code>openclaw/extension-api</code> 直接删了，要求所有插件迁移到新的路径<code>openclaw/plugin-sdk/core</code>。没有兼容层，没有过渡期，所有还在用旧路径的插件启动就报 Cannot find module。</p><p>同时，新版本把安全防御逻辑下沉到了执行管道最底层，原来用简单字符串过滤的第三方插件全部触发 dangerous code pattern detected 告警。</p><p>更尴尬的是，新版本的 npm 包里漏打了<code>dist/control-ui/</code> 目录，Dashboard 直接 503。这个文件在 Git 仓库和 Docker 镜像里都有，就是 npm 发布的时候漏了。</p><p>OpenClaw 官方在 12 小时内发了 v2026.3.23 热修复，微信的 ClawBot 也跟着修了。但如果你当时已经升了 v2026.3.22，可能已经发现你的龙虾🦞压根就没法访问了。</p><h2 id="升级的姿势得讲究一些了">升级的姿势，得讲究一些了</h2><p>回过头看这三件事，问题不在“该不该升级”，而在“怎么升”。</p><p>Trivy 是小版本号的变化（0.69.3 → 0.69.4），看起来就是个 patch，但被投毒了。LiteLLM 也是小版本升级（1.82.6 → 1.82.7），CI 里没锁版本就自动拉了最新的。OpenClaw 是大版本带了 12 个 breaking changes，但很多人看到有新版就直接升了。</p><p>三个不同的故事，根源其实是同一个默认假设：新版本比旧版本好，修了很多安全问题，升就对了。</p><p>这个假设正在变得越来越危险。现在 AI 的能力越来越强，软件供应链攻击的手法也在跟着进化。这次 TeamPCP 用的 hackerbot-claw 就是一个自主运行的攻击机器人，能自动寻找 GitHub Actions 的配置漏洞、自动提取凭证、自动传播。当攻击本身都在用 AI 加速的时候，防御这边反而应该慢一拍，多一层验证。</p><p>与此同时，很多团队的安全策略还是“有 CVE 就修，有新版就升”。开源和闭源项目也都在推进自动安全扫描、自动更新依赖库版本，甚至要求任何 CVE 都必须第一时间修复。这个思路本身没错，但这周的事情暴露了一个盲区：你升级到的那个最新版本，未必是安全的，甚至可能正好是攻击者刚投毒的版本。</p><p>所以，不是说不该更新，而是更新的习惯得调一调。</p><p>依赖锁定是基本功。<code>package-lock.json</code>、<code>poetry.lock</code>、<code>go.sum</code> 这些锁文件要认真对待，不要随便<code>npm update</code> 或者<code>pip install --upgrade</code>。GitHub Actions 的第三方 Action 锁定到 commit SHA，不要用可变的版本标签。这次 Trivy 的事件已经证明了，tag 是可以被 force-push 篡改的。</p><p>生产环境的更新更要适当延迟。等个几天，让社区先踩一轮坑，再决定要不要跟进。自动升级的 PR 不要自动合并，小版本也不例外。</p><p>关注你依赖的关键项目的安全公告。Trivy 这次从发现到控制只用了 3 小时，但如果你没关注它的安全通告，可能两天后才知道自己中招了。</p><p>快速修补所有 CVE 这个策略听起来很安全，但你修补的速度，可能正好赶上攻击者投毒的窗口。稳一步，反而更安全。</p><p>相关资源：</p><ul><li><a href="https://www.aquasec.com/blog/trivy-supply-chain-attack-what-you-need-to-know/">Trivy 供应链攻击官方通报</a></li><li><a href="https://github.com/aquasecurity/trivy/security/advisories/GHSA-69fq-xp46-6x23">Trivy 安全公告 GHSA-69fq-xp46-6x23</a></li><li><a href="https://docs.litellm.ai/blog/security-update-march-2026">LiteLLM 安全更新公告</a></li><li><a href="https://www.sonatype.com/blog/compromised-litellm-pypi-package-delivers-multi-stage-credential-stealer">Sonatype：LiteLLM 多阶段凭证窃取分析</a></li><li><a href="https://github.com/openclaw/openclaw/releases/tag/v2026.3.22">OpenClaw v2026.3.22 Release Notes</a></li><li><a href="https://github.com/openclaw/openclaw/releases/tag/v2026.3.23">OpenClaw v2026.3.23 热修复</a></li><li><a href="https://www.crowdstrike.com/en-us/blog/from-scanner-to-stealer-inside-the-trivy-action-supply-chain-compromise/">CrowdStrike：Trivy 攻击链分析</a></li></ul><hr><p>欢迎长按下面的二维码关注<strong>Feisky</strong> 公众号，了解更多云原生和 AI 知识。</p><p><img src="/images/mp.png" alt="Feisky 公众号二维码" loading="lazy" decoding="async"/></p>
]]></content:encoded><dc:extent>6 min read</dc:extent></item></channel></rss>