白箱掃描是什麼?白箱檢測如何進行? 白箱掃描是什麼?跟黑箱掃描有什麼不同?

分享:
 

在資訊安全領域中,弱點檢測是保障系統安全的重要環節。其中,白箱掃描因能深入程式碼與內部結構,成為發現潛在風險的關鍵方法。本文將介紹白箱掃描的概念、與黑箱及灰箱的比較、應用情境、常見覆蓋率指標,以及白箱掃描相關工具。

 

什麼是白箱掃描(White-Box Scanning)?

 

「白箱掃描」也稱作「原始碼掃描」,指在測試系統時,檢測人員可以存取完整的內部資訊,例如軟體原始碼、系統架構、內部網路連線、帳號與權限設定等。由於一切資訊都是透明的,測試人員能深入分析程式邏輯與系統運作方式,確保程式有照預期的方式運作,並找出隱藏的資安弱點。

 

白箱掃描常與「靜態程式碼分析」(Static Application Security Testing,SAST)結合,用來檢測不安全的程式編寫方式、邏輯錯誤、以及設定上的漏洞。透過完整的內部資訊,白箱掃描能更全面地覆蓋程式的各個部分,但若系統龐大或程式碼複雜,分析時間也可能相當長。

 

白箱掃描如何進行呢?

 

在理想情況下,白箱掃描會盡量提高程式碼中不同面向的檢測比例(稱為「覆蓋率」),以確保測試案例能涵蓋更多程式邏輯:

  • 語句覆蓋率(Statement Coverage):程式碼中語句被執行過的比例。

  • 分支覆蓋率(Branch Coverage):程式中每個分支(例如 if/else 條件的 true 與 false)被執行的比例。

  • 條件覆蓋率(Condition Coverage):布林條件(結果為 true 或 false 的條件)中,每個條件是否曾被判斷為 true 和 false 的比例。條件覆蓋率只要求每個條件都曾被判斷為 true 與 false,不一定要涵蓋所有條件組合。

  • 路徑覆蓋率(Path Coverage):程式可能執行路徑被涵蓋的比例(從程式進入點到結束點的流程)。

  • 迴圈覆蓋率(Loop Coverage):程式中迴圈在不同執行情境(0 次、1 次、多次)被測試的比例。

 

但實務上,徹底檢查所有程式碼、分支和路徑,可能會因為程式本身的複雜程度,而造成檢查作業量過於龐大,難以徹底執行。因此通常未必會所有的路徑都會覆蓋到。

 

基本上來說,白箱掃描的運作流程有以下幾個步驟:

 

  1. 確認測試目標:先決定要測試的功能、元件或程式。通常來說,白箱掃描檢測的目標越小,越容易徹底檢查所有語句、分支和路徑。
  2. 盤點分支與路徑:列出應用程式中所有的分支與路徑以理解程式的邏輯和決策點,通常會以繪製流程圖(Flowgraph)的方式進行。
  3. 依據覆蓋準則挑選測試路徑:根據測試需求,選擇要達成的覆蓋標準(例如語句覆蓋、分支覆蓋,或是針對特定關鍵路徑)。

    舉例來說,在上面的流程圖中,有兩種路徑:

    1、2、3、5、6、7

    1、2、3、4、6、7

    即可從中挑選進行想要進行掃描的路徑。但通常實際情況會比上圖的例子更加複雜,不會只有兩條路徑。
  4. 設計與撰寫測試案例(Test Case):依照選定的路徑,設計測資與測試案例。測試案例為一組指令,用來測試軟體是否可以正確運作,內容通常包含測試目標、輸入數據、執行步驟和預期結果。

  5. 執行並持續改進:執行測試案例、分析結果,並反覆調整測試過程以提升完整性。

 

白箱掃描有哪些好處?

 

1. 找尋潛在問題

由於能看到完整原始碼與內部邏輯,所以白箱掃描可檢查程式中的判斷流程、變數處理、例外狀況,進而發現一些目前表面上不會顯現、但未來可能成為安全風險的隱性漏洞。測試者看不到程式內部,只能依靠輸入與輸出的結果,透過嘗試不同攻擊手法來推測弱點。

 

因此黑箱測試偏向發現「此刻實際可被利用」的漏洞。也就是說,黑箱偏向驗證可利用的結果,白箱則是檢查程式內部的原因與隱患。

 

2. 提早發現漏洞

存取原始碼或系統設定即可進行白箱掃描,而不需要透過使用者介面才能執行,因此軟體開發的前期就可以先以白箱掃描的方式檢查系統。讓開發團隊在軟體或服務正式上線之前,就能提早發現並修正漏洞,降低修復成本,並提升產品的安全性。

 

