2023 年 3 月 29 日更新
為配合產業趨勢和最佳做法,應用程式防禦聯盟 (ADA) 工作小組於 2023 年第 1 季進行審查,更新、簡化及標準化 CASA 測試程序。根據這些工作階段,我們更新了 CASA 規定和程序,如下所示:
-
CASA 規定從 134 項更新為 73 項 (詳情請參閱下文)。
-
如要通過 CASA 評估,應用程式必須通過或清除所有 73 項 CASA 要求,無論 CWE 評分為何。
-
更新層級說明,加入實驗室進行的第 2 層。
-
新增各層級的保證資訊。
-
微幅更新,簡化第 2 層的自助掃描程序。
CASA 規定更新
-
如要查看最新規定清單,請按這裡
-
已移除下列規定
req_id |
工作群組意見回饋 |
8.1.6 |
建議將這項規定改為更具體的行動 (例如:備份檔只能保留 X 時間、備份檔應監控竊取/毀損情況、備份檔應定期稽核,確認可移回正式環境)。目前的假設過於廣泛,需要更明確的定義。 |
5.1.4 |
其他測試案例的副本。這個測試案例需要投入大量心力,但價值不高。建議移除。 |
7.3.3 |
其他測試案例的副本。這個測試案例需要投入大量心力,但價值不高。建議移除。 |
1.2.2 |
remove due to coverage in other req such as 4.1.1 |
2.2.4 |
移除 Req,因為 4.3.1 已涵蓋這項要求 (4.3.1 確認管理介面使用適當的多重驗證機制, 防止未經授權的使用行為),包括在管理介面和其他內部存取路徑中,防範網路釣魚攻擊的冒用行為。 |
2.2.5 |
移除,因為大多數 CSP 不支援 mTLS,而且大多數開發人員測試 CASA 時會使用密碼驗證 |
2.4.3 |
標準不夠具體,無法強制執行 |
2.4.5 |
ASVS V5 已移除這項規定,且 2.4.1 中建議使用的雜湊演算法無法滿足這項規定 |
2.7.5 |
測試不可行,因為可能需要分析第三方 OOB 供應商,但由於驗證碼的效期很短,因此風險不高。 |
2.8.2 |
這項規定僅適用於自訂 MFA 解決方案,也涵蓋在 6.4.2 和 6.4.1 中。 |
2.8.5 |
移除這項要求,因為 2.7.6 已涵蓋此要求,此外,ASVS 的記錄要求也涵蓋記錄失敗嘗試 |
2.8.6 |
應用程式層級的實體 OTP 並非常見用途,但管理介面需要這項要求。不過,要求 4.3.1 (確認管理介面使用適當的多重驗證機制,防止未經授權的使用行為) 涵蓋管理介面的多重驗證,可防範這項風險。 |
2.9.1 |
這項規定涵蓋 ASVS 規範中的實體裝置 (密碼編譯安全金鑰是智慧卡或 FIDO 金鑰,使用者必須插入或配對這類裝置, 將加密裝置連接到電腦,完成驗證。 驗證者會將驗證碼隨機數傳送至 加密裝置或軟體,並根據安全 儲存的加密金鑰),因此這項規定不屬於 CASA 範圍,因為實體裝置驗證風險已納入 4.3.1 的多重驗證 (實體或軟體) 目的範圍。 |
2.9.3 |
這項規定涵蓋 ASVS 規範中的實體裝置 (密碼編譯安全金鑰是智慧卡或 FIDO 金鑰,使用者必須插入或配對這類裝置, 將加密裝置連接到電腦,完成驗證。 驗證者會將驗證碼隨機數傳送至 加密裝置或軟體,並根據安全 儲存的加密金鑰),因此這項規定不屬於 CASA 範圍,因為實體裝置驗證風險已納入 4.3.1 的多重驗證 (實體或軟體) 目的範圍。 |
2.10.1 |
要求與 2.10.2 相矛盾 |
2.10.3 |
涵蓋 2.4.1 (確認為應用程式儲存使用者密碼時,使用下列其中一種密碼雜湊函式:argon2id、scrypt、bcrypt 或 PBKDF2),涵蓋離線攻擊和密碼儲存的風險。 |
2.10.4 |
涵蓋範圍:6.4.2 確認金鑰資料不會向應用程式公開,而是使用獨立的安全模組 (例如保管庫) 執行加密編譯作業。 |
3.2.3 |
涵蓋於 3.4.1、3.4.2 和 3.4.3 |
3.5.1 |
使用者可透過 OAuth 供應商撤銷權杖 |
4.3.3 |
Req is covered by MFA for admin interfaces and privileged access |
5.1.3 |
這項要求涵蓋在其他輸入驗證要求中,且如果缺乏驗證不會造成實際的業務邏輯安全漏洞,則嚴重程度較低。舉例來說,如果電話號碼驗證不當,資訊頁面只會顯示不正確的電話號碼,不會直接影響安全性。 |
5.1.4 |
這項要求涵蓋在其他輸入驗證要求中,且如果缺乏驗證不會造成實際的業務邏輯安全漏洞,則嚴重程度較低。舉例來說,如果電話號碼驗證不當,資訊頁面只會顯示不正確的電話號碼,不會直接影響安全性。 |
5.3.2 |
這項規定中,指定每個 Unicode 字元都有效的這部分,可能會讓測試變得困難。並非每個應用程式都會提供足夠大的文字表單,可容納所有 Unicode 字元。此外,某些作業系統和駭客工具也不支援整個 Unicode 空間,因此即使伺服器支援,您也無法測試。整體而言,安全性價值存疑。原本包含在 Beta 版中,但因測試時發生問題而移除。 |
6.2.5 |
6.2.4 和 6.2.3 涵蓋的內容 |
6.2.6 |
6.2.4 和 6.2.3 涵蓋的內容 |
6.3.1 |
6.2.4 和 6.2.3 涵蓋的內容 |
6.3.3 |
其他隨機號碼產生規定。 |
7.1.2 |
涵蓋於 7.1.1 |
7.1.3 |
涵蓋於 7.1.1 |
7.3.1 |
涵蓋於 7.1.1 |
7.3.3 |
涵蓋於 7.1.1 |
8.1.3 |
很難說明哪些參數可接受或必要。無法測試。何謂必要?我們如何判斷例外狀況是否有效? CASA 涵蓋範圍以外 |
8.3.3 |
這項規定無法測試,與隱私權政策和服務條款相關,而非應用程式安全性。這是法律和法規遵循審查,不屬於 CASA 範圍。 |
8.3.6 |
控制項是系統專屬 (Windows/Linux 變體) 和裝置專屬,在大多數情況下不是應用程式控制項。 |
8.3.8 |
涵蓋於 1.8.1、1.8.2 和 1.1.4 |
9.2.5 |
8.3.5 涵蓋的範圍,以及應用程式的記錄政策審查。 |
10.1.1 |
架構審查涵蓋的範圍,也是建議的最佳做法。需求無法測試 |
10.2.3 |
無法在合理的時間內完成。任何奇怪的程式碼都應記錄並審查,但如要確保沒有後門,則需要逐行深入審查程式碼,且無法保證沒有後門。 難以測試設計完善的惡意函式 |
10.2.4 |
無法測試。無法在合理的時間內完成。任何奇怪的程式碼都應記錄並審查,但如要設定特定工作來確保沒有後門,則需要逐行深入審查程式碼,且無法保證沒有後門。 難以測試設計完善的惡意函式 |
10.2.5 |
無法測試。無法在合理的時間內完成。任何奇怪的程式碼都應記錄並審查,但如要設定特定工作來確保沒有後門,則需要逐行深入審查程式碼,且無法保證沒有後門。 難以測試設計完善的惡意函式 |
13.1.1 |
涵蓋於 5.2.6 和 5.3.9 |
12.3.1 |
ASVS 和 CASA 第 5 章 (驗證、清除和編碼) 的其他現有規定涵蓋路徑遍歷風險 |
12.3.3 |
涵蓋於 5.2.6 和 5.3.9 |
12.3.6 |
涵蓋 10.3.2、12.4.1 和 12.4.2 |
12.5.1 |
涵蓋 10.3.2 和 12.4.2 |
12.5.2 |
涵蓋 10.3.2、12.4.1 和 12.4.2 |
13.1.5 |
這項要求涵蓋在其他輸入驗證要求中,且如果缺乏驗證不會造成實際的業務邏輯安全漏洞,則嚴重程度較低。舉例來說,如果電話號碼驗證不當,資訊頁面只會顯示不正確的電話號碼,不會直接影響安全性。 |
13.2.2 |
這項要求涵蓋在其他輸入驗證要求中,且如果缺乏驗證不會造成實際的業務邏輯安全漏洞,則嚴重程度較低。舉例來說,如果電話號碼驗證不當,資訊頁面只會顯示不正確的電話號碼,不會直接影響安全性。 |
13.2.3 |
涵蓋於 4.2.2 |
13.2.5 |
這項要求涵蓋在其他輸入驗證要求中,且如果缺乏驗證不會造成實際的業務邏輯安全漏洞,則嚴重程度較低。舉例來說,如果電話號碼驗證不當,資訊頁面只會顯示不正確的電話號碼,不會直接影響安全性。 |
13.3.1 |
這項要求涵蓋在其他輸入驗證要求中,且如果缺乏驗證不會造成實際的業務邏輯安全漏洞,則嚴重程度較低。舉例來說,如果電話號碼驗證不當,資訊頁面只會顯示不正確的電話號碼,不會直接影響安全性。 |
14.4.1 |
涵蓋於 5.3.1 |
14.4.2 |
這項要求涵蓋在其他輸入驗證要求中,且如果缺乏驗證不會造成實際的業務邏輯安全漏洞,則嚴重程度較低。舉例來說,如果電話號碼驗證不當,資訊頁面只會顯示不正確的電話號碼,不會直接影響安全性。 |
14.4.3 |
涵蓋於 5.2.7 和 5.3.3 |
14.4.5 |
涵蓋於 6.2.1 和 9.2.1 |
14.4.7 |
涵蓋於 12.4.1 |
14.5.3 |
第 14.5.2 節涵蓋的內容 |
2.1.5 |
涵蓋於 2.1.1 |
2.1.6 |
涵蓋於 2.1.1 |
2.2.3 |
與 casa 無關,因為風險已由其他自動化防護控管機制涵蓋 |
2.5.6 |
受其他密碼保護措施保護 |
3.1.1 |
外洩風險低,且受 ASVS 的其他控制措施保護 |
3.2.1 |
外洩風險低,且受 ASVS 的其他控制措施保護 |
3.4.4 |
外洩風險低,且受 ASVS 的其他控制措施保護 |
3.4.5 |
外洩風險低,且受 ASVS 的其他控制措施保護 |
4.2.1 |
涵蓋於 13.1.4 |
5.2.8 |
其他輸入驗證和清理檢查涵蓋的範圍 |
5.3.5 |
其他輸入驗證和清理檢查涵蓋的範圍 |
7.4.1 |
涵蓋記錄檢查 |
8.2.3 |
涵蓋於 8.1.1 |
9.1.1 |
涵蓋於 6.2.1 和 9.2.1 |
1.2.3 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.4.4 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.5.2 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.5.3 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.5.4 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.9.1 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.11.3 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.14.1 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.14.2 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.14.3 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.14.4 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.14.5 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
1.14.6 |
涵蓋於 1.1.4、1.8.4 和 1.8.2 |
6.1.2 |
涵蓋於 6.1.1 |
6.1.3 |
涵蓋於 6.1.1 |
2.10.2 |
涵蓋於 2.5.4 |
2.2.1 |
涵蓋於 11.1.4 |
2.7.3 |
涵蓋於 2.7.2 |
2.7.4 |
涵蓋於 2.7.2 |
5.1.2 |
受自動化控制防護機制保護 |
6.2.2 |
未定義核准的加密演算法 |
8.2.1 |
涵蓋於 8.1.1 |
9.1.2 |
涵蓋於 9.2.1 |
9.1.3 |
涵蓋於 9.2.1 |
5.5.1 |
涵蓋於 1.8.2 |
14.2.1 |
適用 1.14.6 版 |
3.3.4 |
如果應用程式使用無狀態的 AuthN/Z,則不適用這項做法。同意 NCC Group 的建議,移除該擴充功能。這應涵蓋在 3.3.3 中 |
-
新增下列規定:
req_id |
說明 |
1.1.4 |
驗證所有應用程式信任範圍、元件和重要資料流程的文件和理由。 |
1.8.1 |
確認所有機密資料都已識別,並分類至各個保護等級 |
1.8.2 |
確認所有保護等級都有一組相關的保護規定,例如加密規定、完整性規定、保留規定、隱私權規定和其他機密性規定,且這些規定 架構中套用。 |
2.1.1 |
確認使用者設定的密碼長度至少為 12 個字元 |
2.5.4 |
確認沒有共用或預設帳戶 (例如「root」)。 「admin」或「sa」)。 |
4.2.1 |
確認機密資料和 API 受到保護,不會遭到不安全的直接物件參照 (IDOR) 攻擊,這類攻擊會以建立、讀取、更新及刪除記錄為目標,例如建立或更新他人的記錄、查看所有人的記錄,或是刪除所有記錄。 |
1.14.6 |
確認應用程式未使用不受支援、不安全或已淘汰的 用戶端技術,例如 NSAPI 外掛程式、Flash、Shockwave、ActiveX、 Silverlight、NACL 或用戶端 Java 小程式。 |