Web Security Scanner 總覽

Web Security Scanner 可識別 App Engine、Google Kubernetes Engine (GKE) 和 Compute Engine 網頁應用程式中的安全漏洞和設定錯誤。這項服務會檢索您的應用程式,追蹤起始網址涵蓋的所有連結,並嘗試儘可能執行大量的使用者輸入內容和事件處理常式。Web Security Scanner 僅支援不受防火牆保護的公開網址和 IP。

Web Security Scanner 支援 App Engine 標準環境和彈性環境、Compute Engine 執行個體,以及 GKE 資源。

Web Security Scanner 的設計是專門為了補強現有的安全設計與開發流程。為了避免系統誤判干擾到您,與報告相關的 Web Security Scanner 寧可不要過度報告,而不會顯示低可信度的警告。Cloud Security Scanner 並非取代人工的安全性審查,亦不保證您的應用程式完全沒有安全缺陷。

歸類為設定錯誤的發現事項代表可透過更新設定解決的問題,雖然這些發現對於提升安全狀態很重要,但與漏洞不同,漏洞是指可實際遭到攻擊的弱點。您可以在 Security Command Center 的「發現項目」頁面查看這些設定錯誤。詳情請參閱「Web Security Scanner 設定錯誤發現項目」。

掃描類型

Web Security Scanner 可針對公開的 App Engine、GKE 和 Compute Engine 服務網頁應用程式,提供代管和自訂的網頁安全漏洞掃描。

代管掃描作業

Web Security Scanner 代管掃描作業由 Security Command Center 設定及管理。系統每週會自動執行一次受管理掃描,偵測及掃描公開網路端點。這些掃描作業不會使用驗證,且只會傳送 GET 請求,因此不會在實際運作的網站上提交任何表單。

系統會分開執行管理型掃描和自訂掃描。

如果 Security Command Center 是在機構層級啟用,您可以使用受管理掃描功能,集中管理機構中專案的基本網頁應用程式安全漏洞偵測,不必個別通知專案團隊。發現結果後,您可以與這些團隊合作,設定更全面的自訂掃描。

啟用 Web Security Scanner 服務後,Security Command Center 的「安全漏洞」頁面和相關報表就會自動顯示代管掃描的發現項目。如要瞭解如何啟用 Web Security Scanner 受管理掃描,請參閱「設定 Security Command Center 服務」。

受管理掃描僅支援使用預設通訊埠的應用程式,也就是 HTTP 連線的通訊埠 80,以及 HTTPS 連線的通訊埠 443。如果應用程式使用非預設通訊埠,請改為執行自訂掃描。

自訂掃描

Web Security Scanner 自訂掃描功能可提供應用程式安全漏洞的詳細資訊,例如過時的程式庫、跨網站指令碼攻擊或混合式內容的使用情形。

您可以在專案層級定義自訂掃描。

完成設定 Web Security Scanner 自訂掃描的指南後,您可以在 Security Command Center 中查看自訂掃描結果。

掃描結果

本節說明 Web Security Scanner 發現項目類型和相關的法規遵循標準。

偵測工具和法規遵循

Web Security Scanner 支援 OWASP Top Ten 中的類別。這份文件列出 Open Web Application Security Project (OWASP) 判定的前 10 大網路應用程式安全性風險,並提供補救措施指引。

合規性對應僅供參考,並非由 OWASP 基金會提供或審查。這項功能僅供您監控是否違反法規遵循控制措施。這些對應表不得做為您產品或服務是否符合任何法規或產業基準/標準的稽核、認證或合規報告依據,也不得做為替代方案。

如要進一步瞭解法規遵循,請參閱「評估及回報安全性基準法規遵循情形」。

發現項目類型

Web Security Scanner 自訂和代管掃描會找出下列類型的發現項目。如果已部署的應用程式使用不受防火牆保護的公開網址和 IP,Standard 級的 Web Security Scanner 即可在這類應用程式中執行自訂掃描。

