安全 · 综合

代码的供应链

一句话: 你的代码只占生产环境运行内容的少数——大部分风险在你引入的包和构建它们的工具里。

依赖该怎么处理

用锁文件锁定版本、定期按计划升级而不是一年一次大跃进,以及在构建流水线里做自动漏洞扫描。

添加之前先看:上次更新是什么时候、有多少维护者、会连带拉进多少依赖。一个为了一个函数就拉进几十个包的库,不是节省。

流水线本身也是攻击目标

构建工具能访问密钥和生产环境。限制权限、不要在有特权的上下文里运行不可信代码,并规定安装脚本不能在构建服务器上不受控地运行。

知道自己在跑什么

每次发布都有一份最新的组件清单。当一个严重漏洞被公布时,第一个问题是「我们有没有」——而没有清单的人要为此浪费一天去查。

深入一层

对包和镜像签名,并在部署前验证签名。在仓库里:要求同行评审、禁止直接推送到主分支、验证推送者的身份。大多数供应链事件始于一个被攻破的开发者账号,而不是代码里的漏洞。