API安全測試:主動識別API漏洞
20多年的開發部署后,API已經到處都是。2021年的調查研究中,73%的企業表示自己已經發布了超過50個API,且這一數字還在不斷增長。
API在當今幾乎每個行業里都起著舉足輕重的作用,而且隨著它們逐漸邁向業務戰略前沿,其重要性還在平穩上升。出現這種現象其實毫不意外:API無縫連接不同應用和設備,帶來前所未有的業務協同效應和效率。
但是,與軟件任何其他組件一樣,API也免不了存在漏洞。基于此,如果沒有經過間隔的安全測試,API也有可能引入全新的攻擊途徑,將用戶暴露在前所未有的風險之下。坐等生產部門發現API漏洞是不現實的,你只會等來嚴重延遲。
API不僅受廣大企業青睞,也是攻擊者眼中的香餑餑
API可不僅僅是簡單連接企業各種應用,它們還會以無法預測的方式改變功能。API可能引入的很多獨特缺陷都廣為黑客所知,他們開發出不同方法攻擊API,從而訪問底層數據和功能。
開放Web應用安全項目(OWASP)的API Top 10表明,通過身份驗證的合法用戶利用API漏洞的情況并不鮮見,此類用戶利用看似合法的調用,實際上卻意圖篡改API。這種攻擊旨在篡改業務邏輯并利用設計缺陷,對攻擊者極具吸引力。
每個API都是獨特且專有的。因此,其軟件漏洞也是獨特且“未知”的。防御者很難發現這類可導致業務邏輯或業務過程級攻擊的漏洞。
圖1:業務邏輯漏洞和傳統漏洞
是否給予了API安全測試足夠的重視?
左移安全已廣為多數企業接受,整個開發過程貫穿持續測試的做法已成常規。然而,API安全測試常被漏掉,或者執行時缺乏對所涉風險的重復理解。為什么會這樣?原因不止一個:
- 現有應用安全測試工具是通用型,目標檢出對象是傳統Web應用漏洞,無法有效處理API的業務邏輯復雜性。
- 由于API沒有用戶界面,企業通常需要單獨測試Web、應用和移動端,但不測試API本身。
- API測試可能很是耗費人工,在擁有幾百個API時是無法擴展的。
- 由于API測試比其他測試類型更復雜,企業可能缺乏相關經驗和專業技能。
- 無法確知已經部署了哪些老舊API,或者找不到老舊API的文檔。
因此,盡管左移安全已普遍受到大多數企業重視,但API安全測試卻常被排除在DevSecOps藍圖之外。
這是個令人遺憾的狀況,因為相比傳統應用漏洞,API漏洞需要更長的響應時間:近期一項調查中,63%的受訪者報告稱需要更長時間來修復API漏洞。考慮到應用對API的依賴和快速采用情況,這一數字可能還會繼續上升。
圖2:相比傳統應用漏洞,存在API漏洞情況下的平均修復時間
雖然大多數安全主管都意識到了API安全測試的重要性,但仍有近一半的安全主管稱自己尚未將API安全測試解決方案完全集成進開發流水線中。
為什么常規安全測試方法無法覆蓋API?
要實現全面的安全方法,第一步就是仔細考察當前對于應用安全測試的普遍態度:靜態安全測試和動態安全測試。
靜態安全測試采用白盒測試方法,基于應用的已知功能創建測試,審查應用的設計、架構或代碼,包括數據在流經應用時可采取的諸多復雜路徑。
動態安全測試采用黑盒測試方法,基于應用攝入特定輸入集的的預期性能創建測試,不考慮內部處理或底層代碼知識。
至于API,開發人員和安全團隊常常爭論這兩種方法哪種最適用,各自的支持理由包括:
- 靜態測試是唯一有效的方法:因為API沒有用戶界面,你必須知道業務邏輯內部在發生什么。
- 動態測試才是我們所需要的:因為單元測試適用靜態模型,且在流水線的早期階段就已經完成了。
雖然有點掃興,但以上兩種觀點都不完全正確。事實上,兩種方法都需要確保廣泛覆蓋和處理一系列可能的場景。尤其是隨著近期API攻擊的興起,防御者不能在可擴展性、深度和頻率方面冒險。
圖3:動態API安全測試與靜態API安全測試
這種情況下,“灰盒”API安全測試成為了一個有趣的替代方案。因為沒有用戶界面,知道應用的內部運行機制(如參數、返回類型等)有助于高效創建針對業務邏輯的功能性測試。
理想狀態下,綜合考慮API安全測試的各個方面可以更好地創建灰盒解決方案,彌補單個方法的不足。此類業務邏輯方法可智能檢查其他測試類型的結果,并自動或手動調整應用改進的測試。
業務邏輯API安全測試方法
業界越來越意識到API安全防護應貫穿整個API生命周期,將API置于安全控制的前端和中心。
為此,我們必須找到簡化和彌合企業API安全測試的方法,將API安全測試標準融入開發周期并加以實施。這樣一來,在運行時監測的幫助下,安全團隊就能夠在一個地方獲得對所有已知漏洞的可見性。并且,左移API安全測試還可以削減成本并加速修復。
此外,如果能夠自動化測試工作流,企業就內置了對重測試的支持:測試、修復、重測、部署的循環,保持流水線平穩運行,避免出現瓶頸。
采用業務邏輯方法執行API安全測試可以提高全生命周期API安全計劃的成熟度,改善企業安全狀態。
圖4:生產到設計
然而,這種現代方法需要能自學習的工具,通過攝入運行時數據逐漸改進性能,從而深入了解應用的結構和邏輯。
這將涉及創建能夠隨運行過程不斷學習的自適應測試引擎,積累關于API行為的深入認知,以便智能逆向工程其隱藏的內部工作機制。借助運行時數據和業務邏輯信息,企業能夠享受黑盒和白盒兩種方法帶來的好處,實現可見性增強和自動化控制。
總結
除了逐漸普及,API也給Web應用帶來了更多漏洞。許多企業甚至不清楚自身API應用范圍和漏洞情況。黑客可以很容易地通過可用API探測已知和未知漏洞。
然而,企業常常忽視了API安全測試,像對待Web應用一樣處理API安全測試。大多數測試方法,比如黑盒測試和白盒測試,并不適合API測試。
自然語言處理和人工智能(AI)的結合提供了可行“灰盒”選項,能夠自動化、擴展和簡化API安全測試的復雜過程。