KeyFrame內部研究專用

Black Hat Asia 2026 | More JVM Memory Shells: JVM Memory Shell Auto Searching Program

Black Hat·8月23日週日英文

三句話摘要

從手動研究邁向系統化方法:用靜態分析、動態追蹤和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 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。
Risky Bulletin: Expired credit cards can be used for malicious transactions
5 min
Web2 安全英文PODCAST8月24日

Risky Bulletin: Expired credit cards can be used for malicious transactions

Risky Business

  • 支付安全的非對稱風險:Visa卡利用未加密的卡片資料與NFC通訊,攻擊者可藉由中間人技術竄改過期日期進行交易,但MasterCard、美運卡與Discover的防護更完善,顯示不同發卡機構的安全架構存在明顯差異。
  • 國家級駭客活動的連鎖延伸:北韓Lazarus集團在2月單一事件已累積100名受害者,涵蓋大學、警察部門、媒體與醫療機構,伊朗駭客則針對基礎建設如電力系統發動破壞性攻擊,反映地緣政治在網路戰爭中的升溫。
  • AI加速漏洞生態的雙面刃:AI工具催生近2萬份漏洞概念驗證代碼發布,但同時也導致大量失效漏洞代碼氾濫,增加資安團隊甄別真實威脅的難度;Mayer Protocol遭攻擊事件中,駭客用AI鏈接六個無關的小漏洞完成盜竊170萬美元的攻擊。
SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware
5 min
Web2 安全英文PODCAST8月24日

SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware

SANS Stormcast

  • Microsoft EntraID 的遠端代碼執行漏洞已由微軟修補,初期報告顯示已遭利用但後來更正為未遭利用。這反映 Microsoft 在雲端軟體安全上的透明度提升,對漏洞採用與內部軟體相同的 CVE 編號和公告流程。
  • PowerShell 指令碼可用於驗證 MFA 部署完整性,特別是找出未啟用 MFA 的遺漏帳號。同時可以分析 EntraID 登入日誌中的異常行為,如風險係數評估和地理位置檢測,幫助組織快速識別可疑登入。
  • GitLab 的 GraphQL 代碼注入漏洞允許未認證攻擊者刪除或修改儲存庫,潛在導致供應鏈攻擊。已有公開概念驗證 (PoC) 存在,使用內部部署 GitLab 的組織必須立即修補。