安全专家发现Gmail动态邮件功能出现跨站攻击(cross-site scripting,XSS)漏洞,能让攻击者透过此类电子邮件发动攻击,所幸google已在上个月修补Gmail这项漏洞。
这个漏洞是由安全公司Securitum在动态邮件功能AMP4Email发现。AMP4Email是Google今年初发表了动态Gmail服务,可在电子邮件加入动态html属性,让使用者可直接在邮件中回复活动邀约、填写问卷或浏览目录。例如有人在GoogleDocs中加注评论时提及某位用户时,该用户即可收到更新的Gmail邮件看到该评论,而直接在邮件中回复。
为了防止AMP4Email遭XSS等攻击行为,Google设计了验证机制,即一组允许放入动态邮件的HTML标签和属性的白名单。不过研究人员发现AMP4Email仍然出现设计漏洞。他们发现id属性不在禁止标签名单上,而可能让黑客用以建立HTML元件,导致名为DOM Clobbering的攻击。
简单而言,这类手法会将DOM元素的id属性加为文件的属性或网页的全局变量,导致原有文件属性或全局变量被覆盖,或者劫持某些变量属性,而造成XSS攻击。
DOM Clobbering是浏览器一项旧有功能,迄今仍对许多应用程式带来麻烦。Securitum首席安全研究员MichałBentkowski举例,在建立HTML元素且希望从JAVAScript建立参照时,一般是用document.getElementById('username')或document.querySelector('#username')等函数,但是并不是唯一方法。也可以利用全局window物件属性,因此window.username在此也等于document.getElementById('username')!。这种方法即为DOM Cloberring,碰上应用程式根据某些全局变量(如if(window.isAdmin){…})进行决策时,就产生了漏洞。
在AMP4Email中,某些id属性的值是被限制的。但研究人员发现在AMP_MODE下,如果函式尝试下载JavaScript档案时会发生404错误,致使后续出现的URL出现「未定义」的属性,而负责检查未定义元素的程序码会去检查AMP_MODE.test和window.testLocation的值是否为真。在概念验证攻击中,撰写程序造成window.testLocation overload即可控制URL。
虽然在真实情境下,AMP中的属性安全政策(CSP)会阻止攻击100%执行,但是研究人员8月间在Google的抓漏大赛中发现这项漏洞并通报Google。9月获得Google回复是「很棒的bug」。Google于10月中旬回复已修补漏洞。
资料来源:iThome Security