
制定藍圖:什么樣的API策略能夠確保未來的成功?
讓我們討論一下 API 管道的各個階段。
API 誕生于開發(fā)中,理想情況下,首先要制定一個 OpenAPI 規(guī)范(OAS spec)來形式化 API,指定參數(shù),確定可能的返回參數(shù)和代碼等。
許多開發(fā)人員使用集成開發(fā)環(huán)境 (IDE) 來組織環(huán)境,例如VSCode(開源)、PyCharm(社區(qū)和付費層)或GoLand(付費層)。
根據(jù) IDE,可能會有擴展程序幫助您編寫 OAS 規(guī)范。例如,VSCode 有多個 OAS 規(guī)范 linter 擴展,可以靜態(tài)標記規(guī)范問題,例如Spectral(開源)和Postman (免費和付費)。Spectral 擴展甚至有一個OWASP Top 10 API 安全風險規(guī)則集。Panoptica?(免費試用版和付費版)可以從命令行運行不同的OAS 規(guī)范 linter 。
AI 副駕駛現(xiàn)在非常流行,可用于開發(fā) API 客戶端/服務器代碼。流行的 AI 副駕駛包括GitHub Copilot(付費層)等。
請注意,并非所有 API 安全問題都可以靜態(tài)檢測。許多問題只能在動態(tài)環(huán)境中檢測到,其中 API 調(diào)用實際上正在被執(zhí)行。
API 代碼完成后,就可以進行單元測試了。
開發(fā)完成后,API 代碼將接受單元測試,其中會進行“模擬”API 調(diào)用以驗證 API 是否正常運行。單元測試環(huán)境仍然是靜態(tài)的,因為盡管可以調(diào)用客戶端和服務器函數(shù),但應用程序并未作為一個整體運行。
有許多工具可以自動生成模擬 API 代碼并運行模擬 API 服務器,包括WireMock(開源)、Mockoon(開源)、Microcks(開源)、Postman(免費和付費)、RestAssured(開源)和SoapUI(開源)。
一旦編寫并通過單元測試,API 代碼就可以用于 CI/CD。
在 CI/CD 中,代碼提交進行代碼審查,構(gòu)建鏡像,并自動運行一些門控測試。門控測試包括靜態(tài)測試(例如單元測試和 OAS spec linters)和動態(tài)測試(例如端到端功能測試),其中實際安裝了代碼,并且可以以自動化方式測試基本功能。
如果 CI/CD 測試全部通過,則代碼可以合并到代碼存儲庫并在暫存區(qū)進行測試。
暫存環(huán)境與實際生產(chǎn)環(huán)境類似,但獨立用于內(nèi)部測試。在暫存環(huán)境中,應用程序已安裝,質(zhì)量保證團隊可以驗證其功能。
高可用性和性能測試也可以在階段運行。高可用性測試涉及驗證應用程序中是否存在單點故障。性能測試驗證您的應用程序是否能夠大規(guī)模執(zhí)行,其中包括大量 API 流量。
API 性能和負載測試的工具包括Locust(開源)、SoapUI 和 Postman。
另一種在準備階段很有用的工具是模糊測試器。模糊測試器將壞數(shù)據(jù)傳遞到應用程序中的 API 端點,并試圖對應用程序產(chǎn)生負面影響(例如使其停止響應、崩潰、泄露數(shù)據(jù)等)。模糊測試工具的示例包括RESTler(開源)和 Panoptica。
應用程序首次部署到生產(chǎn)環(huán)境時,稱為“Greenfield Deployment”。在綠地部署中,由于沒有現(xiàn)有工件,因此不存在任何版本控制或升級問題。
在生產(chǎn)環(huán)境中,您可以動態(tài)掃描實時 API 流量以查找安全風險,從而保護您的應用程序。Panoptica?CNAPP 平臺擁有一整套 API 安全功能,我們將在下面討論。
Brownfield Deployment是指在現(xiàn)有生產(chǎn)環(huán)境中升級應用程序。
對于Brownfield ,API 向后兼容性和版本控制等因素開始發(fā)揮作用。例如,在應用程序升級為新版本后,API 客戶端可以繼續(xù)使用以前的 OAS 規(guī)范版本。必須支持多個 API 版本。
金絲雀部署是一種Brownfield ,其中應用程序的不同版本同時運行,以降低新版本的風險。金絲雀部署僅管理總 API 流量的子集。在這里,API 向后兼容性和版本控制也是重要的考慮因素。
現(xiàn)在我們已經(jīng)討論了 OWASP 十大 API 安全風險和完整的 API 管道,讓我們來看看一些常見的 API 安全問題以及如何在整個管道中預防它們。
根據(jù) OWASP 的數(shù)據(jù),BOLA 是 2023 年最普遍的 API 安全問題。它們包含在問題 API1:2023(損壞的對象級別授權(quán))和 API3:2023(損壞的對象屬性級別授權(quán))中。
如前所述,在 BOLA 攻擊中,最終用戶能夠訪問他們無權(quán)訪問的數(shù)據(jù),通常是因為元數(shù)據(jù)在應用程序的 API 響應中泄露。
由于數(shù)據(jù)(尤其是 PII)是泄露的主要目標,任何未經(jīng)授權(quán)的訪問都會是一個巨大的安全問題。
如何防止 BOLA 穿過 API 管道?
當最終用戶調(diào)用應用程序或應用程序微服務之間未經(jīng)適當授權(quán)訪問應用程序功能時,就會發(fā)生 BFLA。BOLA(上文)是關于訪問數(shù)據(jù)的,BFLA 是關于訪問功能的。未經(jīng)授權(quán)訪問功能最終會導致數(shù)據(jù)泄露。BFLA 是 OWASP 問題 API5:2023(功能級別授權(quán)損壞)。
如何防止 BFLA 跨 API 管道?
應用程序的弱身份驗證更容易被攻擊者攻陷。它可以讓威脅者訪問用戶帳戶和數(shù)據(jù)。弱(或失效)身份驗證包含在 OWASP 問題 API2:2023(失效身份驗證)和 API8:2023(安全配置錯誤)中。
其中一種形式是基本身份驗證,它需要用戶名和密碼,但密碼本身很“弱”。這包括短密碼、太常見的密碼(例如可以在字典搜索中找到)或跨帳戶重復使用的密碼。
弱身份驗證也可能是由于端點安全性弱造成的,例如使用 HTTP 而不是 HTTPs。
最后,加密問題也屬于這一類。沒有加密或加密薄弱的端點可能會為您的應用程序打開攻擊面。如果沒有任何加密,所有 API 流量都是“明文的”,這意味著它可以被竊聽和輕松讀取。弱加密可能涉及較短的加密密鑰,很容易被破解。
如何防止 API 管道中出現(xiàn)弱身份驗證?
OWASP 問題 API9:2023(庫存管理不當)包括影子 API。影子 API 未記錄在 OAS 規(guī)范中。它們是一種您甚至可能不知道的安全風險。
隨著應用程序的發(fā)展,影子 API 的安全性不太可能隨之發(fā)展。它們甚至可能會被完全遺忘,從而暴露出應用程序中持續(xù)存在的安全漏洞或后門。
如何防止影子 API 跨 API 管道?
OWASP 問題 API9:2023(庫存管理不當)也包括僵尸 API。僵尸 API 是 OAS 規(guī)范中已棄用但仍在應用程序中活動的 API。它們出現(xiàn)在棕地和金絲雀生產(chǎn)環(huán)境中,這些環(huán)境中可能正在使用多個 API 版本。
與影子 API 一樣,僵尸 API 不太可能隨您的應用程序一起發(fā)展,并且從安全角度來看可能受到較少的審查,從而為您的應用程序留下后門。
如何防止僵尸 API 穿過 API 管道?
即使您的應用程序數(shù)據(jù)訪問確實安全,薄弱的第三方身份驗證仍可能使您的數(shù)據(jù)面臨威脅。第三方對您的數(shù)據(jù)的訪問包括數(shù)據(jù)庫、S3 存儲桶等。薄弱的第三方身份驗證包含在 OWASP 問題 API8:2023(安全配置錯誤)和 API10:2023(不安全的 API 使用)中。
如何防止 API 管道中出現(xiàn)弱第三方身份驗證?
無限制的資源消耗是 OWASP 問題 API4:2023。如果應用程序在短時間內(nèi)被大量 API 調(diào)用淹沒,則可能會產(chǎn)生負面影響。例如,CPU、RAM 和存儲等應用程序資源可能會被快速消耗或耗盡,從而導致運營成本增加、響應時間變慢,甚至應用程序故障和中斷。
如何防止 API 管道中不受限制的資源消耗?
OWASP 問題 API6:2023(不受限制的敏感業(yè)務流訪問)與不受限制的資源消耗有關,但它意味著自動化、壞機器人或人工智能參與了 API 濫用,從而加劇了資源消耗。
通過 URL 欺騙攻擊,無效或惡意的 URL 會被傳遞到 API 請求中,服務器會在不驗證 URL 的情況下代理該 URL。可疑 URL 可能是虛假網(wǎng)站或 Webhook。這可能會允許訪問敏感數(shù)據(jù)和 PII。OWASP 問題 API7:2023(服務器端請求偽造)涵蓋了此類漏洞。
如何防止 API 管道中的 URL 欺騙?防御此類攻擊可能很復雜。這是一個很好的入門資源。預防措施的概要如下:
數(shù)據(jù)注入可讓威脅行為者通過 API 將惡意數(shù)據(jù)、配置或程序傳遞到應用程序中。這可能會允許訪問數(shù)據(jù)(例如 BOLA)或使應用程序不穩(wěn)定。
如何防止通過 API 管道注入數(shù)據(jù)?
代碼注入是指將不良代碼添加到應用程序中。隨著 IDE 插件和 AI 副駕駛越來越多地用于生成 API 客戶端和服務器代碼,存在將“壞”代碼注入應用程序的風險。這可能會產(chǎn)生意想不到的甚至是惡意的副作用。例如,流氓(惡意)API 可能會注入您的應用程序,從而創(chuàng)建后門訪問。流氓 API 屬于 OWASP 問題 API9:2023(庫存管理不當)。
如何防止通過 API 管道注入代碼?
從 OWASP 十大 API 安全風險,到 API 管道,再到常見的 API 安全問題及其預防方法,我們涵蓋了很多內(nèi)容,并提供了很多工具建議。
祝您和您的應用程序擁有最好的 API 安全性!
文章來源:Securing APIs From Left to Right (and Everywhere in Between)
制定藍圖:什么樣的API策略能夠確保未來的成功?
詳解API:應用程序編程接口終極指南
精通API規(guī)范:構(gòu)建明確指導和預期的指南
API 優(yōu)先方法如何徹底改變軟件開發(fā)
掌握良好的 API 設計原則:是什么、為什么和怎么辦
API-first產(chǎn)品經(jīng)理的熱門 API 工具和 API 指標
ChatGPT生態(tài)系統(tǒng)的安全漏洞導致第三方網(wǎng)站賬戶和敏感數(shù)據(jù)泄露
想要系統(tǒng)了解Agentic Workflow,看這25篇論文就夠了
生成式 AI 在電商領域究竟有多牛,這款產(chǎn)品給出了回答