API安全淺析
一、什么是API
API通過定義一組函數、協議、數據結構,明確應用程序中各個組件之間通信與數據交互方式。將Web應用、操作系統、數據庫以及計算機軟硬件的能力以接口的形式提供給外部使用。
- API技術解決的是程序之間的連接問題。
- API提供能力,調用方不用訪問源碼或理解程序內部工作機制。

二、API安全形勢
1、API發展趨勢
目前隨著互聯網、物聯網等快速發展,越來越多的開發者會使用API接口為客戶提供各種微服務并通過云原生應用快速部署容器進行快速迭代開發。因此無論是在互聯網訪問網絡資源或者通過物聯網進行系統應用的控制都會利用API接口。
為了讓客戶獲得更好的服務體驗,銀行機構正在采用、甚至遷移到API式的敏捷模型中,以實現高效、強適應性的金融安全架構。
醫療保健行業的從業人員通過各種可用的API,向患者和客戶提供集成化的醫療保健服務,并能提高自身產品的互操作性。
零售商正在使用API為其客戶提供更加智能化的電子商務平臺,例如:多元化的移動支付應用等。
2、API安全面臨的挑戰

據統計,API請求已占所有應用請求的83%,預計2024年API請求命中數將達到42萬億次。與此同時,針對API的攻擊成為了惡意攻擊者的首選,相對于傳統WEB窗體,API的性能更高、攻擊的成本更低,有專家預測,到2024年API濫用將使得針對API的攻擊成為最常見的攻擊方式。之所以API安全問題如此嚴重,主要是因為API安全面臨著如下挑戰:
(1)應用和邏輯遷移上云,暴露更多攻擊面
隨著云計算技術的廣泛應用,越來越多的Saas被遷移上云,在為更多的用戶提供服務的同時,也將API暴露到云中,相對于傳統數據中心的單點調用,東西向和南北向都可能成為API的攻擊面。
(2)創新強調速度和靈活,忽略構建API安全
敏捷開發模式是當今主流開發模式,敏捷開發強調個體和互動、工作的軟件、客戶合作、響應變化,雖然提升了創新速度和靈活性,但是對于如何構建API安全性卻缺少合適的方法,導致在軟件構建過程中難以顧及API安全。
(3)API接口對外不可見,引發多種攻擊隱患
由于API是由程序員書寫,除了編寫代碼的程序員,很少有人意識到這些API的存在,缺少維護的API經常容易被忽略,然而惡意攻擊者卻可以利用網絡流量、逆向代碼、安全漏洞等各種手段找到不設防API并實施攻擊。
(4)組織經常低估API風險,造成安全措施遺漏
人們通常會假設程序會按照想象中的過程運行,從而導致API被攻擊的可能性以及影響被嚴重低估,因此不去采取充分的防護措施。此外,第三方合作伙伴系統的API,也容易被組織所忽視。
3、API安全面臨的威脅
據權威報告顯示,以API為目標的攻擊是以HTML應用為目標攻擊的三倍,部分攻擊造成了嚴重的業務中斷,攻擊者利用弱身份認證、授權和注入漏洞實施攻擊的方法仍然普遍,而利用Json、XML等基于解析器的攻擊以及第三方API集成帶來的風險正在增加,經綜合分析,API的攻擊類型包括:
(1)憑證類攻擊
據統計,2018-2020期間,有1000億次的憑證盜用攻擊,而且每年攻擊的復雜度和數量都在持續增加,憑證盜用攻擊的代價高達2280萬美元,平均每30秒就有一位憑證盜用的受害者。攻擊者通過購買、釣魚、漏洞利用等方式獲得API登錄憑證,繼而利用僵尸網絡接入客戶站 點API,盜取客戶數據或者個人信息。
(2)可用性攻擊
當API端點對外暴露,攻擊者就可以利用DDOS或者攻擊API解析器,造成API無法提供相應服務。對于DDOS,除了部署常規防DDOS設備以外,還要關注合作伙伴API的DDOS攻擊承受能力,如果僅僅依靠合作伙伴的安全措施,原始API就得不到保護。而針對API解析器的攻擊則更具有針對性,可能造成哈希值沖突或者反序列化異常,進而拒絕API請求。
(3)漏洞利用攻擊
漏洞利用是所有應用程序面臨的安全威脅,API也不能例外。通過在API的函數參數、Json、XML等有效負載嵌入惡意代碼,實施目錄轉換、命令注入、SQL注入、XSS、繞過身份認證和授權等常見的API攻擊手段,達到敏感數據竊取或破壞系統的目的。更進一步,API攻擊已經工具化,攻擊者能夠利用工具搜集用于攻擊的域名和API列表,再使用其他工具查找或刪除敏感數據。
4、API相關的常見數據安全問題
(1)數據濫用風險
例如第三方超出業務需要,私自大量緩存、調用接口數據;接口返回超出最小必要原則的敏感個人信息字段;高敏感級別字段(例如《個人金融信息保護技術規范》定義的C3級別個人金融信息)未按規定脫敏或脫敏策略不一致。
(2)數據泄露風險
例如數據接口權限漏洞被外部攻擊者利用竊取敏感數據;或者內部員工利用遺留后門接口獲取敏感數據。
(3)隱私合規風險
例如隱私數據采集未經用戶授權;隱私數據接口違規開放給第三方等。
API安全一旦出現問題,可能導致的是百萬、千萬、甚至億級的個人信息泄露,使企業面臨違反《網絡安全法》第四十二條“網絡運營者應當采取技術措施和其他必要措施,確保其收集的個人信息安全,防止信息泄露、毀損、丟失”的合規風險。由此可以看出,API安全應當作為一項重要抓手,用于管控組織級別的數據安全與個人信息安全風險。
三、OWASP API Top 10
- A1:失效的對象級授權

