news 2026/4/22 3:50:08

前端最近不太平啊!Storybook 再曝严重漏洞:你的密钥、数据库密码可能已经在“裸奔”了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端最近不太平啊!Storybook 再曝严重漏洞:你的密钥、数据库密码可能已经在“裸奔”了

前脚 React 刚被曝出严重的安全漏洞 毁灭吧!React又爆两大漏洞,请(再次)速查!,让大家忙着升级补丁;后脚作为前端组件开发神器的Storybook又传来“噩耗”。

就在几天前,Storybook 官方发布了一则紧急安全公告:在特定配置下,你的 Storybook 构建产物可能会直接将.env文件中的所有环境变量(包括敏感密钥)打包进去,并公之于众。

这可不是危言耸听,如果你的项目正以此方式部署在公网上,你的 API Key、数据库密码可能已经在“裸奔”了。

发生了什么?

事情的起因是 Storybook 在处理环境变量时存在一个 Bug(CVE-2025-68429)。

简单来说,当你在项目中使用 Storybook 7.0 及以上版本,并且在构建(Build)过程中使用了.env文件来管理环境变量时,Storybook 的某些机制可能会错误地将整个 .env 文件的内容包含在最终生成的静态文件中。

这意味着,任何人只要访问你部署好的 Storybook 页面,通过查看源码或者网络请求,就有可能获取到你原本只想在本地或构建阶段使用的私密信息。

谁是受害者?(请立刻自查)

并不是所有使用 Storybook 的人都会中招。根据官方公告,只有同时满足以下条件的项目才会受影响:

  1. 版本范围:使用的是 Storybook7.0.0及以上版本。

  2. 构建环境:在包含.env文件(包括.env.local等变体)的目录中运行了storybook build

  3. 代码模式:你的代码(包括manager.js/ts或使用的插件)中包含特定的process.env访问模式,例如:

  • 解构赋值:const { MY_SECRET } = process.env

  • 对象展开:{ ...process.env }

  • 直接赋值:const env = process.env

  • 公网发布:你将构建好的静态 Storybook 发布到了公网上。

  • 注意:如果是 CI/CD 环境(通常通过平台环境变量而非.env文件注入),或者仅在本地运行storybook dev,通常是不受影响的。

    但是,值得警惕的是,官方审计发现,Top 100 的 Storybook 插件中,有几个常用插件的代码模式会触发这个漏洞,其中包括:

    • @chromatic-com/storybook(Visual Tests addon)

    • @storybook/addon-designs

    这意味着,即使你自己的代码写得很小心,你引入的插件也可能把你“卖”了。

    如何自救?

    官方已经发布了紧急补丁。解决办法非常简单粗暴:升级!立刻升级!

    请确保你的 Storybook 版本不低于以下安全版本:

    • v10.x用户:升级到10.1.10+

    • v9.x用户:升级到9.1.17+

    • v8.x用户:升级到8.6.15+

    • v7.x用户:升级到7.6.21+

    在升级并重新构建发布之前,建议先轮换(Rotate)掉所有可能已泄露的密钥。安全无小事,不要抱有侥幸心理。

    这次事件再次给我们敲响了警钟。

    在现代前端开发中,我们习惯了使用 Webpack、Vite、Storybook 等各种工具。我们往.env里塞各种配置,以为它是安全的“后端”领域。但实际上,前端构建工具的最终产物是完全公开的静态资源

    任何试图混淆“构建时环境变量”与“运行时环境变量”边界的行为,都可能埋下雷。

    对于.env文件,最好的实践永远是:不要在.env文件中存放任何真正的生产环境机密(Secrets),除非你明确知道它们会被如何处理。对于必须使用的密钥,尽量通过 CI/CD 平台的 Variables 功能注入,而不是依赖提交到仓库或本地残留的文件。

    参考来源:Storybook Security Advisory: https://storybook.js.org/blog/security-advisory/*

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:58:08

3、C 入门:“Hello World” 程序详解

C# 入门:“Hello World” 程序详解 1. 类、对象和类型基础 在 C# 中,类型通常由类来定义,类的单个实例被称为对象。虽然 C# 中除了类还有其他类型,如枚举、结构体和委托,但这里我们主要关注类。 “Hello World” 程…

作者头像 李华
网站建设 2026/4/17 19:29:44

Go 性能分析的“新范式”:用关键路径分析破解高并发延迟谜题

大家好,我是Tony Bai。“如果你喜欢快速的软件,那么你来对地方了。”在 GopherCon 2025 上,来自 Datadog 的工程师、Go Performance and diagnostics小组成员 Felix Geisendrfer 以这样一句开场白,将我们带入了一个 Go 性能分析的…

作者头像 李华
网站建设 2026/4/22 2:10:14

C#文件读取

File介绍using System.IO;IO输入和输出File:文件的一些读写操作的类,主要包括功能,文件读写、对文件的复制、剪切、删除、创建等操作方法Create()创建一个文件流,指定文件位置,//文件位置可以是…

作者头像 李华
网站建设 2026/4/18 6:23:46

28、Drupal开发参考:模板、测试、钩子与架构详解

Drupal开发参考:模板、测试、钩子与架构详解 1. 模板可用变量 在开发过程中,有一些辅助变量可供使用: - $classes_array :HTML类属性值的数组,在 $classes 变量中被展平为字符串。 - $is_admin :当前用户为管理员时标记为 true 。 - $is_front :在首页显…

作者头像 李华
网站建设 2026/4/21 15:25:48

无需专业录音设备:GPT-SoVITS对普通麦克风录音友好支持

无需专业录音设备:GPT-SoVITS对普通麦克风录音友好支持 在短视频博主用自己声音批量生成解说、听障用户定制专属语音助手、独立游戏开发者为角色赋予真实声线的今天,个性化语音合成早已不再是实验室里的高岭之花。一个令人惊讶的事实是——你不需要动辄上…

作者头像 李华