云計算安全服務(wù)Wiz的研究團隊,發(fā)現(xiàn)了一個在Azure App服務(wù)中不安全的默認行為,當(dāng)用戶使用本地端Git(Local Git)選項部署應(yīng)用程序時,Azure App服務(wù)將會暴露以PHP、Python、Ruby或Node編寫的應(yīng)用程序源碼,這個被稱為NotLegit的漏洞,從2017年9月就已經(jīng)存在,研究團隊提到,這個漏洞很可能已經(jīng)被開采利用了。
Azure App服務(wù)是一個云計算平臺,能夠用來托管網(wǎng)站和網(wǎng)頁應(yīng)用程序,由于使用起來非常方便,因此受開發(fā)者歡迎,開發(fā)人員選擇受支持的程序語言和操作系統(tǒng)后,便可以利用FTP、SSH或從Git服務(wù)拉取程序代碼,來部署應(yīng)用程序或是構(gòu)件。經(jīng)部署后,互聯(lián)網(wǎng)用戶都可以使用*.azurewebsites.net域名訪問該程序。
而本地端Git是Azure所支持,將程序代碼和構(gòu)件部署到Azure App服務(wù)的一種方法,使用本地端Git,用戶可以在Azure App服務(wù)容器中,創(chuàng)建一個本地端Git存儲庫,并且直接將程序代碼推送到服務(wù)器中。
圖片來源_Wiz
在最佳實務(wù)中,當(dāng)開發(fā)者將Git存儲庫部署到網(wǎng)頁服務(wù)器和存儲桶中時,要確保沒有上傳.git文件夾,因為.git文件夾包含源碼、開發(fā)人員電子郵件和其他敏感資料,而當(dāng)用戶使用本地端Git方式部署到Azure App服務(wù)時,git存儲庫將位于/home/site/wwwroot,也就是可供任何人訪問的公開目錄。
研究團隊提到,微軟會在公開目錄中的.git文件夾,添加一個web.config文件,來限制公開目錄中的.git文件夾被訪問,但是只有微軟的IIS網(wǎng)頁服務(wù)器會處理web.config文件,當(dāng)用戶C#或ASP.NET這些使用IIS部署的應(yīng)用程序,都會被妥善的保護。
但問題在于PHP、Ruby、Python或Node開發(fā)的應(yīng)用程序,由于這些程序語言部署在Apache、Nginx和Flask等不同的網(wǎng)頁服務(wù)器,這些服務(wù)器不處理web.config文件,因此.git文件夾里的資料便會暴露在外,惡意攻擊只要從應(yīng)用程序中截取/.git文件夾,就可以直接訪問程序代碼。
有趣的是,研究團隊發(fā)現(xiàn)web.config文件有一個小錯誤,配置標(biāo)簽沒有被正確關(guān)閉,因此其實IIS也無法正確解析該文件,但由于拼寫錯誤,也阻擋了整個目錄被訪問,因此誤打誤撞,web.config文件還是發(fā)揮了阻擋訪問的功能。
圖片來源_Wiz
微軟在之后,又發(fā)現(xiàn)了使用其他Git部署工具,也可能造成程序代碼暴露的問題,當(dāng)任何Git部署之前,Azure App服務(wù)容器曾創(chuàng)建或修改文件,該服務(wù)會進入本地部署狀態(tài),這將會強制未來Git部署都會存在于可公開訪問的目錄中。
具體來說,受NotLegit影響的用例,包括在2017年9月以來,使用Azure App服務(wù)中默認在應(yīng)用程序,使用本地端Git部署的PHP、Node、Ruby和Python應(yīng)用程序,以及在2017年9月以來,在應(yīng)用程序容器中創(chuàng)建和修改文件后,使用任何Git來源部署到Azure App服務(wù)中的所有PHP、Node、Ruby和Python應(yīng)用程序。
這個漏洞可能已經(jīng)被廣泛地利用,研究團隊為了要評估該漏洞的嚴重性,特別部署了一個易受攻擊的Azure App服務(wù)應(yīng)用程序,并將其連接到未被使用的域名,觀察是否有攻擊者試圖訪問.git文件,而就在部署4天后,有未知的人士對.git文件夾進行多次請求。目前微軟已經(jīng)修復(fù)該漏洞,并且在12月7日發(fā)送電子郵件通知易受攻擊的用戶。