預防措施:
(1)基于用戶策略和繼承關系來實現適當的授權機制
(2)使用隨機且不易推測的IDs (UUIDs)
- A2:失效的用戶身份認證

預防措施:
(1)憑據重置、忘記密碼端應被視作認證端點,在暴力破解、請求頻率限制和鎖定保護上同等對待
(2)使用標準認證、令牌生成、密碼存儲、多因素認證
- A3:過度的數據暴露

預防措施:
(1)不要依賴客戶端來過濾敏感數據
(2)檢查API的響應,確認其中僅包含合法數據
- A4:資源缺失&速率限制

預防措施:
(1) 對用戶調用API的頻率執行明確的時間窗口限制
(2)在突破限制時通知客戶,并提供限制數量及限制重置的時間
- A5:失效的功能級別授權

預防措施:
(1) 強制執行機制應拒絕所有訪問,要求顯式授予特定角色才能訪問每個功能
(2)確保常規控制器內的管理功能根據用戶的組和角色實施授權檢查
- A6:批量分配

預防措施:
(1)不要自動綁定輸入數據和內置對象
(2) 在設計時準確定義您將在請求中接受的模式、類型和模型,并在運行時強制執行
- A7:安全配置錯誤

預防措施:
(1)防止異常追蹤和其他有價值的信息被傳回攻擊者,定義和強制使用統一的API響應格式,包括錯誤信息
(2) 在所有環境中持續評估配置和設置有效性的自動化過程
- A8:注入

預防措施:
(1)將數據與命令和查詢分開
(2) 嚴格定義所有輸入數據:模式、類型、字符串模式,并在運行時強制執行
- A9:資產管理不當

預防措施:
(1)對集成服務進行清點并記錄重要信息,如它們在系統中的角色、交換了什么數據(數據流)及其敏感性
(2) 采用開放標準自動生成文檔,包括在CI/CD管道中構建的文檔
- A10:日志和監控不足

