阿里云PostgreSQL漏洞技术分析及应对策略

云安全公司Wiz披露了阿里云数据库服务ApsaraDB RDS for PostgreSQL和AnalyticDB for PostgreSQL的一连串严重漏洞。这些漏洞被Wiz命名为“BrokenSesame”,允许攻击者突破租户的隔离保护机制,从而未授权访问其他阿里云客户的PostgreSQL数据库,并能够对数据库服务进行供应链攻击,严重威胁到阿里云客户的数据安全。

技术细节

AnalyticDB for PostgreSQL

权限提升

在数据库容器中发现了一个每分钟运行一次的cronjob任务,执行名为/usr/bin/tsar的二进制文件,并具有root权限。

<code>$: ls -lah /etc/cron.d/tsar -rw-r--r-- 1 root root 99 Apr 19 2021 /etc/cron.d/tsar $: cat /etc/cron.d/tsar # cron tsar collect once per minute MAILTO="" * * * * * root /usr/bin/tsar --cron > /dev/null 2>&1</code>
图片[1]-阿里云PostgreSQL漏洞技术分析及应对策略-山海云端论坛

使用ldd命令查看该二进制文件的依赖关系,发现它从可写的/u01目录加载共享库。

<code>$: ldd /usr/bin/tsar ...</code>

利用这一点,编译了一个共享库,使其具有root权限,然后覆盖了原来的共享库,以便在下次cronjob任务执行时以root身份执行。

图片[2]-阿里云PostgreSQL漏洞技术分析及应对策略-山海云端论坛

容器逃逸到宿主机(K8s节点)

虽然成功提升了权限,但缺乏执行容器逃逸的能力。通过调用阿里云门户中的某些操作(例如启用SSL加密),观察到了多个进程的生成,这些进程在其命令行中包含了我们的容器中不存在的路径。利用Python脚本观察到了第二个容器中的进程,并最终通过修改SSH客户端配置文件实现了在第二个容器中执行代码。

从K8s横向移动到供应链攻击

通过访问K8s API服务器,利用节点的kubelet凭证,发现了属于同一集群中其他租户的pod,暴露了多租户集群的漏洞。

云数据库RDS for PostgreSQL

文件泄露原语

在数据库容器中发现了一个/tmp/tools_log目录,其中包含一个名为docker_tools.log的奇怪文件,暴露了容器的操作日志,提供了有用的信息。

利用RCE并逃逸到主机(K8s节点)

在版本升级检查功能中发现了一个命令行注入漏洞,允许在负责此操作的容器中执行代码,最终以root身份在主机(K8s节点)上获得了反向shell。

总结

这些漏洞的发现暴露了阿里云数据库服务的严重安全风险,允许攻击者突破隔离保护机制,获取未授权访问权限,从而威胁到阿里云客户的数据安全。阿里云在修复这些漏洞之前应该采取紧急措施以保护客户数据的安全。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容