KeyFrame內部研究專用

Black Hat USA 2001 - Hit Them Where It hurts: Finding Holes in COTS Software

YouTube Creator·10月2日週三·73 min英文

三句話摘要

2001年黑帽大會演講:在封閉原始碼軟體中進行逆向工程以發現安全漏洞的方法、工具與技術。 在閉源軟體中發現漏洞的最實用策略是自動掃描已知危險函式呼叫模式並有針對性地進行代碼分析,輔以IDA Pro等工具自動化繁瑣工作,能以遠低的時間成本發現足以控制系統的關鍵漏洞。 逆向工程法律框架:歐盟指令允許為互通性和錯誤修復進行逆向,但不允許用於發現漏洞。美國DMCA允許安全測試的逆向工程,但所有知識仍屬軟體作者智慧財產權,發佈漏洞可能被起訴。不同地區法律差異大,從事此工作需謹慎。

重點整理

重點
  • 1

    逆向工程法律框架:歐盟指令允許為互通性和錯誤修復進行逆向,但不允許用於發現漏洞。美國DMCA允許安全測試的逆向工程,但所有知識仍屬軟體作者智慧財產權,發佈漏洞可能被起訴。不同地區法律差異大,從事此工作需謹慎。

  • 2

    三種漏洞發現方法的權衡:壓力測試高度自動化但難以發現涉及多因素的複雜漏洞;完整追蹤輸入能發現極端複雜問題但需要專家且對大型程式幾乎不可行;掃描特定可疑結構(如危險函式呼叫)最省時但會漏掉創意實作的漏洞。黑帽駭客傾向第三種方法因只需一個漏洞即可,白帽審計必須尋求完全安全。

  • 3

    常見C/C++漏洞模式:strcpy與strncpy在邊界條件下不正確終止;scanf本質上危險;strncat因size_t參數迴繞導致緩衝區溢位(著名的「差一」漏洞);格式字串錯誤因參數不足或動態格式字串引起。有符號/無符號轉換錯誤最難檢測。

  • 4

    工具與自動化:IDA Pro提供多架構反組譯、靜態函式庫辨識、強大腳本語言與外掛介面,技術支援優秀。自動掃描可疑函式呼叫與堆疊校正分析能大幅提升效率,讓人可專注在複雜邏輯判斷而非枯燥審查。

實用技巧與重點

乾貨
  • 法律框架:歐盟允許逆向用於互通性和錯誤修復(不包含漏洞發現);美國DMCA允許安全測試但作者保有智慧財產權;泰國等亞洲國家法律寬鬆
  • 三種方法:壓力測試(Fuzz、Perl腳本、EI Retina掃描器);完整追蹤輸入(需Joey級專家);掃描可疑結構(講者採用方法)
  • 主要工具:IDA Pro(500美元,支援x86、ARM、i64、PowerPC、DSP等架構);包含靜態連結函式庫辨識、巨集生成、反組譯流程圖、插件介面
  • 危險函式呼叫:strcpy、strcat、sprintf、scanf、strncpy、strncat、vprintf、printf
  • 自動偵測標記
  • strncat:最大長度參數等於緩衝區大小時不正確終止
  • strncpy:動態大小參數需檢查sign-extend與減法
  • sprintf/scanf:參數不足、動態格式字串、未受信任輸入
  • 符號轉換:unsigned int強轉signed char後可能導致4GB值
  • x86彙編檢查重點:堆疊校正(ADD ESP, N)推算參數數量;標準C呼叫約定;MOVSX(符號擴展)與減法前檢查
  • 實例:CSM Proxy伺服器(IMAP實作),128位元組堆疊緩衝區+8位元組(幀指標與返回位址)=136位元組即可溢位並控制執行流程

結論

結論

在閉源軟體中發現漏洞的最實用策略是自動掃描已知危險函式呼叫模式並有針對性地進行代碼分析,輔以IDA Pro等工具自動化繁瑣工作,能以遠低的時間成本發現足以控制系統的關鍵漏洞。

完整解析

詳細

逆向工程在軟體安全研究中扮演關鍵角色,但面臨複雜的法律環境。在歐洲,1991年的歐盟指令允許程式設計師為互通性和錯誤修正進行反編譯,但這項保護並未涵蓋漏洞發現階段。美國的DMCA法案包含安全測試例外,允許逆向工程,卻在同時賦予軟體作者對所有衍生知識的智慧財產權,發佈任何發現的漏洞都可能招致訴訟。不同法區的法律差異懸殊,使得從事此工作者必須謹慎評估風險。

在實踐方法論上,講者介紹三種尋找漏洞的策略。第一種壓力測試完全自動化,只需執行腳本後等待結果,適合無需特殊技能的操作人員。然而它的致命弱點在於無法追蹤協議細節——由於廠商罕見遵守RFC標準,每個實作都有獨特方言,測試工具稍有疏漏就會漏掉整個程式碼分支。此外,當涉及多重條件時複雜度呈指數級增長,應用層異常處理更會導致測試工具無法偵測崩潰,最終無法發現依賴特定記憶體狀態的微妙漏洞。第二種完整追蹤輸入方法能發現極端複雜的邏輯缺陷,代價是需要Joey等級的專家花費數週時間。第三種方法——掃描預定義的可疑結構——最具實用性:先自動偵測標準危險函式呼叫,再反向閱讀程式碼驗證,可比完整追蹤快10-20倍。講者坦誠此法會漏掉某些創意實作的缺陷,但對黑帽駭客已足夠,因其只需一個漏洞來控制系統。

常見漏洞的根源可歸納為幾類標準函式的誤用與型別轉換錯誤。strcpy與strncpy在邊界條件下無法正確產生空終止字元,導致資料與緩衝區後方內容連結,進而被其他字串操作展開。更危險的是strncat——當最大長度參數經過減一運算後變負時,會被解釋為40億位元組大小,造成巨大溢位。scanf原型設計有缺陷,且不同編譯器對空終止位置的處理不一致。有符號/無符號轉換錯誤最狡詐:一個編碼為0x80的位元組強轉為int會變成-128,進而導致邊界檢查失敗。格式字串漏洞雖易於自動偵測(檢查參數數量與格式字串動態性),卻擁有駭人威力——利用者可任意讀寫記憶體,甚至在禁止程式碼執行的系統上透過操縱程式邏輯變數達成破壞。

IDA Pro作為逆向工程標準工具,支援幾乎所有處理器架構、包含靜態連結函式庫辨識與自動參數重建、提供強大腳本語言與C/C++插件介面,技術支援更與開發者直通。自動化掃描既讓人類審計員避免枯燥的完整程式碼閱讀,又能發現涉及多重因素的複雜漏洞。講者以CSM Proxy伺服器為例示範實戰:透過IDA的交叉引用功能快速定位29個scanf呼叫中的危險模式,再追蹤參數來源發現其IMAP實作中一個128位元組堆疊緩衝區,僅需136位元組即可完全控制程式流程。這個案例完美展示了結構化漏洞搜尋如何在數小時內發現傳統方法需耗費數週才能找到的關鍵漏洞。

關鍵時刻

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 的組織必須立即修補。