![]()
3月的一個周二,某后端工程師打開郵箱,看到GitHub發來的新通知——「Visual Studio Code – Severe Vulnerability – Immediate Update Required」。發件人是GitHub Discussions,標題帶著CVE編號, urgency拉滿。他點了鏈接。三小時后,他的開發機成了礦機。
假警報的生產線:每分鐘幾十條,像工廠出貨
這波攻擊的離譜之處在于規模。Socket.dev的安全分析師追蹤發現,攻擊者在短時間內向GitHub倉庫灌入了數千條幾乎一模一樣的Discussion帖子。不是幾十個,是幾千個。這些帖子像流水線產品一樣批量出現,間隔以分鐘計,覆蓋了大量毫無關聯的開源項目。
每條帖子都穿著官方制服: alarming標題、編造的CVE漏洞編號、假的版本范圍聲明。標題庫包括「Critical Exploit – Urgent Action Needed」「Severe Threat – Update Immediately」等固定模板,輪換使用。攻擊者甚至給假漏洞編了詳細的「影響版本」,比如聲稱VS Code 1.85到1.97全部中招,讓常年跟版本號打交道的開發者一眼看去覺得「這很技術」。
GitHub Discussions的設計成了幫兇。這個功能本用于社區交流,但有個特性:任何新Discussion都會自動觸發郵件通知,推送給該倉庫的所有參與者和關注者。攻擊者利用這一點,把假警報直接送進開發者的收件箱——不是垃圾郵件文件夾,是正經的GitHub通知郵件,帶著平臺官方的背書感。
Socket.dev的研究人員指出,這種「平臺內釣魚」比傳統郵件釣魚更難防御。開發者對GitHub通知有天然的信任慣性,就像你會更相信銀行App內彈出的提示,而非短信里的鏈接。
跳轉鏈的精心設計:Google當跳板,Cookie做篩子
點擊假警報中的「更新鏈接」后,事情才開始變得有趣。Socket.dev拆解了一條典型的惡意鏈接,發現攻擊者搭建了一套多步跳轉機制,目的是躲避自動化檢測,同時篩選高價值目標。
第一步,鏈接指向Google Drive的分享端點。這一步很聰明:Google域名在大多數安全工具的白名單里,鏈接看起來人畜無害。第二步,服務器檢查訪問者的瀏覽器是否攜帶有效的Google Cookie。如果有,觸發301重定向,將用戶送往攻擊者控制的下載站點;如果沒有,可能導向一個無害頁面,或者干脆404。
![]()
這個Cookie檢查是個簡單的風控繞過策略。自動化爬蟲通常沒有真實用戶的Google登錄態,會被擋在門外;而真正的開發者,尤其是常年開著Gmail和Google Docs的人,幾乎必然攜帶有效Cookie。攻擊者用這種方式過濾掉安全研究人員的掃描工具,只讓「真人」進入下一環。
最終落地頁提供的是所謂「 patched 版VS Code」,實際打包了信息竊取木馬或遠程控制程序。合法VS Code更新從不會通過文件分享服務分發,但緊急感壓過了理性檢查——這是社會工程學的經典配方。
賬號農場與標簽轟炸:低成本放大器
執行這波攻擊的賬號池特征明顯:大量新注冊或長期休眠的低活躍度賬戶。GitHub的開放注冊機制讓批量創建賬號變得 trivial,而攻擊者不需要這些賬號有歷史聲譽,它們只需要存在,能被用來發帖和@人。
每個假Discussion會@大量開發者賬號,橫跨多個不相關的倉庫。這種「標簽轟炸」策略追求的是曝光量的最大化——哪怕只有1%的收件人點擊,乘以數千條帖子的覆蓋范圍,也是可觀的感染基數。
GitHub的協作特性被武器化了。開發者習慣在Discussions里求助、分享、討論技術細節,這個空間的社交信任度高于外部郵件。攻擊者把釣魚內容植入這個信任環境,相當于在教堂里賣假藥。
Socket.dev將此次行動定性為「 coordinated spam operation 」——協調式垃圾郵件攻擊。 coordinated 體現在時間上的同步性(數千帖子短時間內涌出)、內容上的模板化(標題和文案高度一致)、以及技術上的自動化(賬號創建、帖子發布、@人操作均可腳本化)。
開發者靶場的轉移:從郵箱到工作流
傳統釣魚郵件的打開率逐年下降,安全培訓的普及讓開發者對「陌生鏈接」有了條件反射式的警惕。但平臺內通知是另一回事。當你每天收到幾十條GitHub通知,處理issue、review PR、回復Discussion,這種高頻交互會磨損警惕性。
![]()
攻擊者顯然觀察到了這個行為模式。把釣魚載體從外部郵件遷移到GitHub內部功能,是一次典型的「跟隨用戶」策略——用戶在哪里花時間,攻擊就在哪里發生。
更深層的問題在于,GitHub作為代碼托管平臺,聚集的是高價值目標。開發者的機器通常持有API密鑰、數據庫憑證、生產環境訪問權限。攻陷一臺開發機,可能比攻陷十臺普通辦公電腦更有利可圖。這波攻擊選擇VS Code作為誘餌也經過計算:這是開發者最熟悉的工具之一,「你的編輯器有漏洞」比「你的瀏覽器需要更新」更能觸發專業焦慮。
Socket.dev的報告沒有披露具體的感染數字,但提到「 hundreds to thousands of posts 」出現在搜索結果中,且「 rapid succession 」的發布節奏指向高度自動化的基礎設施。這種規模不是個人黑客的手筆,而是有資源支持的運營行為。
平臺的防御困境:開放性與安全性的張力
GitHub的響應機制面臨結構性難題。Discussions和@通知是核心協作功能,不能簡單關閉或大幅限制,否則會傷害正常社區活動。但開放的設計天然適合濫用:任何人可以創建賬號,任何賬號可以在公開倉庫發帖,任何帖子可以@任何人。
事后清理相對容易——批量刪除惡意帖子、封禁關聯賬號。但攻擊者的基礎設施成本極低:新賬號、新倉庫、新域名可以無限再生。這種不對稱性讓「打地鼠」式的防御疲于奔命。
一些開發者社區開始自發應對。有倉庫維護者在Discussions置頂警告,有用戶在假帖子下留言提醒他人。但這種分散的抵抗面對工業化攻擊時,效果有限。
更根本的解法可能在于改變用戶行為——不是讓開發者更警惕,而是讓平臺設計減少「必須警惕」的場景。比如,對Discussions中的外部鏈接添加視覺警告,或對包含特定關鍵詞(CVE、Critical、Urgent)的新帖子觸發人工審核。這些都會增加 friction,但也是開放平臺的宿命。
這波攻擊的收尾方式很平淡:GitHub清理了帖子,安全公司發布了報告,開發者社區討論了一周,然后注意力轉移。但攻擊者的 playbook 已經被驗證有效,下一輪可能只是換一批賬號、換一個誘餌工具、換一個平臺功能。
當你下次在GitHub收到「緊急安全更新」通知,會先看發件人賬號的創建時間,還是直接點鏈接?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.