在我使用 create-react-app 或 Razzle 创建了一个新应用程序后,在构建时会出现错误消息,这在安全方面非常令人担忧:
[Error: ENOENT: no such file or directory, stat '/initrd.img'] {
errno: -2,
code: 'ENOENT',
syscall: 'stat',
path: '/initrd.img'
}
有时,会出现一些其他消息,取而代之的是“/vmlinuz”、“/initrd.img.old”、“/vmlinuz.old”和“.steampath”。
这些消息会在出现构建错误(我生成的任何构建错误)时出现。
这与vue-CLI 输出非常相关的错误(安全问题)中描述的问题基本相同(但我被告知要问一个新问题)。在该线程中有三个人的证词具有相同的错误消息。
我认为 React 构建脚本没有任何正当理由来统计 Linux 内核和 Steam 目录,因此这里可能存在恶意软件包。
这只发生在 npm 上,而不是 yarn 上。(如果你的应用是由 CRA 用 yarn 创建的,你应该这样做rm -rf node_modules && rm -rf yarn.lock && npm install
);
在尝试隔离罪魁祸首时,我可以实现的最小设置是:
- 使用 create-react-app 创建一个全新的应用程序
npx create-react-app app1
- 然后在 中生成任意构建错误
index.js
,添加如下内容:import "nonexistent";
当我这样做时,我看到了stat '/initrd.img'
上面提到的错误。
我想知道在执行完全相同的步骤后您是否没有看到错误。这可能意味着它不是来自安装的软件包,而是来自我系统中的其他地方。
但它不能来自我的 Node.js 设置,因为我在重做以下步骤之前删除了我的 $HOME/.nvm、$HOME/.npm、$HOME/node_modules、$HOME/.yarn 和 $HOME/.config/yarn。
显然,网络上关于此的类似推荐并不多。虽然“/.steampath”多一点。
我向 security@npmjs.com 报告了这个问题。他们还没有回复。
如果react-create-app(和Razzle)的依赖树中确实存在恶意脚本,则应紧急调查。
环境:
- 节点 14.14 安装了 nvm 0.36.0
- npm 6.14.8
- 创建react应用程序 3.4.1
- 库本图 20.04
编辑:我还在https://github.com/facebook/create-react-app/issues/9855 上发布了一个问题。我认为这足够严重和紧急,现在应该通知 CRA 维护者。