Packagist PHP存储库中的一个缺陷可能允许供应链攻击
SonarSource的研究人员披露了PHP软件包存储库Packagist中一个现在固定的漏洞( CVE – 2022 – 24828)的详细信息,该漏洞可能被利用来进行供应链攻击。受此影响存储库的维护者在数小时内解决了这个问题。
” Sonar发现并负责任地披露了PHP供应链的核心组件Packagist中的一个关键漏洞,以帮助保护开发人员工具”。
此漏洞允许获得Packagist的控制权。PHP包管理器Composer使用它来确定和下载开发人员在其项目中包含的软件依赖项。
几乎所有运行PHP代码的组织都在使用Composer,它每月服务20亿个软件包。在这些请求中,有超过一亿的请求可能被劫持以分发恶意依赖项,并危害数百万台服务器。
专家们指出,攻击者可能触发了高严重性缺陷,以控制服务器分发有关现有PHP软件包的信息,并可能损害使用这些软件包的每个组织。
CVE – 2022 – 24828( CVSS评分: 8.8分)缺陷是一个命令注入问题,专家解释它与另一个命令注入Composer漏洞有关,被跟踪为CVE – 2021 – 29472。
在我们的安全研究中,我们发现了Packagist使用的Composer源代码中的一个关键漏洞。它允许我们在Packagist . org服务器上执行任意的系统命令。” SonarSource在2021年4月发布的帖子写道,”这样一个中央组件中的漏洞,每月服务超过100M的包元数据请求,具有巨大的影响,因为这种访问可能被用来窃取维护者的凭据或将包下载重定向到提供后门依赖关系的第三方服务器。”
下面是攻击者利用Packagist漏洞的分步过程:
· 在远程汞的存储库中创建一个项目;
· 将清单放入Composer . json中,并添加一个恶意的自述条目;
· 当使用如上所述的有效负载时,创建一个名为load . sh的文件来执行所需的操作;
· 在Packagist上导入包,并请求包的更新。
下一步将是修改包的定义,使其指向一个目的地,并损害使用它们的应用程序;这是我们已经在我们的Insomni ‘ hack talk中论证过的,不会在本文中再次呈现。生产实例packagist.org上此漏洞的可利用性也通过无损命令得到了证明。”
专家强调,后端服务在包的名称和包管理器应该从哪里下载它之间执行关联。这意味着攻击者可以对这些服务进行妥协,迫使用户在下一次根据2021年的数据重新安装或更新Composer包时下载后门软件依赖项。这个问题会影响大多数开源和商业PHP项目,因为Composer是PHP的标准包管理器。