類別 發現項目的說明 發現項目類別 OWASP 2017 前 10 大 OWASP 2021 前 10 大

API 中的類別名稱:ACCESSIBLE_GIT_REPOSITORY

Git 存放區公開。如要解決這項發現,請移除 GIT 存放區的非預期公開存取權。

定價層級進階或標準

修正這個發現項目

安全漏洞 A5 A01

API 中的類別名稱:ACCESSIBLE_SVN_REPOSITORY

SVN 存放區公開顯示。如要解決這項發現,請移除 SVN 存放區的非預期公開存取權。

定價層級進階或標準

修正這個發現項目

安全漏洞 A5 A01

API 中的類別名稱:ACCESSIBLE_ENV_FILE

ENV 檔案公開顯示。如要解決這項發現,請移除 ENV 檔案的公開非預期存取權。

定價層級進階或標準

修正這個發現項目

安全漏洞 A5 A01

API 中的類別名稱:CACHEABLE_PASSWORD_INPUT

在網頁應用程式中輸入的密碼可能會快取在一般瀏覽器快取中,而非安全的密碼儲存空間。

價格方案進階

修正這個發現項目

安全漏洞 A3 A04

API 中的類別名稱:CLEAR_TEXT_PASSWORD

密碼是以純文字格式傳輸,因此可能會遭到攔截。如要解決這項發現,請將透過網路傳輸的密碼加密。

定價層級進階或標準

修正這個發現項目

安全漏洞 A3 A02

API 中的類別名稱:INSECURE_ALLOW_ORIGIN_ENDS_WITH_VALIDATION

跨網站 HTTP 或 HTTPS 端點只會驗證 Origin 要求標頭的後置字串,接著就會在 Access-Control-Allow-Origin 回應標頭中呈現該後置字串。如要解決這項問題,請先確認預期的根網域是 Origin 標頭值的一部分,然後再呈現在 Access-Control-Allow-Origin 回應標頭中。如為子網域萬用字元,請在根網域開頭加上半形句號,例如 .endsWith(".google.com")

價格方案進階

修正這個發現項目

安全漏洞 A5 A01

API 中的類別名稱:INSECURE_ALLOW_ORIGIN_STARTS_WITH_VALIDATION

跨網站 HTTP 或 HTTPS 端點只會驗證 Origin 要求標頭的前置字串,接著就會在 Access-Control-Allow-Origin 回應標頭中呈現該前置字串。如要解決這項問題,請先驗證預期網域與 Origin 標頭值完全相符,再將其反映在 Access-Control-Allow-Origin 回應標頭中,例如 .equals(".google.com")

價格方案進階

修正這個發現項目

安全漏洞 A5 A01

API 中的類別名稱:INVALID_CONTENT_TYPE

載入的資源與回應的 Content-Type HTTP 標頭不符。如要解決這項問題,請使用正確的值設定 X-Content-Type-Options HTTP 標頭。

定價層級進階或標準

修正這個發現項目

安全漏洞 A6 A05

API 中的類別名稱:INVALID_HEADER

安全性標頭有語法錯誤,因此瀏覽器會忽略該標頭。如要解決這項發現,請正確設定 HTTP 安全性標頭。

定價層級進階或標準

修正這個發現項目

安全漏洞 A6 A05

API 中的類別名稱:MISMATCHING_SECURITY_HEADER_VALUES

安全性標頭重複,且值不相符,導致未定義的行為。 如要解決這項問題,請正確設定 HTTP 安全性標頭。

定價層級進階或標準

修正這個發現項目

安全漏洞 A6 A05

API 中的類別名稱:MISSPELLED_SECURITY_HEADER_NAME

安全性標頭拼字有誤,因此遭到忽略。如要解決這項問題,請正確設定 HTTP 安全性標頭。

定價層級進階或標準

修正這個發現項目

