想象一下,你現(xiàn)在是一個(gè)坐擁千萬(wàn)訂閱者的知名 up 主。一天半夜三點(diǎn),你收到了同為 up 主好朋友的奪命連環(huán) call,說(shuō)你的頻道被「黑」了。
(資料圖)
等你鎮(zhèn)定下來(lái)、打開(kāi)瀏覽器,你發(fā)現(xiàn)你的千萬(wàn)訂閱頻道的圖標(biāo)和名字,都被黑客改成了不知道哪來(lái)的商標(biāo),而且還在進(jìn)行詐騙直播。你嘗試奪回頻道控制權(quán)卻無(wú)果,最后呆坐在電腦前束手無(wú)策,只能眼睜睜地看著你的頻道被站方直接封禁……
這就是 Linus Sebastian 在上周的遭遇。作為擁有 1500 萬(wàn)訂閱者的 Linus Tech Tips 頻道主理人和眾多有影響力頻道的創(chuàng)始人,無(wú)論哪一個(gè)頻道被入侵,都有可能會(huì)給公司、眾多觀眾乃至社會(huì)造成不可估量的影響。
夜里三點(diǎn)被迫起床和黑客斗智斗勇的 Linus 圖源:視頻截圖
那么,在 Linus 的公司里,到底發(fā)生了什么?在發(fā)生入侵后的第二天,Linus 在他被找回的頻道里向觀眾娓娓道來(lái)頻道入侵事件的詳細(xì)始末。從 Linus 的講述中可以得知,黑客通過(guò)「?jìng)蚊簟梗╥mpersonate attack,又稱(chēng)「身份偽造攻擊」)手段,通過(guò) Linus 的雇員的無(wú)心之舉,成功入侵頻道,進(jìn)而進(jìn)行加密貨幣詐騙直播。
想要講清楚這種攻擊的手法,我們可以從一個(gè)(假想的)酒吧說(shuō)起。
我們假設(shè)你經(jīng)常去一家酒吧,每天下班都過(guò)得去小酌一口。這里的酒保有臉盲癥,每次跟他聊天都得說(shuō)上很多背景信息,他才能跟上你的想法。但除此之外,這家酒吧賣(mài)的酒非常上乘,酒保也非常彬彬有禮,你也就將就在這里,作為下班后的去處。
有一天,這家酒吧突然宣布了一個(gè)優(yōu)惠活動(dòng):可以一次性購(gòu)買(mǎi)大量的酒,直接享受折扣優(yōu)惠。這時(shí)候你問(wèn)酒保:你不是臉盲嗎?我在你這里存了酒,你怎么知道誰(shuí)是誰(shuí)呢?酒保嘿嘿一笑,拿出一個(gè)本子,說(shuō),你存了酒,我會(huì)給你一張會(huì)員卡。你下次把卡拿給我,我會(huì)在本子上劃掉你的消費(fèi)。
你一想,好像也沒(méi)毛病,于是你當(dāng)即下單,酒保也給了你一張會(huì)員卡。這張會(huì)員卡上寫(xiě)著酒吧的名字和地址,以及一個(gè)會(huì)員卡號(hào)。第二天,你去酒吧里,你把會(huì)員卡掏出來(lái),酒??吹街髸?huì)心一笑,拿筆在本子上核對(duì)、涂畫(huà),然后就給你上了一杯酒。
臉盲還是別當(dāng)酒保的好——扯遠(yuǎn)了
我們把故事先暫停在這里,回到相對(duì)更技術(shù)一些的討論上來(lái)。我們使用互聯(lián)網(wǎng)瀏覽器訪問(wèn)網(wǎng)頁(yè),所使用的技術(shù)叫做「超文本傳輸協(xié)議」(HTTP)。當(dāng)初在設(shè)計(jì)這個(gè)協(xié)議的時(shí)候,設(shè)計(jì)者并沒(méi)有考慮到網(wǎng)站與用戶(hù)有交互行為的需求,因此 HTTP 就被我們稱(chēng)作是無(wú)狀態(tài)的(stateless)協(xié)議——也就是在故事中的「臉盲的酒?!?。
這在互聯(lián)網(wǎng)網(wǎng)站被用于信息單向傳輸、還沒(méi)有發(fā)展出用戶(hù)交互的年代來(lái)說(shuō)沒(méi)有什么問(wèn)題,那時(shí)候的網(wǎng)民瀏覽網(wǎng)頁(yè)就是用來(lái)看看新聞。直到各種各樣帶有交互功能的購(gòu)物、社交網(wǎng)絡(luò)等網(wǎng)站的興起,讓「臉盲的酒?!狗噶穗y:我給你上完酒(加載完網(wǎng)頁(yè)),我就不認(rèn)得你了,每次上酒還得問(wèn)你一大堆東西,那可不成。
于是,Cookies——也就是上面這個(gè)故事里的「會(huì)員卡」——就呼之欲出了。這是一個(gè)從網(wǎng)景瀏覽器開(kāi)始就擁有的技術(shù),它的作用就相當(dāng)于是在你的本地瀏覽器中登記網(wǎng)站地址和一些能證實(shí)你身份的信息(也就是會(huì)員卡上的酒吧名字和會(huì)員卡號(hào))。
每次使用瀏覽器訪問(wèn)網(wǎng)絡(luò)時(shí),網(wǎng)站或多或少都會(huì)在你同意的前提下,向你的瀏覽器中寫(xiě)入 Cookies 信息,包括你的登錄狀態(tài)和行為軌跡都會(huì)作為 Cookies 被存儲(chǔ)。這樣,只要 HTTP 這位酒保隨身帶一個(gè)小本子(你可以理解為后端服務(wù)器的數(shù)據(jù)庫(kù)),就能輕松辨別每一位顧客。
大概是這樣的對(duì)等關(guān)系
說(shuō)到這里,你可能要問(wèn):那這 Cookies 和老萊的頻道被入侵,到底有什么關(guān)系呢?這就得說(shuō)到這張「會(huì)員卡」的一大硬傷——本地明文存儲(chǔ),以及針對(duì)這個(gè)硬傷而出現(xiàn)的「?jìng)蚊簟故址ā?/p>
我們繼續(xù)剛才那個(gè)故事:你剛到公司的時(shí)候,隨手把公文包往桌子上一放,就去上了廁所,回來(lái)之后你也沒(méi)有發(fā)現(xiàn)什么異常。直到晚上去酒吧喝酒的時(shí)候,酒保告訴你,你卡里已經(jīng)沒(méi)有存的酒了。
這不對(duì)啊,這卡里剩下的酒,少說(shuō)還能喝一個(gè)月啊?你問(wèn)酒保是不是看錯(cuò)了。酒保說(shuō),在一個(gè)小時(shí)前,你把這卡里剩下的酒劃到了另外一個(gè)人那里。你看,我這本子上還登記著呢。
在你的不懈調(diào)查之下,你終于查清了事情的真相:原來(lái),你的同事在趁你去上廁所的時(shí)候,從你(沒(méi)有加鎖的)的公文包里找到了你的會(huì)員卡,記下卡號(hào),又找人按著卡號(hào)做了一張假的會(huì)員卡,并在一個(gè)小時(shí)前把你卡里的酒劃給自己。由于酒保沒(méi)有在會(huì)員卡上做任何的防偽措施,加上酒保本身就是個(gè)臉盲,當(dāng)然不會(huì)知道把卡劃掉的人不是你。
沒(méi)錯(cuò),現(xiàn)代瀏覽器的 Cookies 存儲(chǔ)系統(tǒng),實(shí)際上是一個(gè)沒(méi)有加密的本地?cái)?shù)據(jù)庫(kù)。加上桌面端操作系統(tǒng)的沙箱機(jī)制不完善或經(jīng)常被繞過(guò),就導(dǎo)致瀏覽器的數(shù)據(jù),實(shí)際上被放在「沒(méi)有加鎖的公文包」里。只要稍不留神,任何圖謀不軌的人都可以在你的眼皮子底下,把你的公文包里的東西翻個(gè)底朝天,然后利用你的會(huì)員卡號(hào)來(lái)偽裝成你進(jìn)行操作。
還記得剛才說(shuō)過(guò),「登錄狀態(tài)」會(huì)作為 Cookies 存儲(chǔ)嗎?這個(gè)「登錄狀態(tài)」,實(shí)際上是在你登錄之后生成一段隨機(jī)字符串。服務(wù)器將這段字符串與你的賬戶(hù)聯(lián)結(jié)起來(lái),然后要求你的瀏覽器作為 Cookies 存儲(chǔ),之后,瀏覽器向服務(wù)器發(fā)送請(qǐng)求時(shí),只需要攜帶這段隨機(jī)字符串,服務(wù)器就能知道是誰(shuí)在發(fā)起請(qǐng)求。
這段隨機(jī)字符串的學(xué)名,就叫做「會(huì)話令牌」(Session Token)。也就是說(shuō),如果有人獲得了你的會(huì)話令牌,理論上就獲得了你的「登錄狀態(tài)」,以你的身份在網(wǎng)站上進(jìn)行操作了。
你的會(huì)員卡還在,但是卡里管著的錢(qián)都沒(méi)了
接下來(lái),我們終于可以回到 Linus Tech Tips 入侵事件事發(fā)之初,看看到底發(fā)生了什么。據(jù) Linus 自己的說(shuō)法,他的某位雇員在查收一封商業(yè)合作郵件時(shí)打開(kāi)了郵件里附加的文檔,但電腦沒(méi)有任何響應(yīng)。實(shí)際上,這是一個(gè)偽裝成正常 PDF 文檔的惡意軟件。
這個(gè)軟件,背后是一組針對(duì)在 YouTube 上有影響力的創(chuàng)作者的黑客。通過(guò)向創(chuàng)作者們?nèi)喊l(fā)郵件,黑客就會(huì)尋找「不小心」打開(kāi)他們的惡意軟件的人,并通過(guò)由惡意軟件盜取的會(huì)話令牌來(lái)獲得創(chuàng)作者的 YouTube 頻道控制權(quán)。由于會(huì)話令牌是在登錄后分配的「登錄狀態(tài)」,因此偽名攻擊并不需要破解用戶(hù)的登錄憑證,包括密碼和驗(yàn)證碼等,因?yàn)樗麄?strong>偷到的就是你的「登錄狀態(tài)」,所以這些憑證再安全也沒(méi)有用。
了解整個(gè)入侵事件的來(lái)龍去脈之后,我想你也許已經(jīng)了解這張不起眼的「會(huì)員卡」的重要性了。在日常的網(wǎng)上沖浪過(guò)程中,想要避免 Cookies 被盜取,最重要的就是養(yǎng)成良好的安全意識(shí)和安全習(xí)慣。
例如:
? 由陌生人發(fā)來(lái)的所有郵件(或者熟人發(fā)來(lái)的不明所以的郵件)中的附件或鏈接,一定不能直接打開(kāi),最好是通過(guò)殺毒軟件進(jìn)行掃描后再打開(kāi)。
?一定要先完整檢查文件后綴名和網(wǎng)站域名,確認(rèn)無(wú)誤后再打開(kāi)。
?如果有條件,在虛擬機(jī)或 Windows 沙箱中打開(kāi)這些可疑文件和鏈接。
?最好將操作系統(tǒng)的「顯示文件后綴名」選項(xiàng)打開(kāi)——這樣,偽裝成普通文檔的惡意程序就可以很輕松地「現(xiàn)形」。
?不要在從搜索引擎隨便搜出來(lái)的不知名的小網(wǎng)站中胡亂下載東西。
?不要使用瀏覽器的密碼保存功能——對(duì),這些密碼在瀏覽器里也會(huì)和 Cookies 一樣,被保存進(jìn)「沒(méi)加鎖的公文包」里。
當(dāng)然,這些安全提示不僅是「基操」,網(wǎng)上也有大量的文章來(lái)教你如何操作,這里就不多展開(kāi),有興趣的可以自行上網(wǎng)搜索。這里我們提及一些容易被忽視的文檔安全問(wèn)題。
現(xiàn)代常用的文檔文件格式(例如 Word 和 PDF 等),或多或少都會(huì)帶有交互功能。這些功能有時(shí)被稱(chēng)為「宏」,也有時(shí)直接叫 JavaScript APIs,等等,但它們都可以執(zhí)行一些簡(jiǎn)單的交互操作。很多黑客也瞄準(zhǔn)這一點(diǎn),將惡意代碼通過(guò)這些功能,寫(xiě)入看似正常的文檔中,進(jìn)而神不知鬼不覺(jué)地在你的電腦上安裝惡意軟件。
在通常情況下,這些交互功能在大多數(shù)軟件中是被禁用的。這也是 Word 或 Adobe Acrobat Reader 等軟件在打開(kāi)一些文檔時(shí)候,會(huì)在軟件頂部彈出安全警告的原因——它們告訴你這個(gè)文檔試圖執(zhí)行一些交互代碼,且已被默認(rèn)禁用。
但是,現(xiàn)實(shí)中有很多人,這些提示看都不看直接點(diǎn)「允許」,殊不知這樣的操作會(huì)給電腦和個(gè)人數(shù)據(jù)安全帶來(lái)極大威脅。
在各種軟件發(fā)出安全提示時(shí),請(qǐng)務(wù)必養(yǎng)成仔細(xì)閱讀安全提示的習(xí)慣,了解允許和拒絕所帶來(lái)的風(fēng)險(xiǎn);即使要允許,也一定要確保來(lái)源可靠、可追溯,切勿當(dāng)一個(gè)只會(huì)批、不會(huì)讀的「批奏章皇帝」。歸根結(jié)底,還是需要養(yǎng)成對(duì)應(yīng)的意識(shí)和習(xí)慣,畢竟小心駛得萬(wàn)年船。
現(xiàn)在大多數(shù)的社交媒體和網(wǎng)站,為了提升用戶(hù)日常使用的體驗(yàn),通常都不會(huì)制定「超時(shí)吊銷(xiāo)登錄令牌」的規(guī)定,也不會(huì)經(jīng)常要求用戶(hù)進(jìn)行二次密碼驗(yàn)證(即使是在修改敏感信息之前)。
這就為黑客進(jìn)行偽名攻擊提供不小的便利——畢竟,如果登錄令牌會(huì)在很短的時(shí)間內(nèi)或在異常使用時(shí)失效,或是修改頻道標(biāo)志、名稱(chēng)等敏感信息之前需要進(jìn)行密碼驗(yàn)證,黑客能對(duì)賬戶(hù)進(jìn)行的破壞行為就會(huì)大大減少。
這一點(diǎn)在 Linus 的視頻里也有提及:YouTube 的母公司 Google 好像并沒(méi)有針對(duì)這類(lèi)攻擊,對(duì) Google 賬戶(hù)的安全系統(tǒng)做出任何改良——早在 Linus 被攻擊之前半年左右,中國(guó)大陸另一個(gè)有影響力頻道「電丸科技」創(chuàng)始人 AK 也遭遇偽名攻擊,攻擊的方式、手法、目標(biāo)與 Linus 的遭遇如出一轍;甚至現(xiàn)在去 YouTube 上以相關(guān)關(guān)鍵詞搜索,還能搜索到對(duì)應(yīng)的加密貨幣詐騙直播(以及創(chuàng)作者們的各種抱怨)。
從這一點(diǎn)來(lái)看,Google 沒(méi)有理由不知道 YouTube 創(chuàng)作者們的頻道現(xiàn)在處于不安全的狀態(tài)下,而 Google 自己似乎在有意或無(wú)意地忽略了這些安全隱患。而要防止這些安全隱患,只需要幾個(gè)簡(jiǎn)單的邏輯和存儲(chǔ),就可以完成。
所以,在此呼吁各路互聯(lián)網(wǎng)公司,多在一些系統(tǒng)機(jī)制設(shè)計(jì)上,考慮到用戶(hù)的賬戶(hù)和信息安全問(wèn)題。
畢竟,「賬戶(hù)安全」這四個(gè)字很多時(shí)候并非只是鼓勵(lì)用戶(hù)拿到更高的「安全分」就能完成的;一些簡(jiǎn)單的機(jī)制設(shè)計(jì),就能為用戶(hù)的賬戶(hù)安全提升幾個(gè)數(shù)量級(jí),同時(shí)很多時(shí)候并不需要以犧牲用戶(hù)體驗(yàn)為代價(jià)。
https://sspai.com/post/79066?utm_source=wechat&utm_medium=social
關(guān)鍵詞: