OWASP API Top 10規(guī)則解讀課件_第1頁
OWASP API Top 10規(guī)則解讀課件_第2頁
OWASP API Top 10規(guī)則解讀課件_第3頁
OWASP API Top 10規(guī)則解讀課件_第4頁
OWASP API Top 10規(guī)則解讀課件_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

OWASP

API

Top10解讀銀行智能城市零售運(yùn)輸API自動駕駛汽車業(yè)務(wù)核心數(shù)據(jù)PII數(shù)據(jù)物聯(lián)網(wǎng)OWASP風(fēng)險評級方法OWASP

API

To

p

10

2019API1:2019-API2:2019-失效的對象級授

效的用戶身份失API3:2019-過度的數(shù)據(jù)暴露權(quán)認(rèn)證API5:2019–失API4:2019-資API6:2019-批量分配&限制源缺失

速率

效的功能級別授權(quán)API7:2019-全配置錯誤API8:2019–入API9:2019-資產(chǎn)管理不當(dāng)安注API10:2019-日志和監(jiān)控不足API

1:失效的對象級授權(quán)攻擊案例場景在線電子商務(wù)平臺監(jiān)控可穿戴設(shè)備?HTTPPATC

H請求中的自定義請求頭部字段

X-User-Id:54796?

獲取商戶的利潤表:/shops/{shopName}/revenue_data.json?

獲取商戶列表:/shops?

基于用戶策略和繼承關(guān)系來實(shí)現(xiàn)適當(dāng)?shù)氖跈?quán)機(jī)制;?

在接收用戶輸入并訪問數(shù)據(jù)庫的所有函數(shù)中,都通過一種授權(quán)機(jī)制來檢查該登錄用戶是否有權(quán)在該記錄上執(zhí)行其所請求的操作;?

建議使用不可預(yù)測的隨機(jī)GUID作為信息記錄的ID;?

通過測試來評估授權(quán)機(jī)制。不要部署帶有脆弱點(diǎn)的變更,這將破壞測試。API安全管理論壇API

2:失效的用戶身份認(rèn)證攻擊案例場景憑據(jù)填充SMS驗證碼?

密碼驗證器/api/system/verification-codes發(fā)起一個POST請求并在請求體中提供用戶名來啟動重置密碼工作流??

/api/system/verification-codes/{smsToken}發(fā)送請求

來嘗試所有可能的驗證碼組合?

使用OWASP

AuthenticationCheatSheet;如有可能,盡量使用多因素認(rèn)證;?

確保您知曉所有用于API認(rèn)證的工作流(移動應(yīng)用、Web應(yīng)用、執(zhí)行一鍵認(rèn)證的DeepLinks等);?

通過測試來評估授權(quán)機(jī)制。不要部署帶有脆弱點(diǎn)的變更,這將破壞測試;??

在您的認(rèn)證端上使用反暴力破解機(jī)制來緩解憑據(jù)填充、字典攻擊和暴力破解風(fēng)險。此機(jī)制應(yīng)該比您一般API具有更嚴(yán)格的請求頻率限制;?

詢問您的工程師看是否存在您遺漏了的工作流;?

閱讀您所使用的認(rèn)證機(jī)制文檔,確保您理解它是如何使用的。OAuth是一種協(xié)議,它不是一種認(rèn)證,也不是APIKey;?

實(shí)現(xiàn)賬號鎖定、驗證碼機(jī)制來防止對特定用戶的暴力破解實(shí)現(xiàn)弱密碼檢查;?APIKey不用于用戶認(rèn)證,而用于客戶端應(yīng)用程序或項目認(rèn)證。?

不要在認(rèn)證、憑據(jù)生成、密碼存儲方面自創(chuàng)算法,使用標(biāo)準(zhǔn)的算法;?

憑據(jù)重置、忘記密碼端應(yīng)被視作認(rèn)證端點(diǎn),在暴力破解、請求頻率限制和鎖定保護(hù)上同等對待;API安全管理論壇API

