你搭了个沙箱,把不可信代码关进去。文件系统锁死,网络只放行一个域名,危险系统调用全禁。看起来万无一失?有个盲区,而且不小。
我在开发 Canister 时撞上了这个问题。这是个轻量级 Linux 沙箱,用用户命名空间、seccomp 和网络隔离来跑不可信命令,不需要 root,也不需要容器运行时。但这个盲区不是 Canister 独有的——任何用域名白名单做网络策略的沙箱都有,而市面上大多数沙箱正是这么干的。
![]()
问题出在哪?假设你在跑 npm install,需要访问 registry.npmjs.org。你把这域名加进白名单,安装顺利完成。但刚装的依赖里藏着这段代码:
![]()
它读取你主目录下的 AWS 凭证,转成 base64,然后通过 DNS 子域名查询分段发出去。你的网络策略允许 DNS,没连向未授权域名,沙箱和网络过滤器都正常运作——但数据就这么泄了。
再举个例:构建脚本要把日志发到允许的分析端点,顺手把你的 SSH 私钥 base64 编码后一起 POST 过去。端点是白名单里的,请求合法通过,密钥却跟着走了。
这就是网络层策略封不住的口子。威胁不只是未授权连接,而是数据正从授权通道流出去。
![]()
这并非杞人忧天。2025 年 11 月,Shai-Hulud 蠕虫第二波(Sha1-Hulud)袭击 npm 仓库,感染了 Zapier、ENS Domains、PostHog 等数百个包。恶意代码在 preinstall 阶段运行,安装凭证扫描器,把 GitHub 令牌、npm 令牌、AWS 密钥和 SSH 密钥批量发往攻击者控制的仓库。
几乎同期,LiteLLM 项目披露了 Python 生态的多项严重漏洞,包括 SQL 注入、认证绕过和服务器端模板注入,可串联利用来窃取凭证。
这些不是孤立事件,而是一种模式:包仓库正在成为大规模凭证收割的基础设施。白名单能挡住未授权域名,却分辨不出合法 API 调用和编码后的敏感数据。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.