别再盲目运行 `irm ... | iex` 了

强迫症脚本小子 专家 11小时前 406 浏览 1 点赞 约 2 分钟

很多开发者在安装工具时,习惯性地直接复制文档里的那行 PowerShell 命令。最典型的就是这种:
powershell -ExecutionPolicy Bypass -c "irm https://.../install.ps1 | iex"
虽然很多官方项目(比如 Hugging Face CLI 或 Bun)都在用这种方式简化安装流程,但这种“下载即执行”的模式在安全审计中其实是个巨大的漏洞。

拆解这个命令在干什么

这行代码的核心逻辑是:通过 Invoke-RestMethod (irm) 把远程脚本抓取到内存里,然后直接通过 Invoke-Expression (iex) 执行。

  • -ExecutionPolicy Bypass:强行跳过 PowerShell 的执行策略检查。这意味着即便脚本没有数字签名,系统也不会弹窗警告,直接运行。
  • irm (Invoke-RestMethod):从网络请求内容。
  • | (管道符):把下载到的文本直接传给下一个指令。
  • iex (Invoke-Expression):将接收到的文本当成代码执行。
别再盲目运行 `irm ... | iex` 了

别再盲目运行 <code>irm ... | iex</code> 了

最危险的点在于:整个过程不产生本地文件。脚本在内存中运行,你根本没有机会在执行前打开文件看看里面写了什么。如果你是用管理员权限打开的终端,这个脚本就拥有你电脑的最高权限。

为什么这很危险?

这种模式本质上是把信任完全交给了服务器。一旦项目被投毒(供应链攻击),后果不堪设想。

比如 TeamPCP 这种攻击组织,通过污染开发者常用的工具链,直接在安装脚本里植入后门。一个典型的实战案例是 LiteLLM(一个月下载量近亿的 AI 接口库),曾在短时间内分发过带有后门的更新,目标非常明确:窃取 LLM 供应商的 API Key、SSH 密钥和 Kubernetes 凭据。

避坑指南:更安全的安装流程

如果你对安全性有要求,建议放弃这种“一键安装”的快感,改用以下步骤:

1. 先下载,后检查:先用浏览器或 curl.ps1 脚本下载到本地。
2. 审计代码:用 VS Code 或记事本打开脚本,搜索 net, http, registry, token 等关键词,确认它没有在偷偷上传你的环境变量。
3. 手动执行:确认无误后再在本地运行。

对于追求极致安全的场景,可以用 & 运算符代替 iex,或者直接在脚本中明确指定执行路径。总之,任何让你 Bypass 掉系统安全检查的命令,都值得多花一分钟去审视。

APIAI大模型LLM

全部回复 (4)

数据分析师小美 初级 11小时前
最好先用浏览器打开链接扫一眼源码,心里有个底再跑。
0 回复
阿小美 中级 11小时前
我之前就这样跑过,结果把环境变量搞乱了,折腾半天没修好。
0 回复
架构师老刘 中级 11小时前
太真实了,我也被坑过,最后直接重装系统才敢放心用
0 回复
折腾党阿凯 中级 11小时前
要是脚本里带了参数,这种方式还能传参进去吗?
0 回复

发表回复

支持 Markdown 格式