AWS二個月前修補了AppSync一個能使攻擊者冒充其他AWS租戶身份,并使用或入侵他人AWS資源的“混淆代理人”漏洞。
這項漏洞是由安全廠商Datadog 9月發(fā)現(xiàn)并通報,位于AWS的AppSync服務(wù)中。
AppSync為常用的開發(fā)工具,提供GraphQL及Pub/Sub API,可將多種來源,包括Amazon DynamoDB、RDS、AWS Lambda、HTTP API的資料集成。除了默認的資料源和解析器(resolver)之外,AppSync也讓開發(fā)人員得以直接調(diào)用AWS API,以便和沒有預(yù)建解析器的AWS服務(wù)集成,例如開發(fā)人員想創(chuàng)建GraphQL API和Amazon S3互動,可以直接在其生產(chǎn)環(huán)境設(shè)置AppSync。以S3為例,開發(fā)人員欲創(chuàng)建GraphQL API時,需先創(chuàng)建具S3權(quán)限的角色,等GraphQL API被調(diào)用后,就由AppSync扮演這角色而執(zhí)行AWS API調(diào)用并解釋結(jié)果。
但從安全角度上,這就引發(fā)了“混淆代理人”問題(confused deputy),即一個權(quán)限較低的實體(如攻擊者)說服權(quán)限高的實體(如AppSync)代它執(zhí)行行為。
原本AWS可驗證Amazon Resource Name(ARN)來防止AppSync發(fā)生被濫用的情形,ARN是AWS資源的獨立識別代碼。在創(chuàng)建資料源時,GraphQL API會檢查傳入調(diào)用的ARN決定是不是同一個AWS賬號。若判定不同賬號,該API就會拋出錯誤代碼。而ARN是包含在GraphQL API的serviceRoleArn參數(shù)中。
研究人員發(fā)現(xiàn)的漏洞在于該API的“serviceRoleArn”參數(shù)若以不同大小寫的組合,例如以“servicerolearn”提供,就能繞過驗證。這使得不同賬號的人得以創(chuàng)建連到其他AWS賬號的AppSync資料源,攻擊者因而可借此訪問任何信任AWS AppSync的角色的資源。
研究人員指出,只要攻擊者能以釣魚信件騙取目標公司的AWS帳密,借此漏洞創(chuàng)建AppSync API及資料源,只要指向目標AWS賬號下的某一角色即可。最終攻擊者即可取得目標公司資源的控制權(quán)。
研究人員于今年9月1日通報AWS后,后者很快證實并在5天后修補了AppSync服務(wù)的漏洞。