安全漏洞 A6 A05

API 中的類別名稱:MIXED_CONTENT

HTTPS 網頁透過 HTTP 提供資源。如要解決這項發現,請確保所有資源都是透過 HTTPS 提供。

定價層級進階或標準

修正這個發現項目

安全漏洞 A6 A05

API 中的類別名稱:OUTDATED_LIBRARY

系統偵測到含有已知安全漏洞的程式庫。如要解決這項發現,請將程式庫升級至較新版本。

定價層級進階或標準

修正這個發現項目

安全漏洞 A9 A06

API 中的類別名稱:SERVER_SIDE_REQUEST_FORGERY

系統偵測到伺服器端偽造要求 (SSRF) 安全漏洞。如要解決這項問題,請使用許可清單,限制網頁應用程式可提出要求的網域和 IP 位址。

定價層級進階或標準

修正這個發現項目

安全漏洞 不適用 A10

API 中的類別名稱:SESSION_ID_LEAK

提出跨網域要求時,網路應用程式會在 Referer 要求標頭中加入使用者的工作階段 ID。這個安全漏洞會讓接收網域存取工作階段 ID,可用於冒用或明確識別使用者身分。

價格方案進階

修正這個發現項目

安全漏洞 A2 A07

API 中的類別名稱:SQL_INJECTION

系統偵測到潛在的 SQL 注入安全漏洞。如要解決這項問題,請使用參數化查詢,避免使用者輸入內容影響 SQL 查詢的結構。

價格方案進階

修正這個發現項目

安全漏洞 A1 A03

API 中的類別名稱:STRUTS_INSECURE_DESERIALIZATION

系統偵測到您使用容易遭受攻擊的 Apache Struts 版本。如要解決這項發現,請將 Apache Struts 升級至最新版本。

價格方案進階

修正這個發現項目

安全漏洞 A8 A08

API 中的類別名稱:XSS

這個網頁應用程式的某個欄位容易遭受跨網站指令碼攻擊 (XSS)。如要解決這項發現,請驗證及排除不受信任使用者提供的資料。

定價層級進階或標準

修正這個發現項目

安全漏洞 A7 A03

API 中的類別名稱:XSS_ANGULAR_CALLBACK

使用者提供的字串未經過逸出處理,AngularJS 可以內插該字串。如要解決這項問題,請驗證及排除不受信任使用者提供並以 Angular 架構處理的資料。

定價層級進階或標準

修正這個發現項目

安全漏洞 A7 A03

API 中的類別名稱:XSS_ERROR

這個網頁應用程式中的某個欄位容易遭受跨網站指令碼攻擊。如要解決這項發現,請驗證及排除不受信任使用者提供的資料。

定價層級進階或標準

修正這個發現項目

安全漏洞 A7 A03

API 中的類別名稱:XXE_REFLECTED_FILE_LEAKAGE

系統偵測到 XML 外部實體 (XXE) 安全漏洞。這個漏洞可能會導致網頁應用程式洩漏主機上的檔案。如要解決這項問題,請將 XML 剖析器設為禁止外部實體。

價格方案進階

修正這個發現項目

安全漏洞 A4 A05

API 中的類別名稱:PROTOTYPE_POLLUTION

應用程式容易受到原型污染攻擊。如果可將攻擊者可控的值指派給 Object.prototype 物件的屬性,就會出現這項安全漏洞。系統一律會假定植入這些原型的值會轉化為跨網站指令碼,或是類似的用戶端安全漏洞和邏輯錯誤。

定價層級進階或標準

修正這個發現項目

安全漏洞 A1 A03

API 中的類別名稱:HSTS_MISCONFIGURATION

系統偵測到設定錯誤的 HTTP 嚴格傳輸安全性 (HSTS) 標頭。如要大幅降低 HTTP 連線遭到降級和竊聽攻擊的風險,請修正設定錯誤的 HSTS 標頭。HSTS 標頭會透過加密管道 (TLS) 強制連線,因此明文 HTTP 連線會失敗。進一步瞭解 HTTP 嚴格傳輸安全性標頭