3. 改善原始碼

除了檢查是否存在安全漏洞,進行白箱掃描時,開發人員也能藉此仔細審視程式碼,發現並修正錯誤或不良實作。這些改善有助於提升軟體品質,並在某些情況下讓程式更為精簡與高效。

 

白箱掃描的工具

 

白箱掃描的重點是確認程式碼行為是否符合預期,並發現程式碼與設定中的隱性資安問題。為了達到此一目的,一般白箱掃描,會使用到以下三大類測試工具:

  • 單元測試框架(Unit Testing Frameworks)測試工具:用來撰寫進行測試的測試案例,並實際運行測試。常見的有 JUnit、NUnit、pytest、xUnit 等。
  • 程式碼覆蓋率(Code Coverage Tools)測試工具:用來檢視程式在測試過程中達到的語句、分支、路徑、條件或迴圈覆蓋率,例如 JaCoCo、dotCover、Coverage.py 等。
  • 整合開發環境(IDE Integrations):提供一個包含編輯器、編譯器、除錯工具等的開發環境,並能透過內建或外掛功能執行測試與檢視程式碼覆蓋率。例如 Eclipse、IntelliJ IDEA、Visual Studio。

 

白箱掃描 vs 黑箱掃描 vs 灰箱掃描

 

相較於資訊完全透明的「白箱掃描」,依照測試時能取得的資訊不同,還有「黑箱掃描」與「灰箱掃描」兩種方式:

  • 黑箱掃描(Black-Box Scanning):檢測人員對目標系統完全不了解,只能模擬外部攻擊者的行為,觀察應用程式、網頁服務或網路介面的反應。最接近真實駭客攻擊的情境,但測試過程較耗時,且費用通常較高。
  • 灰箱掃描(Grey-Box Scanning):檢測人員知道部分系統資訊,例如使用者帳號、系統文件或部分架構。灰箱測試在效率與深度之間取得平衡,能模擬攻擊者同時擁有外部資訊與部分內部知識的情境。

 

  白箱掃描 灰箱掃描 黑箱掃描
資訊可見度 測試者完全掌握程式碼、架構與設定 測試者掌握部分內部資訊(如帳號、系統文件) 測試者對系統內部一無所知,只能看到輸入與輸出
可偵測漏洞型態 原始碼中的隱藏缺陷(如硬編碼密碼、邏輯錯誤、不安全 API、例外處理不足) 內外部結合的弱點(如特定帳號權限繞過、已知內部 API 的濫用) 可被外部攻擊利用的弱點(如 SQL Injection、XSS、錯誤配置的公開服務)
測試時機 開發早期即可開始(只要有程式碼、系統設定即可) 在開發中後期進行,模擬外部攻擊者掌握部分內部知識 系統完成並具備使用者介面後才能開始
常見用途 檢查程式碼品質與內部安全性 模擬內部員工/外部攻擊者結合的威脅 模擬駭客攻擊,驗證系統對外安全性
優勢 可深入發現隱藏漏洞、支援早期缺陷檢測 測試效率與現實性平衡,覆蓋度比黑箱高、比白箱省時 最接近真實攻擊、能驗證實際可利用的漏洞
缺點 需存取完整原始碼,成本高,可能不代表真實攻擊情境 無法完全模擬真實黑箱攻擊,覆蓋率與深度仍有限 覆蓋度有限,可能漏掉隱性漏洞,耗時耗錢

 

黑箱、灰箱、白箱掃描的應用

 

無論是黑箱、灰箱,還是白箱掃描的掃描方式,在資安領域,都常應用在「弱點掃描(Vulnerability Scanning)」「滲透測試(Penetration Testing)」中。

 

企業和組織可以根據自身的資安需求,選擇最合適的掃描方式。

 

黑箱掃描模擬遭受外部攻擊時的真實情況,測試企業組織 IT 系統中公開的應用程式、軟體服務、網路連線是否有可以被利用來入侵的弱點。適合用來測試如防火牆、入侵偵測系統等周邊防禦、偵測開放的連接埠,以及辨識暴露介面的弱點。

 

白箱掃描則透過完整的內部資訊,針對系統程式碼、架構與設定進行深入檢測,找出根深蒂固的弱點,例如不安全的程式碼、邏輯缺陷與組態錯誤。

 

介於兩者之間的灰箱測試,則可以模擬攻擊者已知企業組織內部部分資訊系統訊息的情況,考慮到企業同時遭受到來自內部與外部威脅的情境,從這兩個面向一起找出系統的弱點。另一方面,灰箱掃描利用在測弱點掃描或滲透測試時,也因為不用像黑箱掃描對系統一無所知,所需要的時間較少。

 

