雲端資安服務Wiz的研究團隊,發現了一個在Azure App服務中不安全的預設行為,當用戶使用本地端Git(Local Git)選項部署應用程式時,Azure App服務將會暴露以PHP、Python、Ruby或Node編寫的應用程式原始碼,這個被稱為NotLegit的漏洞,從2017年9月就已經存在,研究團隊提到,這個漏洞很可能已經被開採利用了。

Azure App服務是一個雲端運算平臺,能夠用來託管網站和網頁應用程式,由於使用起來非常方便,因此受開發者歡迎,開發人員選擇受支援的程式語言和作業系統後,便可以利用FTP、SSH或從Git服務拉取程式碼,來部署應用程式或是構件。經部署後,網際網路使用者都可以使用*.azurewebsites.net網域存取該程式。

而本地端Git是Azure所支援,將程式碼和構件部署到Azure App服務的一種方法,使用本地端Git,用戶可以在Azure App服務容器中,創建一個本地端Git儲存庫,並且直接將程式碼推送到伺服器中。

圖片來源_Wiz

在最佳實務中,當開發者將Git儲存庫部署到網頁伺服器和儲存桶中時,要確保沒有上傳.git資料夾,因為.git資料夾包含原始碼、開發人員電子郵件和其他敏感資料,而當用戶使用本地端Git方式部署到Azure App服務時,git儲存庫將位於/home/site/wwwroot,也就是可供任何人存取的公開目錄。

研究團隊提到,微軟會在公開目錄中的.git資料夾,添加一個web.config檔案,來限制公開目錄中的.git資料夾被存取,但是只有微軟的IIS網頁伺服器會處理web.config檔案,當用戶C#或ASP.NET這些使用IIS部署的應用程式,都會被妥善的保護。

但問題在於PHP、Ruby、Python或Node開發的應用程式,由於這些程式語言部署在Apache、Nginx和Flask等不同的網頁伺服器,這些伺服器不處理web.config檔案,因此.git資料夾裡的資料便會暴露在外,惡意攻擊只要從應用程式中擷取/.git資料夾,就可以直接存取程式碼。

有趣的是,研究團隊發現web.config檔案有一個小錯誤,配置標籤沒有被正確關閉,因此其實IIS也無法正確解析該文件,但由於拼寫錯誤,也阻擋了整個目錄被存取,因此誤打誤撞,web.config檔案還是發揮了阻擋存取的功能。

圖片來源_Wiz

微軟在之後,又發現了使用其他Git部署工具,也可能造成程式碼暴露的問題,當任何Git部署之前,Azure App服務容器曾創建或修改檔案,該服務會進入就地部署狀態,這將會強制未來Git部署都會存在於可公開存取的目錄中。

具體來說,受NotLegit影響的用例,包括在2017年9月以來,使用Azure App服務中預設在應用程式,使用本地端Git部署的PHP、Node、Ruby和Python應用程式,以及在2017年9月以來,在應用程式容器中創建和修改文件後,使用任何Git來源部署到Azure App服務中的所有PHP、Node、Ruby和Python應用程式。

這個漏洞可能已經被廣泛地利用,研究團隊為了要評估該漏洞的嚴重性,特別部署了一個易受攻擊的Azure App服務應用程式,並將其連接到未被使用的網域,觀察是否有攻擊者試圖存取.git檔案,而就在部署4天後,有未知的人士對.git資料夾進行多次請求。目前微軟已經修復該漏洞,並且在12月7日發送電子郵件通知易受攻擊的用戶。

熱門新聞

Advertisement