3:過度的數(shù)據(jù)暴露攻擊案例場景嗅探移動應(yīng)用流量視頻監(jiān)控系統(tǒng)?

/api/articles/{articleId}/comments/{commentId}在article

視圖中展示comments??API會觸發(fā)調(diào)用/api/sites/111/

cameras來接收可用攝像頭傳輸?shù)臄?shù)據(jù),并顯示在顯示屏上?

使用通用的toJSON()方法,將對象序列化API返回了站點(diǎn)內(nèi)所有攝像頭的完整列表?

不要依賴客戶端來過濾敏感數(shù)據(jù);?

檢查API的響應(yīng),確認(rèn)其中僅包含合法數(shù)據(jù);?

在開放一個新的API端點(diǎn)前,后端工程師應(yīng)當(dāng)反復(fù)確認(rèn)“誰才是真正的數(shù)據(jù)使用者?”?

避免使用to_json()和to_string()之類的通用方法,而是選用您真正想要返回的特定屬性;?

將您的應(yīng)用存儲和工作所使用的敏感信息及個人識別信息(PII)進(jìn)行分類,并檢查所有返回上述信息的API調(diào)用,確認(rèn)這些響應(yīng)是否構(gòu)成安全問題;?

執(zhí)行schema-based響應(yīng)驗證機(jī)制作為額外的安全措施。這種機(jī)制定義并強(qiáng)制檢查所有方法返回的數(shù)據(jù),包括錯誤信息。API安全管理論壇API

4:資源缺失

&

速率限制攻擊案例場景上傳圖片檢索用戶列表使用/api/users?page=1&size=100查詢從服務(wù)器中檢索用戶列表?

向/api/v1/images發(fā)送POST請求來上

傳大尺寸的圖像?

Docker可以輕松地限制內(nèi)存、CPU、重啟次數(shù)、文件描述符和進(jìn)程;?

對用戶調(diào)用API的頻率執(zhí)行明確的時間窗口限制;?

在突破限制時通知客戶,并提供限制數(shù)量及限制重置的時間;?

在服務(wù)器端為字符串查詢和主體參數(shù)請求提供適當(dāng)?shù)尿炞C尤其是那些在響應(yīng)中控制返回記錄數(shù)量的驗證;?

定義并強(qiáng)制驗證所有傳入?yún)?shù)和有效負(fù)荷的最大數(shù)據(jù)量,例如字符串的最大長度和數(shù)組中元素的最大數(shù)量。API

5:失效的功能級別授權(quán)攻擊案例場景創(chuàng)建管理員用戶獲取所有用戶?

GET/api/invites/

{invite_guid}的API調(diào)

用?

POST

/api/invites/new?GET/api/admin

/v1/users/all{“email”:”hugo@”,”role”:”admin”}?

強(qiáng)制執(zhí)行機(jī)制應(yīng)拒絕所有訪問,要求顯式授予特定角色才能訪問每個功能;?

在考慮應(yīng)用程序和組層次結(jié)構(gòu)的業(yè)務(wù)邏輯的同時,針對功能級授權(quán)缺陷檢查API端點(diǎn);?

確保所有管理控制器都從管理抽象控制器繼承,該抽象控制器根據(jù)用戶的組/角色實(shí)施授權(quán)檢查;?

確保常規(guī)控制器內(nèi)的管理功能根據(jù)用戶的組和角色實(shí)施授權(quán)檢查。API

6:批量分配攻擊案例場景共享乘車應(yīng)用程序視頻共享?

請求GET/api/v1/users/me包含一個附加credit_balance屬性:?GET/api/v1/videos/{videoid}/metadata返回具有視頻屬性的JSON對象。屬性之一是”mp4_conversion_

Params”:

”-v

codech264”,表示應(yīng)用程序使用shell命令來轉(zhuǎn)換視頻{"user_name":"inons","age":24,"credit_balance":10}.?

重播第一個請求:{"user_name":"attacker","age":60,"credit_balance":99999}?

mp4_conversion_params”:”-v

codech264&&format

C:/”?

