KeyFrame內部研究專用

Paradigm Shift: Building Invariant-focused codebases - Nat Chin

DeFi Security Summit - DSS·12月22日週日·12 min英文

三句話摘要

安全代碼審查與不變性開發的實踐方法——如何透過改善代碼清晰度和文檔來加速漏洞發現。 準確的代碼命名、完整的假設文檔和清晰的不變性定義,是橋接開發者意圖與安全審查效率的關鍵。 意圖理解是瓶頸:開發者最易犯的錯誤是函數名稱與實際功能不符。當安全研究人員發現函數做的事與名稱或文檔不一致時,往往浪費大量時間。因此準確的命名和清晰的文檔能直接加快審查效率。

重點整理

重點
  • 1

    意圖理解是瓶頸:開發者最易犯的錯誤是函數名稱與實際功能不符。當安全研究人員發現函數做的事與名稱或文檔不一致時,往往浪費大量時間。因此準確的命名和清晰的文檔能直接加快審查效率。

  • 2

    代碼組織方式影響理解速度:將相關的輔助函數與主函數放在一起,能更容易識別函數之間的關係和依賴。講者建議透過視覺排列(如分屏並排查看)來評估代碼層級的深度是否合理。

  • 3

    完整記錄假設和驗證邏輯:任何遺漏的假設都可能導致難以識別的行為或 bug。標註所有預期的資料驗證、訪問控制檢查,文檔與代碼的差異都需要檢查和報告。

  • 4

    開發者與安全研究人員的互補角色:開發者了解使用者如何與系統互動及預期功能;安全研究人員帶來對安全風險的不同理解。透過異步或同步溝通協作,能顯著提升系統理解的完整性。

實用技巧與重點

乾貨
  • 講者背景:TrailerBits 四年工作經驗(初級到資深研究員),從事安全代碼審查、不變性測試、模糊測試;前區塊鏈開發者和教師
  • 不變性定義:代碼庫中需要成立的屬性,可涉及訪問控制、函數協同方式、資料結構
  • 不變性永遠不會 100% 完整(即使在 12 週長期項目中也是如此)
  • 推薦實踐:
  • 最大化測試覆蓋率
  • 探索自動化工具(用於發現容易發現的問題)
  • 在編寫程式碼時同時編寫測試,自然考慮不變性
  • 透過視覺排列工具(分屏並排)評估函數組織的合理性
  • 克隆代碼庫進行實驗式的不變性識別

結論

結論

準確的代碼命名、完整的假設文檔和清晰的不變性定義,是橋接開發者意圖與安全審查效率的關鍵。

完整解析

詳細

Natt 是一名獨立安全研究員,在 TrailerBits 四年的工作經歷中積累了豐富的代碼審查和測試經驗。這次演講的核心觀察來自實踐:在安全代碼審查中,最耗時的環節往往不是發現 bug,而是弄清楚開發者的真實意圖。講者發現,許多函數的名稱、文檔與實際功能存在脫節——開發者說函數應該做 X,但代碼實際做的是 Y,這種差異導致安全研究人員陷入時間黑洞。

不變性開發(Invariant-Driven Development)是解決這個問題的方向。不變性就是代碼庫中必須成立的屬性,包括訪問控制邏輯、函數間的協同方式、資料結構的完整性等。但講者坦承,不變性永遠不會 100% 完整,即使在長達 12 週的大型項目中也仍有遺漏。因此,演講的目的不是提供完整清單,而是分享實踐技巧。

講者給開發者的建議很實用:首先,使用準確的函數名稱——這能幫助不變性開發,也能加速安全研究人員的工作。其次,將相關的輔助函數與主函數放在一起視覺上更容易理解函數間的關係。再者,記錄所有假設和預期的資料驗證邏輯,因為遺漏的假設往往導致難以追蹤的 bug。最後,充分的文檔使得任何文檔與代碼的差異都變成可檢查的信號。

在組織代碼層級時,講者提出了一個平衡的建議:如果層級較淺、輔助函數不多,就把所有函數放在一起;如果有許多不同的輔助函數,分開存放更好。判斷標準可以透過視覺化工具——如分屏並排顯示主函數和輔助函數——來直觀評估切換的難度。

對於安全研究人員,講者強調要克服「過度深入細節」的習慣。安全研究人員往往聚焦於單個函數的實現細節(如存款和提款功能如何運作),而忽略了更高層次的系統行為。一個有效的練習是選擇一個代碼庫,嘗試識別其不變性,即使找到的不變性一開始可能並不正確,但這種思維方式本身就很有價值——可以在代碼審查時牢記這些不變性。

整個演講的共同主軸是:開發者和安全研究人員各有優勢。開發者理解使用者的預期互動方式;安全研究人員帶來不同的安全風險視角。花時間進行同步或異步的溝通協作,能顯著提升雙方對系統的理解。

關鍵時刻

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