packagist.org存在远程执行代码,数十万PHP包可能受影响

BaCde  2289天前

packagist.org存在一处远程执行代码漏洞,该网站是PHP包管理器Composer背后的默认包服务器,它集合了与Composer一起安装的公开 PHP 软件包。根据官网数据显示Packagist目前每月提供约4亿次包下载目前根据官网显示共有193360包,也就是说该漏洞可能造成这193360包受到影响,可能被植入后门等风险。

漏洞

任意攻击者都可以在提交包的时候输入$(execute me)的形式,它将在shell中执行任意命令(两次)。
.png为什么

界面中通过提供Git,Perforce,Subversion或Mercurial存储库的URL将包上传到Packagist。Packagist 会在后端调用gitp4svn,和hg,与对应的URL作为参数,提供给上述3个应用程序执行特定的命令。

通过检测ProcessExecutor::execute用于运行shell命令的方法,以打印执行的命令。对于URL $(sleep 1),它将运行以下内容:

git ls-remote --heads '$(sleep 1)'
hg identify '$(sleep 1)'
p4 -p $(sleep 1) info -s
svn info --non-interactive $(sleep 1)

以上代码中p4命令和 svn命令都代入了该代码,最终导致了命令执行。

解决

Packagist团队通过转义 Composer存储库中的相关参数快速解决了这个问题

结论

针对包管理器的包的攻击在最近两年都有发生,例如针对python的包管理,rubygems的攻击方法,其包管理器存在的漏洞那么影响是巨大的。开发者自己多注意的同事,包管理的机构也应该提高自身安全,做好安全防护措施。

最新评论

昵称
邮箱
提交评论