AWS二个月前修补了AppSync一个能使攻击者冒充其他AWS租户身份,并使用或入侵他人AWS资源的“混淆代理人”漏洞。
这项漏洞是由安全厂商Datadog 9月发现并通报,位于AWS的AppSync服务中。
AppSync为常用的开发工具,提供GraphQL及Pub/Sub API,可将多种来源,包括Amazon DynamoDB、RDS、AWS Lambda、HTTP API的资料集成。除了默认的资料源和解析器(resolver)之外,AppSync也让开发人员得以直接调用AWS API,以便和没有预建解析器的AWS服务集成,例如开发人员想创建GraphQL API和Amazon S3互动,可以直接在其生产环境设置AppSync。以S3为例,开发人员欲创建GraphQL API时,需先创建具S3权限的角色,等GraphQL API被调用后,就由AppSync扮演这角色而执行AWS API调用并解释结果。
但从安全角度上,这就引发了“混淆代理人”问题(confused deputy),即一个权限较低的实体(如攻击者)说服权限高的实体(如AppSync)代它执行行为。
原本AWS可验证Amazon Resource Name(ARN)来防止AppSync发生被滥用的情形,ARN是AWS资源的独立识别代码。在创建资料源时,GraphQL API会检查传入调用的ARN决定是不是同一个AWS账号。若判定不同账号,该API就会抛出错误代码。而ARN是包含在GraphQL API的serviceRoleArn参数中。
研究人员发现的漏洞在于该API的“serviceRoleArn”参数若以不同大小写的组合,例如以“servicerolearn”提供,就能绕过验证。这使得不同账号的人得以创建连到其他AWS账号的AppSync资料源,攻击者因而可借此访问任何信任AWS AppSync的角色的资源。
研究人员指出,只要攻击者能以钓鱼信件骗取目标公司的AWS帐密,借此漏洞创建AppSync API及资料源,只要指向目标AWS账号下的某一角色即可。最终攻击者即可取得目标公司资源的控制权。
研究人员于今年9月1日通报AWS后,后者很快证实并在5天后修补了AppSync服务的漏洞。