警惕!PHP、Node、Ruby 和 Python 應用,漏洞還沒結束!

  • 2021 年 12 月 28 日
  • 筆記

12 月 10 日凌晨,Apache 開源項目 Log4j2 的遠程代碼執行漏洞細節被公開,作為當前全球使用最廣泛的 java 日誌框架之一。該漏洞影響着很多全球使用量前列的開源組件,如 Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等。而且因為該漏洞利用方式簡單,一旦有攻擊者利用該漏洞,就可以在目標服務器上執行任意代碼,給被攻擊者造成極大危害。漏洞被公布後,廠商馬上發佈了新版本 log4j-2.15.0-rc1 對漏洞進行修復,並在之後更新了 log4j-2.15.0-rc2 進一步對漏洞進行了修復。

然而禍不單行,儘管大家修復 Log4j2 可能已經有些手忙腳亂,但是忙碌之餘還是要分出精力來看看這個新的消息:微軟 Azure 應用服務中存在一個名為「NotLegit」的漏洞,該漏洞影響所有通過「本地 Git」部署的 PHP、Node、Ruby 和 Python 應用。

漏洞詳情

Azure 是用於託管網站和 Web 應用的平台,用戶只需要選擇支持的編程語言和操作系統,再使用 FTP、SSH 或通過從 Git 服務提取源代碼在 Azure 託管的服務器上完成部署,就可以在 .azurewebsites.net 域中訪問應用。因為使用方便,所以頗受開發者歡迎。而本次漏洞就出現在部署這一步。

正常的情況下,當開發者將 Git 存儲庫部署到 Web 服務器和存儲桶時,因為包含敏感數據,因此不會上傳 .git 文件夾。但是 Azure 設定,如果應用是通過本地 Git 部署到 Azure,那你的 Git 存儲庫就會變成所有人都可以訪問的公開目錄。當然為了保護敏感數據不暴露,微軟在限制公共訪問的 .git 文件夾中添加了「web.config」文件,讓數據只能由微軟 LLS 網絡服務器處理。

漏洞就出現這裡,因為這個只對用 LLS 部署的 C# 或 ASP.NET 應用有效。因為 Web 服務器無法處理「web.config」文件,因此如果是部署在不同 Web 服務器內的 PHP、Node、Ruby 和 Python 應用,那攻擊者只要從目標應用組獲取 /.git 目錄,就可以得到對應的源代碼。

漏洞應對

針對本漏洞,微軟進行了以下應對:

  • 更新了所有 PHP 鏡像,禁止將 .git 文件夾作為靜態內容提供,以作為深度防禦措施。

  • 更新了安全建議文檔,增加了有關保護源代碼的部分,還更新了本地部署的文檔。

微軟已經於 2021 年 12 月 7 日至 15 日之間通過郵件通知了被影響用戶,提供了緩解問題的具體指導。

如果您沒有收到郵件,您也不用第一時間着急,因為您可能沒有被漏洞影響到,不受漏洞影響的範圍如下:

  • 自 2017 年 9 月以來,在 Azure 應用服務中使用「本地 Git」部署的所有 PHP、Node、Ruby 和 Python 應用。

  • 從 2017 年 9 月起,在應用容器中創建或修改文件後,使用 Git 源代碼部署在 Azure 應用服務中的所有 PHP、Node、Ruby 和 Python 應用。

而且微軟也備註說明,本次漏洞隻影響部署在基於 Linux 的 Azure 服務器上的應用。如果您的應用是託管在 Windows Server 系統上的,也不會受到漏洞影響。

本次漏洞由雲安全供應商 Wiz 發現並提供,微軟為其提供了 7500 美元的賞金。

最後,如果您有收到微軟郵件通知,那還是要儘快根據郵件指導完成漏洞修復哦~

推薦閱讀

如何快速搞定生產環境 Ansible 項目布局?

服務端渲染基礎