早上一如往常,我會(huì)登錄各類社交網(wǎng)絡(luò)。當(dāng)我使用TweetDect登錄Twitter后,彈出了一個(gè)提示框,顯示“XSS on Tweet Deck.”這讓我感到很惱火,因?yàn)轱@然這不是正常的歡迎屏幕。
經(jīng)過(guò)一番研究,我發(fā)現(xiàn)我收聽(tīng)的其中一個(gè)帳號(hào)包含了下面的Javascript代碼。TweetDeck沒(méi)有過(guò)濾輸入導(dǎo)致代碼在瀏覽器中直接執(zhí)行了。
只要有人把下面的代碼通過(guò)Tweet發(fā)送出去,其他用戶通過(guò)TweetDeck查看就會(huì)中招。從下面的Tweet中可以看出,已經(jīng)有接近4萬(wàn)用戶中招并進(jìn)行了自動(dòng)轉(zhuǎn)發(fā),該數(shù)字還在不斷攀升。
正如你所看到的,這次XSS攻擊能夠通過(guò)data-action:retweet進(jìn)行自動(dòng)轉(zhuǎn)發(fā),從而在用戶登錄TweetDeck并查看該惡意Tweet后會(huì)引發(fā)連鎖反應(yīng)。這是一次非常嚴(yán)重的安全事件,已經(jīng)導(dǎo)致了Twitter上爆發(fā)大規(guī)模蠕蟲(chóng),TweetDeck官方已經(jīng)對(duì)此做了聲明。
這次XSS問(wèn)題產(chǎn)生的原因是當(dāng)Tweet中插入了Unicode字符“?”,Twitter會(huì)將其自動(dòng)轉(zhuǎn)換為心形的圖案,并導(dǎo)致HTML過(guò)濾器失效。