價格方案進階

修正這個發現項目

設定錯誤 不適用 不適用

API 中的類別名稱:CSP_MISSING

系統偵測到缺少內容安全政策 (CSP) HTTP 回應標頭。CSP 標頭可防止載入不受信任的指令碼或外掛程式,藉此防範常見的網路安全漏洞遭到利用,尤其是跨網站指令碼攻擊 (XSS)。建議使用嚴格的 CSP 標頭。進一步瞭解 CSP 標頭

價格方案進階

修正這個發現項目

設定錯誤 不適用 不適用

API 中的類別名稱:CSP_MISCONFIGURATION

系統偵測到設定錯誤的內容安全政策 (CSP) HTTP 回應標頭。CSP 標頭可防止載入不受信任的指令碼或外掛程式,藉此降低常見網頁安全漏洞 (尤其是跨網站指令碼攻擊 XSS) 遭到利用的風險。建議使用嚴格的 CSP 標頭。進一步瞭解 CSP 標頭

價格方案進階

修正這個發現項目

設定錯誤 不適用 不適用

API 中的類別名稱:COOP_MISSING

系統偵測到缺少跨來源開啟者政策 (COOP) HTTP 標頭。COOP 是一種網頁安全機制,可限制在新視窗中開啟的網頁存取原始網頁的屬性。COOP 可提供強大的防護層,抵禦常見的網路攻擊。

價格方案進階

修正這個發現項目

設定錯誤 不適用 不適用

API 中的類別名稱:CLICKJACKING_PROTECTION_MISSING

系統偵測到缺少回應標頭。如要防範點擊劫持,請實作 HTTP 回應標頭,例如 X-Frame-Option (XFO) 或 Content-Security-Policy (CSP)。點擊劫持(又稱 UI 偽裝) 是一種網路攻擊,攻擊者會修改目標網站的介面,讓受害者在不知情的情況下採取重要動作。建議實作 HTTP 回應標頭:XFO 標頭易於使用;CSP 標頭則提供更多彈性。
- 進一步瞭解 XFO 標頭
- 進一步瞭解 CSP 標頭

價格方案進階

修正這個發現項目

設定錯誤 不適用 不適用

使用注意事項

您可以在機構、資料夾或專案層級授予 Security Command Center 的 IAM 角色。您能否查看、編輯、建立或更新發現項目、資產和安全性來源,取決於您獲准的存取層級。如要進一步瞭解 Security Command Center 角色,請參閱存取權控管

使用 Web Security Scanner 時,請注意下列其他重要事項:

  • Web Security Scanner 會持續不斷地改進各項功能,因此未來的掃描可能會回報當前掃描所無法回報的問題。
  • 應用程式的部分功能或區段可能不會受到測試。
  • Web Security Scanner 會嘗試啟用找到的每個控制項和輸入項。
  • Web Security Scanner 僅支援使用 IPv4 的網站。系統不會掃描使用 IPv6 的網站。
  • 如果您將測試帳戶具有權限的狀態變更動作公開,Web Security Scanner 可能會啟用這些動作。這可能會導致非預期的結果。
  • 每個專案最多只能有 15 次掃描。由於掃描作業會同時執行,建議達到這項限制的使用者為每次掃描新增多個起始網址,或將掃描作業新增至尚未達到限制的不同專案。

哪些人員可執行安全掃描?

如要瞭解 Web Security Scanner 適用的 Identity and Access Management (IAM) 角色,請參閱「存取權控管」一文。

執行安全掃描需要多久時間?

