2021 OWASP Top 10 A08軟體及資料完整性失效
分為三個面向
- 第一資料反序列化
當物件、或資料在編碼或序列化之後,在傳輸的過程中,接收的這一端可能會有一些不完全的反序列化資料。
- 第二應用程式的 dependency
當一個不信任來源的資料在CI/CD 流程裡面,系統會遭到惡意程式碼破壞,或是它的部屬來源是有問題的。
- 第三應用程式自動化更新
目前的 OTA 機制,不一定會有所謂完整性校驗的狀況。
A08軟體及資料完整性失效修補跟預防
1.確認序列化資料,在收進來的時候是不是有確認過完整性的狀況。
2.應用程式、資料的提供者,是不是有用數位簽章、相關的機制確認軟體或資料是有完整性的情況。
3.函式庫跟相關的第三方套件的狀況,像是 npm ,或是 Java 的 Maven是從信任的來源所取得。
4.用的軟體的供應鏈的安全工具,像是OWASP Dependency Check,或是 CycloneDX 這樣的工具,確認目前使用的元件沒有已知的弱點,和上一個提到的第三方套件的問題,是一個重疊的情況。
5.使用 CI/CD 的流程與組態確認程式碼在編譯的過程、在組建的過程,甚至在部署的過程中,流程的完整性。
A08軟體及資料完整性失效情境的範例
情境一:標準的 Java 反序列化:
使用 Spring Boot 來開發的應用程式,而工程師確認程式是沒有問題的。其中有一個傳輸的流程中,他們使用了序列化的方式包裝他們物件的資料,但傳輸之後並沒有做完整性的校驗,導致攻擊者透過 ysoserial 去執行 Java 的反序列化的攻擊,讓應用程式執行攻擊者所填入的攻擊代碼。
情境二:未簽署的更新:
目前家用的機上盒、router、IoT 的裝置等,更新的方式都沒有更新一個經過校驗的檔案。目前 OTA 的機制是沒有經過完整性校驗的流程,讓攻擊者可以部署惡意程式的韌體進去。這樣的問題,只能透過新版本蓋過舊版本去淘汰。
情境三: SolarWinds 的惡意更新:
SolarWinds 的 Orion 的攻擊,導致多數的軟體開發商使用他們的軟體的時候,遭到供應鏈攻擊,這個問題也影響了美國政府跟相當多的軟體開發商,所以目前軟體來源與資料來源,都是必須要經過一個完整性校驗,確認它是可信任的情況下,才能做執行。
總結
對應的 CWE 列表反序列化的問題- CWE-502 Deserialization of Untrusted Data,其它的問題就是的一些基本的完整性校驗的狀況。