近日,Wiz 研究團(tuán)隊(duì)在 Azure 應(yīng)用程序服務(wù)中檢測到一個(gè)不安全的默認(rèn)行為——“NotLegit”漏洞。這意味著,使用 PHP、Python、Ruby 或 Node 語言編寫的“本地 Git”部署應(yīng)用程序的源代碼或該遭暴露。據(jù)悉,“NotLegit”漏洞自 2017 年 9 月以來就存在,目前或已經(jīng)被攻擊者利用。
據(jù)了解,Wiz 早在 2021 年 10 月 7 日就向微軟方面報(bào)告了這一安全漏洞,目前已得到緩解。但對小型企業(yè)客戶來說或仍有潛在暴露風(fēng)險(xiǎn),這里也提醒他們應(yīng)采取某些行動,來保護(hù)他們的應(yīng)用程序,詳細(xì)可查看微軟于 2021 年 12 月 7日- 15 日發(fā)布的電子郵件通知。
“NotLegit”漏洞:
本地 Git 存儲庫可公開訪問
Wiz 方面提醒稱,將 Git 存儲庫部署到 Web 服務(wù)器和 storage buckets 時(shí),千萬要確保 .git 文件夾是未上載的。這是因?yàn)?.git 文件夾包含源代碼、開發(fā)人員的電子郵件等其他敏感數(shù)據(jù)。
而通過“本地 Git”的方式部署到 Azure 應(yīng)用程序服務(wù)時(shí),Git 存儲庫是在任何人都可以訪問的公共可訪問目錄(/home/site/wwwroot)中創(chuàng)建的(Wiz 稱這是微軟眾所周知的“怪癖”)。為了保護(hù)用戶個(gè)人文件,微軟將“web.config”文件添加到限制公用訪問的 .git 文件夾公用目錄里,但僅 Microsoft IIS web 服務(wù)器可以處理“web.config”文件(如果使用 IIS 部署的 C# 或 ASP.NET 應(yīng)用程序,這種緩解措施也同樣有效)。
問題來了,由于 PHP、Ruby、Python 或 Node 這些編程語言是與不同的 web 服務(wù)器(Apache、Nginx、Flask 等)一起部署的,而這些服務(wù)器又不處理“web.config”文件,所以上面的緩解措施是無效,也正因?yàn)槿绱?,使用這些編程語言的應(yīng)用就非常容易受到“NotLegit”漏洞攻擊。
基本上,“NotLegit”漏洞——惡意攻擊者所要做的就是從目標(biāo)應(yīng)用程序獲取“/.git”目錄,并檢索其源代碼。
有趣的是,微軟 web 的配置文件由于一個(gè)輸入錯誤(配置標(biāo)記未正確關(guān)閉),這使得 IIS 無法解析該文件,也因此在此次漏洞事件中“幸免于難”。
同時(shí)微軟也發(fā)現(xiàn)使用其他 Git 部署工具的用戶同樣或被暴露:若任何 Git 部署之前,在 Azure 應(yīng)用程序服務(wù)容器中創(chuàng)建或修改了文件(使用 FTP、Web 部署或 SSH),服務(wù)就會進(jìn)入“就地部署”狀態(tài),此狀態(tài)會強(qiáng)制未來在可公開訪問的目錄中啟動任何 Git 部署。
“NotLegit”漏洞:受影響范圍
自 2017 年 9 月以來,所有在 Azure 應(yīng)用程序服務(wù)中使用“Local Git”部署的 PHP、Node、Ruby 和 Python 應(yīng)用程序或都受到該“NotLegit”漏洞的影響。唯一未受此安全漏洞影響的應(yīng)用程序,是基于 IIS 的應(yīng)用程序。
眾所周知,Git 文件夾是一個(gè)常見的安全問題,但很多用戶根本沒有意識到這一點(diǎn)。
惡意攻擊者會不斷掃描互聯(lián)網(wǎng),尋找暴露的 Git 文件夾,并從中收集機(jī)密和知識產(chǎn)權(quán)。除源代碼可能包含密碼及訪問令牌等秘密外,泄露的源代碼還經(jīng)常被用于進(jìn)一步復(fù)雜的攻擊,如收集科技巨頭研發(fā)部門信息、了解內(nèi)部基礎(chǔ)設(shè)施以及查找軟件漏洞等。
通過用戶錯誤,意外的暴露了 Git 文件夾是一個(gè)安全問題,甚至?xí)绊懘笮蛧H活動?!癗otLegit 漏洞”的突出之處在于云用戶是無辜的:他們并未錯誤地暴露他們的 Git 文件夾——Azure 服務(wù),但因?yàn)榘踩珕栴}發(fā)生在 Azure 服務(wù)中,所以云用戶才被大規(guī)模暴露,但這是他們并不知情也無法控制的事情。
對于此次事件,推特上不少開發(fā)者用戶紛紛鼓勵所有受影響的用向微軟上報(bào) “NotLegit 漏洞”,在了解此問題的嚴(yán)重性之后,微軟也及時(shí)采取了措施調(diào)查和緩解此問題。
在剛剛過去的 12 月 7-15 日,微軟已向所有受影響的用戶發(fā)送了不同的通知。同時(shí),微軟還為發(fā)現(xiàn)該問題的 Wiz 團(tuán)隊(duì)提供了 7500 美元的獎金。
關(guān)于 Azure 應(yīng)用程序服務(wù)
Azure 應(yīng)用程序服務(wù)(又名 Azure Web 應(yīng)用程序),是一款基于云計(jì)算用于托管網(wǎng)站和Web應(yīng)用程序的平臺。該服務(wù)易于使用,因此非常流行:
1、選擇受支持的編程語言和操作系統(tǒng)。
2、使用FTP、SSH或從Git服務(wù)(如GitHub或?qū)S肎it存儲庫)提取源代碼,在Azure托管服務(wù)器上部署應(yīng)用程序源代碼或構(gòu)件。3、部署后,internet上的任何人都可以在 *.azurewebsites.net domain 域下訪問該應(yīng)用程序。
關(guān)于“本地Git”:
Azure 可通過多種方式將源代碼和構(gòu)件部署到Azure應(yīng)用程序服務(wù),其中一種方式就是“本地Git”。通過“Local Git”,用戶可在 Azure 應(yīng)用程序服務(wù)容器中啟動一個(gè)本地 Git 存儲庫,這樣就能將代碼直接推送到服務(wù)器。