Black Hat Asia 2026 | More JVM Memory Shells: JVM Memory Shell Auto Searching Program
三句話摘要
從手動研究邁向系統化方法:用靜態分析、動態追蹤和AI自動發現Java記憶體殼的新型別。 將記憶體殼研究從孤立發現轉變為系統化過程,結合靜態過濾、動態追蹤和AI輔助,能以可重複的方式發現新型別並提升防禦的全面性。 Java記憶體殼的核心特性:無需寫入檔案、流量正常難以檢測、無需反向連線。攻擊者通過表達式注入、反序列化等漏洞獲得程式碼執行權限後,直接修改Java框架的關鍵物件,實現持久後門。
重點整理
重點- 1
Java記憶體殼的核心特性:無需寫入檔案、流量正常難以檢測、無需反向連線。攻擊者通過表達式注入、反序列化等漏洞獲得程式碼執行權限後,直接修改Java框架的關鍵物件,實現持久後門。
- 2
手動發現的瓶頸:過去研究人員通過手動閱讀Tomcat、Spring等大型框架源程式碼發現經典型別(filter、listener、servlet等),但隨著時間推移,投入與產出比例惡化,導致近兩年新發現的型別極少。
- 3
從特例到通則的思維轉變:以Spring的FlashMap記憶體殼為例,關鍵不是記住單一類別名稱,而是總結背後的共同特徵(標準元件、可替換、請求處理時被呼叫),進而批量搜索候選類別。
- 4
靜態+動態+AI的系統化流程:結合程式碼掃描過濾候選項、Java agent在執行時驗證實際呼叫、JVM記憶體分析查找對象路徑、AI自動生成exploit程式碼,再通過構建驗證循環確保可行性。
實用技巧與重點
乾貨- 歷史階段分期
- 2014-2016:初期探索階段
- 2017-2019:經典型別開發階段(filter、servlet、listener)
- 2020-2022:快速成長階段(behinder、Godzilla工具支持)
- 2023至今:瓶頸階段,新發現稀少
- FlashMap記憶體殼特性
- 目標:Spring MVC的非生命週期介面
- 注入方式:無需當前請求上下文,透過執行緒物件反射追蹤達成
- 觸發機制:FlashMap manager方法在正常請求處理中自動呼叫
- 系統化流程的五個階段
- CodeScan程式碼掃描:尋找public、non-final、由框架建立、與請求/回應相關的候選類別
- Java agent動態追蹤:攻擊時驗證候選方法是否真的被HTTP請求觸發
- JVM記憶體搜索:從當前執行緒開始,追蹤物件參考找到可達的框架物件
- AI exploit生成:基於源程式碼、記憶體路徑、生成可行的exploit程式碼
- 驗證循環:構建→部署→測試→根據結果反覆改進
- 主要發現
- 發現7種新的Spring記憶體殼型別
- 防禦方需從多個入口點(事件處理、失敗處理、狀態管理)進行檢測
結論
結論“將記憶體殼研究從孤立發現轉變為系統化過程,結合靜態過濾、動態追蹤和AI輔助,能以可重複的方式發現新型別並提升防禦的全面性。”
完整解析
詳細Java記憶體殼研究在過去四年進展有限,傳統方法已經走到瓶頸。長期以來,研究人員透過手動審查Tomcat、Spring等框架的源程式碼尋找可利用的入口點,成功發現了filter、servlet、listener等經典型別。這些型別之所以易於發現,是因為它們在請求處理路徑上位置明顯。但隨著明顯入口點逐漸用盡,繼續用人工閱讀大型框架源程式碼的投入回報率急劇下降,導致研究的瓶頸。
轉機出現在2023年底至2024年初,當研究人員發現了Spring中的FlashMap記憶體殼。這個發現啟發了一個新的思考方式:與其記住某個特定類別名稱,不如總結其背後的共同特徵。FlashMap之所以可行,基於三個關鍵特性——它是標準Spring元件、具有可替換性、且在正常請求處理中確實被呼叫。這個認知促使研究人員開始思考將記憶體殼發現從運氣驅動轉變為過程驅動。
系統化方法的核心是結合靜態分析與動態執行時驗證。首先,利用程式碼掃描工具針對特定特徵過濾候選類別,例如應該是public且non-final、由框架建立、與請求或回應處理相關的類別。這一步驟能從數量龐大的類別中快速篩選出合理候選項。其次,使用Java agent在運行時追蹤這些候選項,發送測試HTTP請求,觀察哪些方法確實被呼叫。這個步驟至關重要,因為靜態特徵相符未必意味著運行時真實可利用。接著進行JVM記憶體分析,從執行緒物件出發追蹤物件參考,找出能否到達可替換的關鍵框架物件。最後,將運行時獲得的上下文、物件圖和源程式碼送給AI模型生成exploit程式碼。透過構建、部署和測試的驗證循環,確保生成的程式碼真正可用。
這套流程的優勢在於可重複性和可擴展性。研究人員無需依賴運氣或深度手工分析,而是能系統地檢驗每一個可能的入口點。即使在新的框架版本或不同的Java框架上執行相同流程,也能產生有意義的結果。雖然人類研究人員仍需進行最終驗證,但整體效率和發現的新型別數量都大幅提升。該方法最終成功發現了七種新的記憶體殼型別,證明了系統化方法相比傳統手動研究的優勢。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