黑箱、白箱掃描與 OWASP 10 大弱點

 

利用黑箱與白箱掃描能夠發現的弱點種類相當多元,非營利的全球開放性社群組織「開放網路軟體安全計畫(簡稱 OWASP) 」每隔一段時間便會公布網路應用程式的全球 10 大弱點,供企業與資安專家實際進行弱點掃描和測試時參考,多加防範。

 

2021 年發表的 10 大弱點為

  1. A01:2021 權限控制失效(Broken Access Control)

  2. A02:2021 加密機制失效(Cryptographic Failures)

  3. A03:2021 注入式攻擊(Injection)

  4. A04:2021 不安全的設計(Insecure Design)

  5. A05:2021 不安全的設定配置(Security Misconfiguration)

  6. A06:2021 易受攻擊和過時元件(Vulnerable and Outdated Components)

  7. A07:2021 認證及驗證機制失效(Identification and Authentication Failures)

  8. A08:2021 軟體和資料完整性失效(Software and Data Integrity Failures)

  9. A09:2021 資安記錄和監控失效(Security Logging and Monitoring Failures)

  10. A10:2021 伺服器端請求偽造(Server-Side Request Forgery,SSRF)

 

這十大弱點雖然都能透過黑箱與白箱掃描發現,但因掃描機制不同,在偵測效能上各自具有優勢與限制。

 

下列漏洞較容易在白箱掃描過程中被識別出:

  • A02:2021 加密機制失效

  • A04:2021 不安全的設計

  • A05:2021 不安全的設定配置

  • A06:2021 易受攻擊和過時元件

  • A07:2021 認證及驗證機制失效

  • A08:2021 軟體和資料完整性失效

 

下列漏洞較容易在黑箱掃描過程中被識別出:

  • A01:2021 權限控制失效

  • A03:2021 注入式攻擊

  • A09:2021 資安記錄和監控失效

  • A10:2021 伺服器端請求偽造

 

但無論漏洞的類別,透過黑箱、白箱掃描全方位檢測資訊系統,能有效提升軟體品質與安全性。企業可依自身的資安需求,搭配不同的掃描方式,形成更全面的安全防護。晟崴科技提供結合黑箱與白箱的弱點掃描滲透測試服務,歡迎與我們聯絡,共同打造最適合您的系統健檢。

 

立即聯絡晟崴科技為您提供資安服務

相關訊息

檔案加密是什麼?企業保護資安、提升合規性利器

檔案加密是什麼?企業保護資安、提升合規性利器

「檔案加密」是最常見的一種加密模式。無論是在企業或個人,許多使用場景需要檔案加密。本文介紹什麼是檔案加密、運作原理,以及優勢與挑戰。

加密是什麼?有哪些常見加密法?

加密是什麼?有哪些常見加密法?

加密的原理是什麼?有哪些常見的加密方式?又能應用在哪些場景?本文將帶你深入了解加密的基本原理、各類型加密法與常見的加密演算法。

電腦病毒: 7 種常見種類與 4 招預防方式

電腦病毒: 7 種常見種類與 4 招預防方式

電腦病毒寄生在其他程式上,才能複製、感染其他電腦,並進行破壞。但電腦中毒了該怎麼辦?可以預防電腦病毒嗎?本文將詳細介紹電腦病毒、常見種類、症狀,與解決和預防辦法。

聯絡我們
聯絡我們

CONTACT US

聯絡我們的專業團隊,解答您的所有疑慮與需求!


本網站使用 Cookie 來提升您的使用體驗、協助我們分析網站效能和使用狀況,以及讓我們投放相關聯的行銷內容。您可以在下方管理 Cookie 設定,或是按一下「全部接受」即代表您同意採用目前的設定。

管理Cookies

隱私權偏好設定中心

本網站使用 Cookie 來提升您的使用體驗、協助我們分析網站效能和使用狀況,以及讓我們投放相關聯的行銷內容。您可以在下方管理 Cookie 設定,或是按一下「全部接受」即代表您同意採用目前的設定。

查看政策

管理同意設定

必要的Cookie

一律啟用

網站運行離不開這些 Cookie 且您不能在系統中將其關閉。通常僅根據您所做出的操作(即服務請求)來設置這些 Cookie,如設置隱私偏好、登錄或填充表格。您可以將您的瀏覽器設置為阻止或向您提示這些 Cookie,但可能會導致某些網站功能無法工作。

數字驗證

請由小到大,依序點擊數字