![]()
每周被下載100億次的JavaScript工具鏈,正在成為國(guó)家級(jí)黑客的狩獵場(chǎng)。上周,Axios庫剛被攻破——這個(gè)每周1億次下載的HTTP客戶端,攻擊者用的不是技術(shù)漏洞,而是一個(gè)精心排練了數(shù)周的劇本。
現(xiàn)在,同樣的劇本正在批量復(fù)制。WebTorrent、Lodash、Fastify、dotenv的維護(hù)者接連收到"合作邀請(qǐng)",連Node.js技術(shù)委員會(huì)主席Matteo Collina都沒能幸免。
攻擊不是釣魚郵件,是"養(yǎng)成系"騙局
安全研究員Tay把這類攻擊比作"慢燉"——不像傳統(tǒng)釣魚那樣急吼吼要密碼,黑客愿意花三周時(shí)間陪你演完一出職場(chǎng)社交劇。
第一步是在LinkedIn或Slack拋出橄欖枝。假身份來自一家叫"Openfort"的公司,聽起來像那么回事。開發(fā)者Pelle Wessman和Jean Burellier被拉進(jìn)私密Slack頻道,對(duì)方熱情邀請(qǐng)他們上播客、做訪談。
Socket CEO Feross Aboukhadijeh被盯上后復(fù)盤:對(duì)方甚至?xí)鲃?dòng)改期,把會(huì)議 reschedule 兩次,就為了顯得"我們真的在協(xié)調(diào) busy schedule,絕對(duì)不是騙子"。
這種耐心本身就是信號(hào)。Tay追蹤到攻擊源頭是朝鮮黑客組織UNC1069——他們的KPI不是點(diǎn)擊轉(zhuǎn)化率,而是滲透成功率。
假會(huì)議平臺(tái)的"音頻故障"陷阱
真正的殺招藏在視頻通話環(huán)節(jié)。黑客發(fā)送的鏈接指向一個(gè)高仿平臺(tái),界面像素級(jí)復(fù)刻Microsoft Teams或Streamyard。開發(fā)者點(diǎn)進(jìn)去,一切正常,直到——
音頻突然斷了。"您的麥克風(fēng)似乎有問題,請(qǐng)下載這個(gè)調(diào)試工具,或在終端運(yùn)行以下命令。"
這個(gè)設(shè)計(jì)堪稱心理戰(zhàn)的典范。技術(shù)人遇到bug時(shí)的本能反應(yīng)是排查,而不是懷疑會(huì)議本身。命令行一閃,Remote Access Trojan(遠(yuǎn)程訪問木馬)已經(jīng)靜默安裝。
RAT的胃口很大:瀏覽器cookie、云憑證、密碼鑰匙串、活躍的開發(fā)者token,全部打包上傳。最陰損的是它每60秒回連一次指令服務(wù)器,像職場(chǎng)里那個(gè)"我只是順便問問"的同事,存在感極低,危害極大。
因?yàn)橥档氖腔钴S會(huì)話,雙因素認(rèn)證形同虛設(shè)。黑客不需要破解密碼,他們直接騎在已登錄的會(huì)話上,把代碼推送到npm registry——就像你本人坐在電腦前操作一樣。
供應(yīng)鏈的"信任悖論":越基礎(chǔ)越脆弱
被盯上的包有個(gè)共同特征:它們太基礎(chǔ)了,基礎(chǔ)到你根本不會(huì)去想是誰在維護(hù)。
Lodash是JavaScript的"瑞士軍刀",幾乎每個(gè)項(xiàng)目都import過它的深拷貝或節(jié)流函數(shù)。dotenv把.env文件讀進(jìn)process.env,這個(gè)操作每天都在全球千萬臺(tái)服務(wù)器上執(zhí)行。Fastify是Node.js生態(tài)里性能最好的Web框架之一,WebTorrent則是瀏覽器里跑BT協(xié)議的獨(dú)苗。
這些工具的維護(hù)者不是安全公司的紅隊(duì)專家,是拿著GitHub Sponsor勉強(qiáng)覆蓋服務(wù)器成本的獨(dú)立開發(fā)者。他們的攻擊面不是代碼漏洞,是人性——對(duì)職業(yè)機(jī)會(huì)的期待,對(duì)技術(shù)問題的條件反射,對(duì)"看起來正規(guī)"的流程的信任。
Collina在復(fù)盤時(shí)提到一個(gè)細(xì)節(jié):對(duì)方的公司資料、郵件簽名、甚至Slack工作區(qū)的頭像墻,都經(jīng)過精心設(shè)計(jì)。"如果不是我恰好認(rèn)識(shí)那個(gè)領(lǐng)域的人,多問了一嘴,可能已經(jīng)中招。"
Aboukhadijeh的判斷更悲觀:這種針對(duì)個(gè)體維護(hù)者的精密攻擊,正在成為開源生態(tài)的"新常態(tài)",而且速度在加快。
防御的困境:當(dāng)最佳實(shí)踐失效
傳統(tǒng)的安全建議在這里顯得蒼白。用密碼管理器?cookie被偷了。開2FA?會(huì)話token被偷了。代碼簽名?發(fā)布是從你本人機(jī)器上走的。
npm的發(fā)布流程設(shè)計(jì)于一個(gè)更天真的年代,假設(shè)維護(hù)者本人是可信的root of trust。這個(gè)假設(shè)在國(guó)家級(jí)黑客的劇本里,只是個(gè)待繞過的檢查點(diǎn)。
一些維護(hù)者開始采取極端措施:專用發(fā)布機(jī)、硬件安全密鑰、甚至物理隔離的CI/CD流水線。但這些是少數(shù)人的奢侈選擇。更多人面對(duì)的是殘酷的成本計(jì)算——花三周甄別一個(gè)"合作邀請(qǐng)"的真?zhèn)危€是直接忽略所有外部聯(lián)系?
開源經(jīng)濟(jì)的結(jié)構(gòu)性矛盾在此暴露:支撐全球數(shù)字基礎(chǔ)設(shè)施的,往往是兼職維護(hù)者的善意。當(dāng)攻擊者的預(yù)算以百萬美元計(jì),防御者的資源以小時(shí)計(jì),這場(chǎng)不對(duì)稱戰(zhàn)爭(zhēng)的結(jié)局不難預(yù)料。
Axios事件后,npm官方加速了"發(fā)布者驗(yàn)證"和"包完整性監(jiān)控"的部署。但這些是事后補(bǔ)丁。真正的問題在于,開源生態(tài)的信任模型建立在"認(rèn)識(shí)你的維護(hù)者"之上,而黑客正在系統(tǒng)性地批量偽造這種"認(rèn)識(shí)"。
Tay的分析報(bào)告末尾有個(gè)未被充分討論的觀察:UNC1069的攻擊腳本顯示,他們對(duì)目標(biāo)的技術(shù)棧、近期commit歷史、甚至Twitter發(fā)言風(fēng)格都做了研究。這不是廣撒網(wǎng),是定點(diǎn)清除。
下一個(gè)被偽造身份的會(huì)是誰?當(dāng)"上播客"成為攻擊向量,維護(hù)者還能相信什么?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.