內容
近日全球廣泛使用的開源地理位置資訊伺服器GeoServer被發現存在嚴重的安全漏洞(CVE-2024-36401)。該漏洞源於GeoServer處理XPath表達式的方式,使得未經身份驗證的遠端攻擊者能夠利用這個漏洞在受影響的伺服器上執行任意代碼,從而獲取伺服器權限,近期已經發現有駭客利用漏洞進行攻擊,建議使用者儘速完成更新。
GeoServer是一個開源的地理空間資訊伺服器,允許用戶使用各種開放地理空間聯盟(Open Geospatial Consortium,OGC)標準發布和管理地理空間數據。GeoServer的功能強大且靈活,廣泛應用於政府、企業和學術機構。
CVE-2024-36401主要涉及GeoServer與GeoTools函式庫API之間參數傳送的內容,GeoServer在傳遞元素類型屬性名稱給commons-jxpath函式庫時存在不安全的操作,允許未經身份驗證的攻擊者注入特製的XPath表達式,導致可以執行任意程式碼。XPath是一種用於在XML文檔中選擇節點的語言,GeoServer使用的commons-jxpath函式庫,允許在Java中使用XPath表達式。這些技術的結合使GeoServer可以靈活地處理和查詢地理空間數據,但同時也引入了潛在的安全風險。GeoServer中XPath表達式評估的設計用途,原本應該只用於複雜特徵類型(如應用模式數據存儲)的 XPath 表達式評估,現在錯誤地被應用於簡單特徵類型,導致所有 GeoServer 實例都受到這個漏洞的影響。
在GeoServer中,WFS(Web Feature Service)是OGC定義的一個標準,用於在 Web 上共享地理空間資訊的標準化服務,它允許使用者通過 Web 服務查詢和擷取地理特徵的屬性資訊。在此漏洞中,WFS為攻擊者利用漏洞的一個入口點,攻擊者可以利用特製的請求觸發漏洞。 WFS功能中的WFS GetFeature、WFS GetPropertyValue、WMS GetMap、WMS GetFeatureInfo、WMS GetLegendGraphic 和 WPS Execute 均存在漏洞,未經身份驗證的遠端使用者可透過特製的輸入內容在預設的 GeoServer 中執行遠端程式碼(RCE)。
根據研究報告,GeoServer及GetTools影響的版本如下:
GeoServer
•GeoServer< 2.23.6
•2.24.0 <= GeoServer < 2.24.4
•2.25.0 <= GeoServer < 2.25.2
GeoTools
•GeoTools< 29.6
•31.0 <= GeoTools < 31.2 程式碼執行
•30.0 <= GeoTools < 30.4
為了減輕CVE-2024-36401漏洞帶來的風險,可依下列方式修補GeoServer和GeoTools:
•刪除 gt-complex-x.y.jar 檔案:從 GeoServer 中刪除 gt-complex-x.y.jar 檔案,其中 x.y 為 GeoTools 版本(例如,如果運行 GeoServer 2.25.1,則刪除 gt-complex-31.1.jar)。此方法雖可提供臨時保護,但可能會影響 GeoServer 的某些功能。
•更新受影響的 JAR 檔案:修補版本已發布,用戶可以從 GeoServer 發布頁面下載受影響版本的 gt-app-schema、gt-complex 和 gt-xsd-core JAR 檔案。下載完畢後,只需用修補版本的檔案取代原始檔案即可。