安全專家發現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