預防措施:
(1)所有失敗的安全策略,如日志中失敗登錄嘗試,拒絕訪問,輸入驗證失敗,都要接受檢查
(2) 配置一個監控系統,以持續監視基礎設施、網絡和API功能
四、API安全治理
1、API風險調查
- 溯源定位
通過將告警的源地址與資產數據進行匹配,以及提取APIurl中的賬號等參數信息,來識別出告警主體的更多信息。如果是來自內部的操作,則可以直接定位到當事的操作員工,以及所在團隊或者營業部。
- 告警聚集性挖掘
通常來說,我們需要特別關注聚集性的告警。在溯源定位完成之后,我們利用聚類分析,將告警從多個維度進行聚類,挖掘告警的聚集性和作案的團伙性。如是否存在營業部聚集、是否存在地理位置聚集、是否存在對某一類數據的聚集等,并將其呈現在面板上。
- 情報印證
API告警的背后,是疑似API被濫用和數據被泄露。我們將告警中涉及的數據與外部泄露情報進行自動比對,如果比對印證成功,則API被濫用和數據被泄露的實錘加大,同時也省去了大量人工調查環節的證據搜索時間。
- 行為鏈路梳理
一個真實的風險事件,可能會伴隨著一系列的異常行為。如通過頻繁調用API接口獲取了大量個人隱私數據,后續可能會出現數據外發的DLP事件,或者之前已申請離職,意圖將敏感數據帶走等。因此對于一條告警,我們會搜索告警時點前后的重要行為,并將其展現到調查面板中。
2、API管理
首先,對全部API進行全面文檔化管理,為了規避API變動頻繁的困難,推薦使用開源自動化管理工具,在API變更時添加描述性說明,自動生成最新API文檔,同時自動檢查流量以發現和分析未知或更改的API,以便快速響應基于API的攻擊。
其次,梳理API之間的調用鏈,梳理API之間的調用關系,找出僵尸API,防止安全防護措施遺漏,該步驟也可通過工具完成。
最后,對API實施契約測試和白盒測試,減少漏洞存在的可能性。
3、API安全防護措施
- 使用令牌技術
通過令牌建立API接口的可信身份,然后使用屬于可信身份的令牌才能夠實現對服務和數據資源等進行訪問以及控制。
- 使用加密和簽名技術
例如使用TLS等加密方式對數據進行加密,保證數據在傳輸過程中被加密并防止被篡改。使用簽名技術可以保證只有擁有數據訪問權限的用戶才能夠對數據進行解密并對數據進行修改。
- 主動識別API中的漏洞
可以使用檢測嗅探器對API安全進行檢測并檢查數據被泄漏的情況,確保在網絡環境下API服務的安全性,實時追蹤API接口是否被非法黑客進行攻擊以及漏洞被利用的情況。
- 使用API安全網關
目前API安全網關已經被作為防護API安全的一個關鍵技術被使用,由于API安全網關可以用來控制和管理API接口的使用情況,同時也可以對使用API接口和服務的用戶進行身份認證,因此在保護數據和API安全性上具備一定優勢。
- 對API接口的訪問頻率進行限制
由于業務的不同,API接口被調用的情況也會不同,通過分析和監測API接口被訪問和調用的頻率來確保API接口未被攻擊者攻擊以及數據被泄漏。一般來說被攻擊的API接口往往會出現被調用次數增多或者頻率與正常情況出現較大差異,因此通過限制API接口被訪問的情況,進行限流等方式可以防護API出現被攻擊者攻擊甚至是拒絕服務的情況。
4、API安全檢視
從發現、保護和分析三個維度,制定API安全檢視列表,持續對API進行安全檢視,以此發現隱患,制定策略、實施防護。在發現維度檢視API開發、測試和部署的安全措施是否全面。在保護維度,檢視用戶標識、DDOS攻擊防護措施、數據校驗黑白名單是否完整。在分析維度,檢視API風險評估、API審計日志是否充分。

5、展望
隨著信息技術的快速發展,API安全防護也在持續演進過程中,最初API安全防護解決無效輸入、DOS攻擊、認證繞過等攻擊,現今的防護重點則落地在緩沖區溢出、XSS、SQL注入等漏洞防護,安全防護的措施也從單個漏洞防護升級為網關、應用系統防護。未來,多向量、自動化工具、武器化人工智能類的攻擊將成為API攻擊的主流,相應的,安全防護措施也需加強系統化、自動化、深度學習、智能化能力,向以體系對抗體系,以智能防護智能的方向演進。