API介面安全
API介面安全
1基本概念
API(Application Programming Interface,應用程式程式設計介面)是一些預先定義的函式,目的是提供應用程式與開發人員基於某軟體或硬體得以訪問一組例程的能力,而又無需訪問原始碼,或理解內部工作機制的細節。
簡單的說,就是通過某一預先定義的渠道讀/寫資料的方式。
例如:
介面:
方式:GET
請求引數:
引數:barcode
位置:urlParam
必填:是
說明:條形碼(8-14位數字),正則:/^[0-9]{8,14}$/
返回示例:
{
"name": "石藥阿莫西林膠囊0.25g×50粒/盒",
"price": "9",
}
API介面廣泛應用於APP、客戶端、網頁、軟體等,不僅適用於獲取資料(讀),也適用於更新資料、刪除資料(寫)以及其他操作等。
API介面的資料傳輸方式不僅僅侷限於HTTP協議,也可以使用TCP、UDP協議等。
寬泛的說,API介面就是一種傳輸(操作)資料的方式。
網際網路無非就是資料的傳輸,可以說網際網路所有APP、客戶端、網頁,均應用了API介面這一技術。
2背景
由於API被程式(而不是人)使用,所以他們經常缺少UI,並且還使用複雜的協議和複雜的資料結構,這些因素使安全測試變得困難。 API的廣泛性和複雜性使得難以進行有效的自動化安全測試,這可能導致虛假的安全感。
另基於雲端計算網際網路應用正變得越來越普及,在這個過程中,有更多的站點將自身的資源開放給開發者來呼叫。對外提供的
目前API介面安全目前越來越被安全組織所重視。
2.1OWSP:top10
A10—未受到充分保護的API
現代應用程式通常涉及富客戶端的應用程式和API,如:在瀏覽器和移動應用程式中的JavaScript,它們連線到某種API(如:SOAP/XML、REST/JSON、RPC、GWT等)。這些API通常是沒有保護的, 並且包含大量漏洞。
API給web應用程式帶來更大的攻擊風險,對於攻擊者而言,API是非常有指示性的工具,能夠告訴你應用程式如何執行,它具有自我描述性,能夠為應用程式提供路線圖。
2.2 CSA:Cloud conputing top threats in 2016
Threat #3: Insecure Interfaces and APIs
“開放”是雲端計算時代的一個重要的業務變革方向。雲端計算服務商需要提供大量的網路介面和API(應用程式程式設計介面)來整合上下游、尋找業務夥伴,甚至直接提供業務。但是,開發過程中的安全測試、執行過程中的滲透測試,以及測試工具、測試方法等,在針對網路介面和API上都還不夠成熟,這些通常工作於後臺相對安全環境的功能被開放出來後,將會帶來新的安全威脅。
對於雲端計算來說,API介面的重要程度無須贅述,對於整個平臺和服務來說,一個安全的API介面就顯得尤為重要了,IT管理員們會利用API對雲服務進行配置、管理、協調和監控。API對一般雲服務的安全性和可用性來說極為重要。企業和第三方因而經常在這些介面的基礎上進行開發,並提供附加服務。
企業要明白使用、管理、協調和監控雲服務會在安全方面帶來什麼影響。安全性差的API會讓企業面臨涉及機密性、完整性、可用性和問責性的安全問題。
3如何保護API介面安全
保護API的關鍵在於確保您充分了解威脅模型以及防禦方式:
1)、平面隔離,確定介面所屬平面,且平面已清晰隔離等。
2)、安全傳輸,安全傳輸是否已預設啟用,相關演算法、套件以及證書管理符合要求等。
3)、認證,預設賬戶公開,強口令策略,防暴力破解機制以及會話管理機制等
4)、鑑權,確保所有介面都已鑑權,不存在橫向和縱向越權問題,不存在直接物件引用問題等。
5)、敏感資料和隱私保護,敏感資料均需要加密儲存及傳輸,加密演算法符合要求,檔案許可權控制得當。
6)、web安全,如果是WebApi介面,需要考慮覆蓋web安全相關內容,如檔案上傳下載、輸入編碼輸出校驗、引數服務端校驗等
7)、介面Fuzz,對於介面需要從傳輸層、應用層分別考慮協議的Fuzz,包括應用層API介面Fuzz
8)、泛洪攻擊,從傳輸層、應用層以及鑑權未鑑權訊息角度分別考慮DOS、DDOS攻擊風險
9)、安全日誌,管理操作需要記錄日誌。
10)、業務邏輯安全,除了基礎的安全之外,還要考慮介面業務邏輯上的安全設計是否合理,是否可能被繞過;重點關注登陸、忘記密碼、重置密碼等高危操作。
11)、WebServer配置安全,如果是web服務,需要考慮容器的安全配置,可使用工具掃描
12)、原始碼安全,測試過程中結合介面原始碼,覆蓋安全功能點,主要關注自研介面程式碼。
詳細參見如下:
4如何保護介面安全
在實際產品中,對外提供的不一定是API介面,有時候直接是封裝好的UI介面或者客戶端,但從本質上看,依然可以認為這是“客戶端+API介面”的組合,而且安全的重點還是在API介面上,在實際安全測試過程中也應該更多從API介面角度去考慮。常見介面如:
1)WebService(SOAP/XML)
2)RESTful
3)MML
4)ONVIF
5)各標準協議埠,如SIP、SSH等
此外,產品對外提供的介面(服務)一般都會以開放埠的方式呈現,在對一個產品安全評估時,需要覆蓋產品所有對外開放的埠。
從介面角度,建議對產品採取如下步驟評估:
1、獲取產品埠矩陣
2、篩選埠矩陣中的對外提供服務的服務端埠
3、對每一個服務端埠進行“如何保護API介面安全”章節的評估,如HTTPS(443)埠等
另外,不同的介面協議都可能有他特有的協議安全,在針對每個介面測試時需要單獨考慮。
詳細測試用例可參見產品線用例基線,可通過【API介面安全標籤】進行篩選。
5附錄:
5.1OWASP對API介面安全的理解
ESAPI是一個免費、開源的Web應用程式安全控制組件,可以幫助程式設計人員開發低風險應用程式。
ESAPI很適合一個新的開發專案的安全元件,各版本的ESAPI包含如下基本設計:
具有一個安全介面集;
對每一種安全控制有一種參考實現;
對每一種安全控制可以有你自己的實現方法。
很多著名的大公司開始將ESAPI作為自己保障Web應用程式安全的手段,ESAPIf提供的安全介面主要有以下方面:
5.2參考資料
• OWASP REST Security Cheat Sheet
• OWASP Web Service Security Cheat Sheet
• Increasing Importance of APIs in Web Development
• Tracking the Growth of the API Economy
• The API Centric Future • The Growth of the API
• What Do You Mean My Security Tools Don’t Work on APIs?!!
• State of API Security