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