过去几个月,特别是最近几周,开源软件生态系统遭遇的供应链攻击数量明显上升。PHP生态也没能独善其身,接连发生了几起攻击事件,攻击者通常通过接管GitHub账号或窃取访问令牌,在无合法权限的情况下为软件包打上新标签。比较引人注意的是5月22日被攻击的laravel-lang和4月30日的intercom/intercom-php。
这篇文章呈现的,是Composer和Packagist.org在供应链安全建设上的最新进展:哪些措施已经落地、接下来几周会上线什么,以及我们正在推进的远期项目。安全这件事,我们专注了将近一年,现在也到了该把这些工作集中梳理清楚的时候。如果你在Packagist.org上维护着任何软件包,还没启用多因素认证的话,现在就请立刻打开。我们即将开始把维护者的MFA状态发布到软件包透明日志中,也会显示在公开资料页上,具体细节可以看下文MFA相关部分。
目前已经到位的安全措施包括:Packagist.org和Composer消费的包元数据中已经集成Aikido恶意软件检测,同时对其他具备适当免费许可的数据提供商保持开放。Packagist团队还建立了快速人工事件响应机制。公开透明日志已经准确记录了最近攻击中利用的git标签修改行为。
本周即将发布的内容挺关键。Composer 2.10会引入统一的依赖策略框架,涵盖被恶意软件标记的版本、漏洞公告以及已弃用的软件包。Packagist.org上还会落实稳定版本不可变性,意思是打过标签的版本不能再通过git仓库重新打标签的方式偷偷替换掉。Private Packagist也会上线新的供应链安全功能,实现组织级管控,未来几天还会有相关文章详细展开。Composer的安装下载行为变得更容易预测了,源码回退的逻辑会被逐步废弃。
未来几周到几个月内,Composer将支持最小发布年龄或者说冷却期的依赖策略。Packagist.org的管理工具也会增强,包括人工恶意软件源覆盖、面向旧版Composer客户端的下架功能,以及在账户被实时入侵期间冻结软件包。MFA相关事件也会浮现在透明日志上,维护者的多因素认证状态会直接显示在个人资料里。组织级包所有权这个功能,会替代共享公司账号的老做法,提供适当的多用户管理和按包供应商范围限制的配置能力。
更长远看,整个Packagist.org会强制推行多因素认证,组织层面会有更严格的要求。对于用户基数庞大的软件包,还会要求采用FIDO2支持的阶段发布流程。Packagist.org本身将直接托管不可变的构建产物,同时在Composer客户端侧验证SLSA构建溯源和Sigstore证明。规划中,Composer和Packagist这套体系也要对齐OpenSSF仓库安全授权等级3以及相关安全原则草案所提出的方向。
热门跟贴