iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
Security

從 CSSLP 視角建構恰到好處的軟體安全系列 第 17

Day 16 | 原始碼風險透視 (Code Risk Analysis):SAST 如何揪出定時炸彈?

  • 分享至 

  • xImage
  •  

Introduction

漏洞修復得越早,修復成本就越低。靜態應用程式安全測試(Static Application Security Testing, SAST)扮演著第一道自動化關卡,在程式碼完全不需編譯執行、環境尚未建置前,直接對原始碼檔案進行剖析。

Discussion

SAST 並非單純的關鍵字文字比對,而是結合編譯器前端技術對程式結構進行結構化分析:

  • 第 1 步:Code Parsing 把程式碼畫成結構樹(Abstract Syntax Tree / AST)
    • 先解析語法骨架,建立結構樹狀圖來理解邏輯關聯。
  • 第 2 步:Data Flow & Taint Analysis 追蹤骯髒資料流向(污點分析)
    • 追蹤未受信任的資料從進入點出發,一路流向資料庫或系統指令等危險端點
  • 第 3 步:Control Flow Analysis 畫出所有可能的執行路線(Control Flow Graph / CFG)
    • 檢查是否存在永遠走不到的 Dead Code,或是藏有可疑特定日期的 Backdoor 邏輯。
  • 第 4 步:Pattern Matching & Rule-based Scanning 翻漏洞字典比對(規則庫比對)
    • 拿業界公認的弱點庫(如 MITRE CWE Top 25)逐一對照

揪出潛伏的「定時炸彈」
https://ithelp.ithome.com.tw/upload/images/20260915/20077752XlAiOrzvOw.png

Takeaways

SAST (靜態應用程式安全測試, Static Application Security Testing)

特性 詳細說明
何時該用它 越早越好,佈署在 SDLC 的極早期階段 (開發人員的 IDE 內、commit hooks 攔截器、CI/CD 管線中)。
它能抓到什麼 緩衝區溢位、常見的語法級注入缺陷、原始碼中寫死的機密 (hardcoded credentials)、不安全的加密函式呼叫。
優點 Pros 能精準指出有問題的「檔案與行號位置」;能在程式碼被編譯/部署之前就揪出問題;具備極高的擴展性。
缺點 Cons 誤報率極高;無法抓出因執行環境設置不當所引發的問題,也抓不到複雜的邏輯缺陷;深度綁定並受限於特定的程式語言。

DAST (動態應用程式安全測試, Dynamic Application Security Testing)

特性 詳細說明
何時該用它 佈署在 SDLC 的較晚期階段 (測試/QA、Staging 測試環境、Pre-production 預備上線環境)。前提條件是應用程式「必須先跑起來」。
它能抓到什麼 身分驗證繞過、伺服器組態設定不當、XSS、(透過觀察系統吐錯的回應來判斷的) 注入攻擊。
優點 Pros 誤報率較低 (只要它抓到的,通常都是真的能打穿的漏洞);與程式語言無關;能抓出環境/執行時期的組態問題。
缺點 Cons 無法告訴你到底是哪一行程式碼寫錯了;需要一個穩定且執行中的環境;測試的涵蓋率 (test coverage) 完全取決於它背後那隻網路爬蟲/腳本夠不夠聰明。

IAST (互動式應用程式安全測試, Interactive Application Security Testing)

特性 詳細說明
何時該用它 通常佈署在測試/QA 階段 (這時通常會搭配自動化功能測試一起跑)。
它是如何運作的 會有一個代理程式 (agent) 潛伏在應用程式內部,當外部的測試腳本 (或是 DAST 工具) 在狂打這支 App 時,代理程式負責在內部同步監控記憶體、流量與程式碼執行流向。
優點 Pros 準確率極高 (誤報極低);能精準指出有問題的程式行號;能抓出執行時期的缺陷。
缺點 Cons 需要特定的語言/框架支援 (不是什麼語言都能掛 agent);可能會拖慢應用程式的執行效能;極度依賴要有夠好的功能測試涵蓋率 (有跑到的路徑才測得到)。

RASP (執行時期應用程式自我保護, Runtime Application Self-Protection)

Further Reading

OWASP Security Culture
https://owasp.github.io/www-project-security-culture/v10/7-Security_Testing/


上一篇
Day 15 | 預防勝於重構:從 OWASP Top 10 看框架 (Framework) 如何選擇防禦方向
下一篇
Day 17 | 程式碼防線與風險處置:從主動控制到安全風險因應策略
系列文
從 CSSLP 視角建構恰到好處的軟體安全22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言