2021 OWASP Top 10 A02加密機制失效的問題
A02加密機制失效的介紹
加密的部份一定是對應資料的加密,還有一些傳輸的加密,所以一開始我們必須要先盤點出來,目前企業中所有的相關個人資料,或是需要保護的營運秘密的細節,確認完之後再去遵循像是歐盟的 GDPR 或是 PCIDSS信用卡加密機制的相關資料保護的標準,針對這些資須留意以下資訊:
.確認目前使用的傳輸協定是否加密協定,好比說使用了 HTTP 、SMTP、FTP對外網路流量,基本上應該是需要做加密的;內部的流量應該要去做驗證,好比說負載平衡器、網站伺服器,或是後端系統之間,應該要做一些基本的驗證,對於一般的企業而言,內部流量應該要使用 IP 對鎖機制去做存取控制的管理。
.老舊或是脆弱的加密演算法,是否在預設使用,或是在比較舊的程式碼有被使用的,像是早期老舊的雜湊演算法,例如:MD5 、SHA-1的演算法,是否在舊的程式碼裡面被移除了,或者是新的程式碼裡面,使用比較老的或是比較脆弱的演算法都必須要做檢查。
.預設的加密金鑰被使用,或是脆弱的加密金鑰被重複使用,是否有金鑰的管理或Rotation 的機制,像是程式開發的框架本身會帶入一些預設的加密金鑰(加密的 Key 或程式的 Secret),這些在開發流程裡面去對應不同環境做不同的設定,好比試環境會有測試的 Key,或正式環境會有正式的 Key,Key 的替換是需要一季一次、一年一次Rotation適當的管理。
.加密是否強制的,目前瀏覽器會有一個 HSTS 加密的,是否被強制使用?這樣機制讓瀏覽器的加密傳輸更加安全,因為第一次傳輸的需要做 Key 的交換,再來就會使用第一次傳輸的 Key 去做驗證
這樣也是相對安全的。
.伺服器所提供的憑證跟憑證練是否被妥善的驗證。
.是否有加密錯誤訊息,或是旁路通道的資訊可以被破解,好比說 Padding Oracle攻擊,
這個問題連上面老舊的加密演算法的部份一起,建議使用比較新的演算法的加密機制。
A02 加密機制失效如何做修補跟預防
1.對應用程式處理的資料進行分類,在一開始做個資盤點的時候,要去遵循隱私法或是一些法規,或是個資相關的 Combines 去做相對應的處理,辨識哪些資料是敏感性資料。
2.依每樣的分類去做相對應的控制措施,至於不敏感的敏感性資料要符合 PCIDSS 的 tokenization,或是 truncation 的做法。
3.非必要不儲存敏感資料,主要是信用卡相關的措施,PCIDSS 的 tokenization 或 truncation 的做法,也是說目前的卡號應該要做資料記號化,而不需要的資料卡號後面的驗證三碼是不應該被儲存的。
4.所有的靜態資料都做加密。
5.確認目前使用的演算法是不是最新版的且是標準的演算法,後續的 Key 的管理是否有做 KMS 的金鑰管理。
6.使用安全的協定去傳輸加密中的資料,比方是有 Perfect Forward Secrecy 完全向前加密、伺服器加密優先順序是否有做一個完整的設定,以及是否相對使用 HSTS強化確認整個傳輸過程中是相對低風險的做法。
7.瀏覽器快取的問題,包含敏感資料的頁面是否停用快取。
8.使用有雜湊迭代次數演算法來儲存密碼。
9.是獨立驗證設定的有效性,設定稽核的時候須有一個獨立的驗證去做確認。
A02 加密機制失效攻擊情境的範例
情境一:自動解密下存取信用卡的明文
自動化加密的環境,存取的時候是允許自動解密的,在自動解密的當下剛好有一個 SQL injection 的缺陷可以去存取信用卡的明文。
情境二:降級攻擊使用者的個資
站台它沒有使用 TLS可以降級成比較強度相對低的加密的方式,攻擊者可以去監控這個網路流量。例如:一個 wifi 的環境攻擊者可以把這個連線從 HTTPS 降級成 HTTP,然後去攔截裡面相關的 session 的資料,或 cookies 的資料去修改使用者的個資,這樣的攻擊是常見的 downgrade 的攻擊。
情境三:未被加鹽或簡單的雜湊來儲存每個人的密碼
密碼資料庫在演算的時候是沒有加鹽的,或是雜湊演算法是非常簡單的,當網站有一個上傳的缺陷可以讓 user去取得密碼資料庫,取得的雜湊可以用rainbow tabel 做破解。
這些情境都是目前加密相關的是常見攻擊的情況,對應的 CBE 列表也是相當的多,除了原先加密相關的問題之外,還包含了一些亂數相關的問題,例如: PRNG 的使用,或是通訊相關的加密,都是A02相關的一些細節。