SegmentFault思否 · 2021年12月24日

Azure 应用服务发现“NotLegit”漏洞!

近日,Wiz 研究团队在 Azure 应用程序服务中检测到一个不安全的默认行为——“NotLegit”漏洞。这意味着,使用 PHP、Python、Ruby 或 Node 语言编写的“本地 Git”部署应用程序的源代码或该遭暴露。据悉,“NotLegit”漏洞自 2017 年 9 月以来就存在,目前或已经被攻击者利用。

据了解,Wiz 早在 2021 年 10 月 7 日就向微软方面报告了这一安全漏洞,目前已得到缓解。但对小型企业客户来说或仍有潜在暴露风险,这里也提醒他们应采取某些行动,来保护他们的应用程序,详细可查看微软于 2021 年 12 月 7日- 15 日发布的电子邮件通知。
image.png

安全漏洞:本地 Git 存储库可公开访问

Wiz 方面提醒称,将 Git 存储库部署到 Web 服务器和 storage buckets 时,千万要确保 .git 文件夹是未上载的。这是因为 .git 文件夹包含源代码、开发人员的电子邮件等其他敏感数据。

而通过“本地 Git”的方式部署到 Azure 应用程序服务时,Git 存储库是在任何人都可以访问的公共可访问目录(/home/site/wwwroot)中创建的(Wiz 称这是微软众所周知的“怪癖”)。为了保护用户个人文件,微软将“web.config”文件添加到限制公用访问的 .git 文件夹公用目录里,但仅 Microsoft IIS web 服务器可以处理“web.config”文件(如果使用 IIS 部署的 C# 或 ASP.NET 应用程序,这种缓解措施也同样有效)。

问题来了,由于 PHP、Ruby、Python 或 Node 这些编程语言是与不同的 web 服务器(Apache、Nginx、Flask 等)一起部署的,而这些服务器又不处理“web.config”文件,所以上面的缓解措施是无效,也正因为如此,使用这些编程语言的应用就非常容易受到“NotLegit”漏洞攻击。

基本上,“NotLegit”漏洞——恶意攻击者所要做的就是从目标应用程序获取“/.git”目录,并检索其源代码。

有趣的是,微软 web 的配置文件由于一个输入错误(配置标记未正确关闭),这使得 IIS 无法解析该文件,也因此在此次漏洞事件中“幸免于难”。

同时微软也发现使用其他 Git 部署工具的用户同样或被暴露:若任何 Git 部署之前,在 Azure 应用程序服务容器中创建或修改了文件(使用 FTP、Web 部署或 SSH),服务就会进入“就地部署”状态,此状态会强制未来在可公开访问的目录中启动任何 Git 部署。

“NotLegit”漏洞:受影响范围

自 2017 年 9 月以来,所有在 Azure 应用程序服务中使用“Local Git”部署的 PHP、Node、Ruby 和 Python 应用程序或都受到该“NotLegit”漏洞的影响。唯一未受此安全漏洞影响的应用程序,是基于 IIS 的应用程序.

众所周知,Git 文件夹是一个常见的安全问题,但很多用户根本没有意识到这一点。

恶意攻击者会不断扫描互联网,寻找暴露的 Git 文件夹,并从中收集机密和知识产权。除源代码可能包含密码及访问令牌等秘密外,泄露的源代码还经常被用于进一步复杂的攻击,如收集科技巨头研发部门信息、了解内部基础设施以及查找软件漏洞等。

通过用户错误,意外的暴露了 Git 文件夹是一个安全问题,甚至会影响大型国际活动。“NotLegit 漏洞”的突出之处在于云用户是无辜的:他们并未错误地暴露他们的 Git 文件夹——Azure 服务,但因为安全问题发生在 Azure 服务中,所以云用户才被大规模暴露,但这是他们并不知情也无法控制的事情。
image.png
对于此次事件,推特上不少开发者用户纷纷鼓励所有受影响的用向微软上报 “NotLegit 漏洞”,在了解此问题的严重性之后,微软也及时采取了措施调查和缓解此问题。

在刚刚过去的 12 月 7-15 日,微软已向所有受影响的用户发送了不同的通知。同时,微软还为发现该问题的 Wiz 团队提供了 7500 美元的奖金。

关于 Azure 应用程序服务

Azure 应用程序服务(又名 Azure Web 应用程序),是一款基于云计算用于托管网站和Web应用程序的平台。该服务易于使用,因此非常流行:

1、选择受支持的编程语言和操作系统。
2、使用FTP、SSH或从Git服务(如GitHub或专用Git存储库)提取源代码,在Azure托管服务器上部署应用程序源代码或构件。
3、部署后,internet上的任何人都可以在 * .azurewebsites.net domain 域下访问该应用程序。

关于“本地Git”:

Azure 可通过多种方式将源代码和构件部署到Azure应用程序服务,其中一种方式就是“本地Git”。通过“Local Git”,用户可在 Azure 应用程序服务容器中启动一个本地 Git 存储库,这样就能将代码直接推送到服务器。

推荐阅读
关注数
4139
内容数
719
SegmentFault 思否旗下人工智能领域产业媒体,专注技术与产业,一起探索人工智能。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息