示意圖,與新聞事件無關。

安全專家發現Gmail動態郵件功能出現跨站攻擊(cross-site scripting, XSS)漏洞,能讓攻擊者透過此類電子郵件發動攻擊,所幸Google已在上個月修補Gmail這項漏洞。

這個漏洞是由安全公司Securitum在動態郵件功能AMP4Email發現。AMP4Email是Google今年初發表了動態Gmail服務,可在電子郵件加入動態HTML內容,讓使用者可直接在郵件中回覆活動邀約、填寫問卷或瀏覽目錄。例如有人在Google Docs中加註評論時提及某位用戶時,該用戶即可收到更新的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月中旬回覆已修補漏洞。


Advertisement

更多 iThome相關內容