專家預警:Spring Cloud中的RCE漏洞可能是下一個Log4Shell
注意:這篇文章是作為CVE-2022-22963已確認和修補漏洞的研究報告。雖然Sysdig的研究人員將Spring Cloud錯誤地稱為“Spring4Shell”,但是應該指出,,由于另一家安全公司將Spring Core中另一個未經證實的漏洞稱為“Spring4Shell”,因此現實研究中對于如何稱呼它確實存在一些困惑。所以為了避免混淆,本文用Spring4Shell代指Spring Cloud存在的漏洞。
Spring Cloud Function中存在一個令人擔憂的安全漏洞,這可能會導致遠程代碼執行漏洞(RCE)以及整個互聯網連接主機威脅。一些研究人員指出,由于該漏洞易于利用以及基于Java的性質特征,它不免讓人想起去年12月發現的Log4Shell漏洞。
Sysdig的安全研究員Stefano Chierici在與Threatpost共享的材料中指出:Spring4Shell是存在于一系列基于Java漏洞中的一個。因為他的開發門檻很低,所以我們會看到攻擊者利用其技術大量地進行網絡攻擊。一旦找到攻擊目標,網絡威脅行為者可能會采用安裝加密器、分布式拒絕服務攻擊(DDoS)或者遠程訪問工具包進行攻擊。
根據VMware周二的公告,該錯誤(CVE-2022-22963)影響3.1.6和3.2.2版本以及其他陳舊的、不受支持的版本。相應用戶只有更新到3.1.7和3.2.3版本才能安裝補丁。
為什么CVSS評分如此低?
雖然它在CVSS(通用漏洞評分系統)評分表上顯示為中等嚴重性,得分為5.4分,但研究人員警告不要低估該漏洞的影響。VMware正在使用CVSSSv3基本指標‘CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L’進行檢測評分,但是對于檢測該漏洞的保密性、完整性和可用性影響并不具有代表性,Sysdig研究人員Nick Lang和Jason Avery告訴Threatpost。“此漏洞允許攻擊者從Spring Cloud的內部打開他的保護系統,這可能就是該漏洞的關鍵所在。這造成影響十分明顯,且不需要用戶交互,因此在CVE(通用漏洞披露)中給了一個關鍵的評級。他們補充說:在他們的測試中,他們驗證了不需要用戶交互來利用CVE-2022-22963漏洞來獲得未經授權的訪問的這一可能性。
同時Tenable員工研究工程師Satnam Narang也同意CVSS分數可能無法反映該漏洞所造成的真正影響。他通過電子郵件表示:由于該漏洞被視為遠程代碼執行缺陷,可以被未經身份驗證的攻擊者利用,CVSSv3分數似乎可能無法反映該缺陷的實際影響。
而Sophos首席研究科學家Paul Ducklin則指出,它令人震驚地允許“即時RCE”。他告訴Threatpost他認為他的推薦理由十分簡單,根本不需要分數來衡量。因為CVE-2022-22693的補丁吸引了很多人的興趣,而且概念驗證代碼很容易獲得,那么當你可以如此輕松地領先時,為什么要處于一個落后的地位呢?
可能導致大規模的嚴重后果
Spring Cloud是一套分布式服務框架:即是對在企業中構建分布式應用程序有用的現成組件的集合。它被各家公司廣泛使用包括各種應用程序的提供商,比如Kubernetes和Netflix。因此,根據Sysdig的說法,Spring4Shell的發展軌跡令人擔憂。Chierici認為:Spring......正在被數百萬使用Spring Framework的開發人員使用來創建高性能、易于測試的代碼。Spring Cloud Function框架允許開發人員使用Spring功能編寫與云無關的功能。這些功能可以是獨立的類別,因此可以輕松地將它們部署到任何云平臺上,以構建無服務器框架。并且他補充說:由于Spring Cloud Function可用于AWS lambda或Google Cloud Functions等云無服務器功能,這些功能也可能受到影響......在您的云帳戶中領先于攻擊者。
CVE-2022-22963的影響正在逐步擴大
根據Sysdig的說法,該漏洞可以通過HTTP被加以利用:就像Log4Shell一樣,它只需要攻擊者向Java應用程序的HTTP服務發送惡意字符串就可以完成攻擊的意圖了。Chierici解釋說:使用路由功能,用戶可以提供特別制作的Spring Expression Language(SpEL)作為表達式,以訪問本地資源并在主機中執行命令。而CVE-2022-22963的問題在于,它允許通過使用HTTP請求頭中spring.cloud.function.routingexpression傳入的參數值作為SPEL表達式進行處理。正因如此,不幸的是,使用一個簡單的curl命令,就可以十分容易地完成一個漏洞“。curl命令如下:
curl -i -s -k -X $’POST’ -H $’Host: 192.168.1.2:8080′ -H $’spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec(\”touch /tmp/test”)’ –data-binary $’exploit_poc’ $’http://192.168.1.2:8080/functionRouter’
Sysdig在其GitHub頁面上發布了一個PoC漏洞,如前所述,其他漏洞正在網絡中瘋狂流傳。Ducklin指出:雖然到目前為止,我們看到的PoC(驗證性測試)都只是彈出了一個計算器應用程序,但這足以證明這一點,即服務器上已經安裝的任何命令都可以輕松啟動。
因此他將該漏洞稱為“Spring Expression Resource Access漏洞”或“SPEL漏洞”。他補充說:“這包括遠程觸發等Web下載程序就像curl(利用URL語法在命令行下工作的文件傳輸工具),啟動命令程序就像bash(Bourne shell的后繼兼容版本與開放源代碼版本),或者按順序同時進行這兩個程序以安靜快速地植入惡意軟件。”
安裝補丁
據Sysdig稱,安裝應用補丁后,任何使用Spring Cloud構建的應用程序的人都應該仔細檢查他們的安裝系統,以確保不存在相應的漏洞。Chierici提醒道:即使用戶可能已經升級了數據庫或對受漏洞影響的系統應用了其他緩解措施,但用戶仍然需要檢測環境中是否存在任何利用嘗試和破壞的活動。他指出,這種檢測可以通過圖像掃描儀或運行時檢測引擎來進行,以發現已安裝的(無擴展名的)系統文件或置標語言中的惡意行為。根據Sysdig的文章所言,對此類漏洞的最佳防御是盡快修補。在當今世界中,清楚地了解用戶環境中所使用的軟件包是必須的。