2021 OWASP Top 10 A04 不安全設計

2022/08/09



A04 不安全設計介紹

不安全的設計是指沒有控制措施的地方。舉例來說,商業模型沒有做足夠威脅建模的做法,導致一開始在設計的時候,有一些攻擊的情境會發生,應該要去用一些早期的評估方式,或是直接導入軟體安全開發生命週期的方式。

在程式開發早期須先確認目前開發模式、邏輯及實作的狀況是否符合整體的資安評估的預期。

A04 不安全設計如何做修補跟預防

1.使用軟體安全開發生命週期的方式,再加上專業的資安架構師去確認跟評估目前設計的控制措施與安全與隱私的相關部份。

2.使用安全設計模式的函式庫,或是已完成跟使用的元件。舉例來說,實作 Session 時候是否直接去引入 Framework 本身的安全的設計,可能會有更多的缺陷和更多的問題。

3.關鍵的認證、存取控制、商業邏輯與關鍵缺陷上,我們使用Threat Modeling 威脅建模方式去確認整體狀況。舉例來說,在登入登出的時候,關鍵的認證會有什麼樣的問題,使用Threat Modeling 確認,同時在這個部份是否可以加入 reCaptcha,或是一開始設計一些存取頻率的控制。

4.撰寫單元測試與整合測試去驗證關鍵流程跟威脅建模的關係,是不是有抗衡的狀況,

也就是QA做單元測試與整合測試的時候,可以提早來面對這些資安問題。

A04不安全設計情境的範例

情境一:恢復使用者身份的流程

早期可能會有一些問題與答案的部份,例如:小時候讀的國小是哪一間、你爸爸的名字媽媽的名字、最喜歡的卡通電影是哪一部等問題,後來是被 OWASP 、NIST 800-63b禁止的。

因為這樣的問題跟答案並不是只有你本人知道,可能很多人都可以透過肉搜的方式去找到你的答案,所以應該用更安全的設計來替代,目前大部分都是用手機,或是另外 E-Mail 的信箱去確認你的身份。

情境二:訂位、訂購商品

電影院訂位前還沒有付押金的時候,可以允許 15 名觀眾一次做訂票,而駭客他可以一次訂 15 張票,可以連續訂 40 次,可能這場電影就被駭客壟斷。然而如果駭客一次放棄全部的票的時候,這場電影可能導致沒有人看的情況,會有一個蠻巨大的損失。這樣況況也有可能同時出現在電商的購物車裡面,購物車可以一次訂全部的商品,而架上的數量會同時被影響,

就是所謂的 Insecure Design 的問題。

情境三:售票網站

售票網站沒有一個保護的機制去對抗一些黃牛機器人又或者是自動化購買繳款,針對防機器人的邏輯會設計一些 Captcha 的機制,或是使用的問答去阻擋黃牛機器人做大量的購買或做壟斷的機制,所以Insecure Design 的問題都不是真正程式本身技術上的缺陷,而是一些商業邏輯又或者是運作邏輯上的問題,這些應該在設計的早期就先被發現,或許在上線前先被阻止。

總結

對應的 CWE 列表可以看到多數都是一些邏輯上的問題,如:程式的密碼是可以被回復的,或是權限的指派和管理(包括連上傳檔案)的問題,也被歸類在 Insecure Design 裡面,還有比較新型態的 HTTP Request Smuggling、前端的安全限制和後端是不一致的,開發者使用前端的限制去限縮使用者的操作等問題全部都會落在 Insecure Design 裡面。


其他訊息