Azure App Service Linux源码仓库暴露
MSRC通过云安全供应商Wiz.io在协调漏洞披露(CVD)下获悉一个问题:客户可能无意中将.git文件夹配置在内容根目录中,从而导致信息泄露风险。当与配置为提供静态内容的应用程序结合时,他人可能下载本不应公开的文件。我们已通知我们认为受此影响的有限客户子集,并将继续与客户合作保护其应用程序。
客户影响
使用本地Git部署应用程序且在内容根目录中创建或修改文件后的App Service Linux客户受到影响。这是因为系统尝试将当前部署的文件保留为仓库内容的一部分,并由部署引擎(Kudu)激活所谓的就地部署。
以下编码为提供静态内容的应用程序受到影响:
- PHP:PHP运行时镜像配置为提供内容根文件夹中的所有静态内容。发现问题后,我们更新了所有PHP镜像,禁止将.git文件夹作为静态内容提供,作为深度防御措施。
- Node、Python、Java和Ruby:由于应用程序代码控制是否提供静态内容,建议客户审查代码以确保仅提供相关代码。
并非所有本地Git用户都受到影响。仅影响在应用程序中已创建文件后通过本地Git部署代码到App Service Linux的客户。 Azure App Service Windows不受影响,因为它运行在基于IIS的环境中。
微软的响应
微软在获悉此问题后采取了以下步骤:
- 更新所有PHP镜像,禁止将.git文件夹作为静态内容提供,作为深度防御措施。
- 通知因激活就地部署而受影响的客户,提供具体缓解指南。同时通知了将.git文件夹上传到内容目录的客户。
- 更新安全建议文档,增加关于保护源代码的部分。并更新了就地部署的文档。
技术细节
某些Web应用程序编码为提供内容文件夹中的所有文件作为静态内容。如果.git文件夹(包含源代码控制仓库的状态和历史)也在这些应用程序的内容文件夹中,他人可以通过向Web应用发出请求来下载文件。
.git文件夹可能出现在内容文件夹中的情况包括:
- 通过本地Git部署应用程序代码后,在Git之外在内容根目录中创建或修改文件。
- 通过SCM_REPOSITORY_PATH显式配置启用就地部署。这是高级用户操作。
- 在非Git部署到App Service期间,.git文件夹随应用程序代码包含。
内容文件夹中的.git文件夹与提供静态内容的应用程序结合,使应用易受源代码暴露的影响。
Wiz.io已发布关于此问题的博客文章此处。我们感谢Wiz.io发现此问题并与微软密切合作以帮助保护我们的客户。
MSRC团队