PHP包管理器PEAR 中爆多个缺陷可发动供应链攻击,已潜伏15年
聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士团队
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
瑞士安全公司 SonarSource 的漏洞研究员 Thomas Chauchefoin 指出,密码重置函数的弱熵中存在一个漏洞,可导致PEAR开发人员账户遭恶意接管。之后,攻击人员可通过滥用过时捆绑依赖版本中的另外一个漏洞,获得对PEAR中心服务器的永久访问权限。
这些缺陷已存在超过15年的时间。Chauchefoin 指出,这些缺陷由安全研究员而非攻击者发现是“幸运逃脱”,因为“PEAR仓库遭攻陷,可导致攻击者劫持托管在平台上的任意包”并公开恶意发布。
自PHP包管理器 Composer 占据主导地位后,PEAR 已失宠。不过SonarSource 公司的研究员去年同样在Composer 主仓库中发现了一个类似的严重漏洞。
然而,PEAR 仍使用广泛,单是每个月通过 PHP 安装器下载的 Net_SMTP 和 Mail 包就高达10万次。
Chauchefoin 指出, “威胁行动者仅需最少的技术专业知识就能轻松找到并利用” 这些供应链漏洞,“在全球引发重大破坏和安全泄露事件”。
PEAR 的密码重置函数使用 mt_rand () 生成随机值,即使该技术已过时并不适合生成加密安全值。一旦通过 md5() 拼接并对这些值进行哈希,“最终的值仅基于两个未知值,即mt_rand() 和 time() 的输出。第一个函数无法生成很多值(10),第二个函数可轻松遭攻击者预测。另外,pear.php.net 的HTTP 服务器在响应中增加了Data 标头,将其仅缩小到某些数量的值(<5)。”
研究人员总结称,攻击者尝试50次以内就能够确保一个合法的密码重置令牌。
Chauchefoin 指出,即使第一个漏洞已被修复,但第二个漏洞提供的后门可被继续用于发动攻击,“它还可通过修改访问日志来隐藏踪迹”。这个漏洞产生的原因在于 pearweb 拉取Archive_Tar 的版本14.7易受 CVE-2020-36193 影响,该漏洞是一个目录遍历漏洞,可导致在PEAR上执行远程代码。
研究人员在2021年7月30日将这些漏洞告知 PEAR 维护人员。这两个漏洞已在3月13日发布的pearweb 版本1.32中修复了这些漏洞,所有之前的版本均受影响。
然而,Chauchefoin 建议PEAR用户“迁移至 Composer,因为Composer 的贡献者社区更加活跃,并且也存在同样的程序包”。
针对PEAR和类似开发者工具的软件供应链攻击具有重大影响,因为开发人员经常会在部署到生产服务器之前在计算机上运行这些工具,“从而使攻击者能够跳转到企业的内部网络中”。
这些PEAR 缺陷已存在如此长的时间,说明依赖于包管理器的资源丰富的企业保护措施还不够。研究人员解释称,“包管理器的后端服务仅获得安全贡献人员的少量关注,然而,这些后端服务是每种语言生态的中心组件。”
Chauchefoin 援引 Composer、CocoaPods 和 RubyGems中的缺陷时指出,“以后还会出现类似漏洞,因此清除我们给予后端服务的信任将减少这些漏洞的影响;sigstore 是一个不错的解决方案,我们应当推动它的采用。”
https://portswigger.net/daily-swig/supply-chain-flaws-in-php-package-manager-pear-lay-undiscovered-for-15-years
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 "赞” 吧~