如果可能,請避免使用將客戶輸入自動綁定到代碼變量或內(nèi)部對象中的函數(shù);?

僅將客戶端可更新的屬性列入白名單;?

使用內(nèi)置功能將客戶端不應(yīng)訪問的屬性列入黑名單;?

如果可能,為輸入數(shù)據(jù)有效負(fù)載準(zhǔn)確、明顯的定義和實(shí)施schema格式。API

7:安全配置錯誤攻擊案例場景遺留文件默認(rèn)配置?

攻擊者在服務(wù)器的根目錄下找?

主機(jī)

正在運(yùn)行主流的數(shù)據(jù)庫管理系統(tǒng),該系統(tǒng)正在偵聽默認(rèn)端

口。主機(jī)使用的是默認(rèn)配置,默認(rèn)情況下禁用了身份驗證,攻擊者可以訪問包含PII、個人首選項和身份驗證數(shù)據(jù)在內(nèi)

的數(shù)百萬條記錄到.bash_history文件,

該文件包含DevOps團(tuán)隊用于訪問API的命令:$curl-XGET'https://api.server/endpoint/'

-H'authorization:

BasicZm9vOmJhcg=='?

確定API只能被特定HTTP方法訪問,其他HTTP方法訪問都應(yīng)該被禁止(如,HEAD方法);?

用于所有API交互訪問靜態(tài)資源(如,圖像)的安全通信通道;?

一個可重復(fù)的加固流程,可快速、輕松地部署一個適當(dāng)封閉的環(huán)境;?

在整個API堆棧中檢查和更新配置的任務(wù)。審查應(yīng)包括:文件編排、API組件和云服務(wù)(如,S3bucket權(quán)限);?對于主要是瀏覽器客戶端(如,WebApp前端)訪問的API應(yīng)該實(shí)現(xiàn)正確的CORS(跨域資源共享)策略。?

用于所有API交互訪問靜態(tài)資源(如,圖像)的安全通信通道;?

在所有環(huán)境中持續(xù)評估配置和設(shè)置有效性的自動化過程;?

為了防止異常追蹤和其他有價值的信息被傳回攻擊者,如果可以,定義和強(qiáng)制使用統(tǒng)一的API響應(yīng)格式,包括錯誤信息;API

8:注入攻擊案例場景物聯(lián)網(wǎng)固件刪除記錄?

家長控制設(shè)備的固件提供了一個接口/api/CONFIG

/restore,期望將appId作為multipart參數(shù)進(jìn)行傳送?DELETE/api/bookings?bookingId=678?

攻擊者試圖刪除其他用戶的預(yù)定操作。DELETE/api/bookings?bookingId[$ne]=678?

攻擊者使用以下命令就可關(guān)閉任何使用帶有該缺陷固件的設(shè)備:

$curl-k"https://${deviceIP}:4567/api/CONFIG/restore"

-F'appid=$(/etc/pod/power_down.sh)'?

防止注入需要將數(shù)據(jù)與命令和查詢分開;?

使用統(tǒng)一、可信并且活躍的庫執(zhí)行數(shù)據(jù)驗證;?

對客戶端提供的數(shù)據(jù)、或其他來自集成系統(tǒng)的數(shù)據(jù)進(jìn)行驗證、過濾和清理;應(yīng)使用目標(biāo)解釋器的特定語法對特殊字符進(jìn)行轉(zhuǎn)義;?

首選提供參數(shù)化查詢的安全API;?

總是限制返回記錄的數(shù)量,以防止注入引起大量數(shù)據(jù)泄漏;?

使用足夠多的過濾器驗證輸入的數(shù)據(jù),保證每一個輸入?yún)?shù)只允許有效的值通過;?

為所有字符串參數(shù)定義數(shù)據(jù)類型和嚴(yán)格模式。API

9:資產(chǎn)管理不當(dāng)攻擊案例場景本地搜索社交網(wǎng)絡(luò)重置密碼?

一個沒有保護(hù)且運(yùn)行中的舊API版本(/v1)并且其能訪問用戶數(shù)據(jù)庫?