安全掃描不會立即執行。系統會將安全掃描排入佇列以待稍後執行,可能在數小時後才會執行,視系統負載狀況而定。開始執行掃描後,所需的時間則取決於應用程式大小。掃描含有大量網址的大型應用程式可能需要數小時,甚至數天。 如果掃描作業未在 20 天內完成,系統會自動停止掃描,並將掃描期間的所有檢索結果和發現事項顯示為掃描結果。

目標限制

Web Security Scanner 提供了立即可用的篩選器,會將掃描目標限制於該項掃描作業專用的特定 App Engine 執行個體。如果輸入其他 App Engine 專案的網址,或是外部網域的網址,將會產生錯誤訊息。

Compute Engine 和 GKE 的掃描作業僅限於對應至保留給相同專案的靜態外部 IP 位址,以及屬於相同專案的靜態外部 IP 位址。如需為專案預留 IP 位址的操作說明,請參閱下列連結:

App Engine 無法將靜態 IP 位址對應到應用程式。不過,您可以使用 Cloud Load Balancing 和無伺服器網路端點群組,為負載平衡器保留靜態 IP 位址,然後將流量導向應用程式。如需定價資訊,請參閱「所有網路定價」。

Web Security Scanner 會在您的專案中自動「嘗試」避開登出網址,以及其他可能會對掃描作業造成不良影響的一般位置。不過為了保險起見,您可透過掃描設定來手動排除網址

驗證

系統會在建立掃描設定時和每次掃描前,驗證掃描設定。Web Security Scanner 會檢查 Security Command Center 設定和應用程式的驗證憑證,確保掃描作業設定正確,且能順利登入應用程式。系統也會檢查設定參數 (包括最大掃描速度),確保這些參數在支援的範圍內。

您必須先解決錯誤,才能建立或更新掃描作業。如果應用程式在初始設定後有所變更,掃描時可能會產生錯誤。舉例來說,如果網域不再指向專案擁有的 IP 位址,系統就不會掃描該資源,並在掃描設定頁面回報錯誤。

最佳做法

由於 Web Security Scanner 會填入欄位、推送按鈕、點擊連結及執行其他使用者動作,因此請謹慎使用,特別是掃描生產資源時。Web Security Scanner 啟用的功能可能會變更資料或系統的狀態,產生非預期的結果。

例如:

  • 在允許公開留言的網誌應用程式中,Web Security Scanner 可能會於所有網誌文章上留言,以張貼測試字串。
  • 在電子郵件註冊頁面中,Web Security Scanner 可能會產生大量的測試電子郵件。

以下是避免產生非預期結果的一些實用技巧,您可以單獨使用或合併使用這些技巧:

  1. 在測試環境中執行掃描。建立獨立的 App Engine 專案,並在其中載入應用程式和資料,藉此設定測試環境。如果使用 Google Cloud CLI,上傳應用程式時可以指定目標專案做為指令列選項。
  2. 使用測試帳戶。建立無法存取機密資料或有害作業的使用者帳戶,並在掃描應用程式時使用該帳戶。許多應用程式在使用者第一次登入時皆設有特別的工作流程,例如請使用者接受條款和建立個人資料。由於工作流程的差異,初始使用者的測試帳戶所產生的掃描結果也會有別於既定使用者帳戶的結果。建議先完成第一次工作流程後,再以處於正常使用者狀態的帳戶執行掃描。
  3. 封鎖您不想啟用的個別使用者介面元素,方法是套用 CSS 類別 inq-no-click。無論附加至此元素的事件處理常式為內嵌 JavaScript、使用 addEventListener 附加,還是藉由設定適當的事件處理常式屬性附加,系統都不會在檢索和測試期間啟用這些事件處理常式。
  4. 使用備份資料。建議在執行掃描前建立資料備份。
  5. 排除網址。可指定不想檢索或測試的網址模式。如需語法相關資訊,請參閱排除網址一文。

開始掃描前,請仔細檢查是否有任何應用程式功能會影響到超出掃描範圍以外的資料、使用者或系統。

後續步驟