12 月 10 日凌晨,Apache 开源项目 Log4j2 的远程代码执行漏洞细节被公开,作为当前全球使用最广泛的 java 日志框架之一。该漏洞影响着很多全球使用量前列的开源组件,如 Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等。而且因为该漏洞利用方式简单,一旦有攻击者利用该漏洞,就可以在目标服务器上执行任意代码,给被攻击者造成极大危害。漏洞被公布后,厂商马上发布了新版本 log4j-2.15.0-rc1 对漏洞进行修复,并在之后更新了 log4j-2.15.0-rc2 进一步对漏洞进行了修复。

然而祸不单行,尽管大家修复 Log4j2 可能已经有些手忙脚乱,但是忙碌之余还是要分出精力来看看这个新的消息:微软 Azure 应用服务中存在一个名为“NotLegit”的漏洞,该漏洞影响所有通过“本地 Git”部署的 PHP、Node、Ruby 和 Python 应用。

漏洞详情

Azure 是用于托管网站和 Web 应用的平台,用户只需要选择支持的编程语言和操作系统,再使用 FTP、SSH 或通过从 Git 服务提取源代码在 Azure 托管的服务器上完成部署,就可以在 .azurewebsites.net 域中访问应用。因为使用方便,所以颇受开发者欢迎。而本次漏洞就出现在部署这一步。

正常的情况下,当开发者将 Git 存储库部署到 Web 服务器和存储桶时,因为包含敏感数据,因此不会上传 .git 文件夹。但是 Azure 设定,如果应用是通过本地 Git 部署到 Azure,那你的 Git 存储库就会变成所有人都可以访问的公开目录。当然为了保护敏感数据不暴露,微软在限制公共访问的 .git 文件夹中添加了“web.config”文件,让数据只能由微软 LLS 网络服务器处理。

漏洞就出现这里,因为这个只对用 LLS 部署的 C# 或 ASP.NET 应用有效。因为 Web 服务器无法处理“web.config”文件,因此如果是部署在不同 Web 服务器内的 PHP、Node、Ruby 和 Python 应用,那攻击者只要从目标应用组获取 /.git 目录,就可以得到对应的源代码。

漏洞应对

针对本漏洞,微软进行了以下应对:

  • 更新了所有 PHP 镜像,禁止将 .git 文件夹作为静态内容提供,以作为深度防御措施。
  • 更新了安全建议文档,增加了有关保护源代码的部分,还更新了本地部署的文档。

微软已经于 2021 年 12 月 7 日至 15 日之间通过邮件通知了被影响用户,提供了缓解问题的具体指导。

如果您没有收到邮件,您也不用第一时间着急,因为您可能没有被漏洞影响到,不受漏洞影响的范围如下:

  • 自 2017 年 9 月以来,在 Azure 应用服务中使用“本地 Git”部署的所有 PHP、Node、Ruby 和 Python 应用。
  • 从 2017 年 9 月起,在应用容器中创建或修改文件后,使用 Git 源代码部署在 Azure 应用服务中的所有 PHP、Node、Ruby 和 Python 应用。

而且微软也备注说明,本次漏洞只影响部署在基于 Linux 的 Azure 服务器上的应用。如果您的应用是托管在 Windows Server 系统上的,也不会受到漏洞影响。

本次漏洞由云安全供应商 Wiz 发现并提供,微软为其提供了 7500 美元的赏金。

最后,如果您有收到微软邮件通知,那还是要尽快根据邮件指导完成漏洞修复哦~

推荐阅读

如何快速搞定生产环境 Ansible 项目布局?

服务端渲染基础

03-05 14:24