一個社交網(wǎng)絡(luò)實(shí)現(xiàn)了一種速率限制機(jī)制,阻止攻

擊者使用暴力猜測重置密碼令牌。?

beta

API主機(jī)(),其中包括重置密碼機(jī)制,但速率限制機(jī)制還沒有到位?

為所有公開版本的API使用外部保護(hù)措施,如API安全防?

列出所有API主機(jī)并記錄所有重要信息,重點(diǎn)放在API的環(huán)境上(如,生產(chǎn)、準(zhǔn)備、測試、開發(fā)環(huán)境),誰應(yīng)該對主機(jī)具有網(wǎng)絡(luò)訪問權(quán)(如,公共、內(nèi)部、合作伙伴)和API版本;火墻,不只是針對當(dāng)前的產(chǎn)品版本;?避免在非生產(chǎn)API部署中使用生產(chǎn)數(shù)據(jù)。如果這是不可避免的,這些端點(diǎn)應(yīng)該得到與生產(chǎn)端點(diǎn)相同的安全處理;?

當(dāng)較新的API版本包含安全改進(jìn)時,實(shí)施風(fēng)險分析以確定舊版本得到所需的風(fēng)險緩解措施:如,是否可能在不破壞API兼容性的情況下支持這些改進(jìn),或者需要迅速刪除舊版本并強(qiáng)制所有客戶端遷移到最新版本。?

對集成服務(wù)進(jìn)行清點(diǎn)并記錄重要信息,如它們在系統(tǒng)中的角色、交換了什么數(shù)據(jù)(數(shù)據(jù)流)及其敏感性;?

記錄API的所有信息,如,身份驗證、錯誤、重定向、速率限制、跨域資源共享(CORS)策略和端點(diǎn),包括它們的參數(shù)、請求和響應(yīng);?

采用開放標(biāo)準(zhǔn)自動生成文檔,包括在CI/CD管道中構(gòu)建的文檔;?

向授權(quán)使用API的人提供API文檔;API

10:日志和監(jiān)控不足攻擊案例場景API訪問密鑰泄漏視頻共享平臺?

管理API的訪問密鑰泄漏到公共存儲庫中。存儲庫

所有者收到了關(guān)于潛在泄漏的電子郵件通知,但在事件發(fā)

生后花費(fèi)了48個小時采取行動,那么訪問密鑰暴露就可能

導(dǎo)致敏感數(shù)據(jù)被訪問。由于日志記錄不足,公司無法評估

惡意訪問者訪問了哪些數(shù)據(jù)。?

一個視頻共享平臺遭到了“大規(guī)?!钡膽{據(jù)填充

攻擊。盡管登錄失敗,但在攻擊期間沒有觸發(fā)警報。作為

對用戶投訴的回應(yīng),我們分析了API日志并檢測到了攻擊。

該公司不得不發(fā)布公告,要求用戶重置密碼,并向監(jiān)管部

門報告此事。?

記錄所有失敗的身份驗證嘗試、拒絕訪問和輸入驗證錯誤;?

日志應(yīng)該使用適合日志管理解決方案的格式來編寫,并且應(yīng)該包含足夠詳細(xì)的信息來識別惡意的行動者;?

日志應(yīng)作為敏感數(shù)據(jù)處理,其完整性應(yīng)在空閑和傳輸時得到保證;?

配置一個監(jiān)控系統(tǒng),以持續(xù)監(jiān)視基礎(chǔ)設(shè)施、網(wǎng)絡(luò)和API功能;?

使用安全信息和事件管理系統(tǒng)(SIEM)來整合和管理來自API和主機(jī)的所有組件的日志;?

配置自定義儀表板和警報,能夠更早地檢測和響應(yīng)可疑活動。OWASP

API

To

p

10與OWASP

To

p

10A1失效的訪問控制API1失效的對象級別授權(quán)API2失效的用戶身份認(rèn)證A2加密失敗A3注入API3過度的數(shù)據(jù)暴露API4資源缺乏與速率限制

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論