一個面試 repo 裏藏了後門,這事聽起來挺小的,範圍好像也就到找工作的程序員爲止,和其他人沒多大關係。我一開始就是這麼看的,但是再想一下就發現,它真正戳中的是一個挺彆扭的常識問題:開源項目的代碼雖然擺在那裏,誰都能看,但擺在那裏,跟有人認認真真審過,完全是兩回事。
這個倉庫叫 sol-live,slowmist 上週披露的。它表面上是一套 solidity 面試題,一共八道題,每道題還很體貼地標了只需要五到十分鐘。陷阱不在題目代碼裏,而是在 .vscode 這個文件夾裏的一份設置文件裏面。vscode 這類編輯器會讀項目自帶的設置,這個項目就在設置裏藏了一套終端配置。你在項目裏啓動它配好的終端,藏着的命令就跟着跑起來了。它還給 .vscode 加了排除規則,讓這個文件夾在編輯器的側欄裏不顯示,你就算想翻,也翻不到。命令跑起來之後,會從遠程拉一個大約 4mb 的混淆腳本下來執行,再開三個後臺進程,一個翻 13 個 chromium 系瀏覽器的登錄數據庫,一個掃本地文件、mac 的鑰匙串和錢包插件存的東西往外傳,第三個做遠程控制,順便盯着剪貼板。slowmist 這份分析是離線重建代碼得出的,他們沒有公佈受害人數,windows 的那條攻擊路徑也沒有證實。用同一套路做出來的倉庫,他們還找到了另外 8 個。

我們平時爲什麼會覺得開源軟件更安全?道理說起來很順:代碼是公開的,任何人都可以讀,都可以審,藏了後門早晚會被人發現,所以它應該比看不見源碼的閉源軟件更透明,也更讓人放心。這個道理我以前也是信的,我自己就是做開源的,到現在還在維護項目。問題就出在這裏:你把這段話拆開看就會發現,裏面偷偷換了一個概念。開源保證的是你有資格去審,代碼就放在那裏,等着人去看。它根本保證不了已經有人看過,更保證不了看的那個人看懂了,也看全了。一個倉庫的 github 頁面上,不會掛一塊牌子,上面寫着這個項目前後被幾個人完整審過,.vscode 這種配置文件又有幾個人翻過。通常一般是沒有的。沒有人審,和審過沒發現問題,頁面上看起來一模一樣,都是一個乾乾淨淨的倉庫擺在那裏。
那麼實際上到底有幾個人會去審呢?沒幾個。一個有點名氣的項目,背後有維護團隊,有一堆公司在用,出一點事馬上有人盯着,那種項目確實有很多雙眼睛在看。我說的不是它們。我說的是我們每天真正會碰到的大量小項目:作者你不認識,star 沒幾個,fork 也沒幾個,你是在搜某個問題的時候搜到它,readme 寫得挺像樣,你就 clone 下來了。這種項目從頭到尾,可能除了作者本人,就沒有第二個人完整讀過它的代碼。用戶不會審,用戶是來解決問題的,把項目跑起來,能用就接着往下幹了。偶爾有人點開幾個文件看一眼,看的也是主要功能寫得對不對,.vscode 這種放編輯器設置的文件夾,絕大多數人根本不會點開,因爲在大家的印象裏,那裏面放的是個人習慣,不是會偷東西的代碼。攻擊者這次就是鑽了這個空子。你以爲要審的是題目代碼,人家把後門放在了你覺得不用審的地方。
你再把閉源軟件拿過來比一下,這個對比就更彆扭了。閉源軟件當然也可能有問題,它可以偷偷收集你的數據,可以有沒修的漏洞,廠商真黑起心來,也不是做不出壞事。但是它背後好歹站着一家有名字的公司,公司要靠招牌喫飯,出了事用戶能找上門,律師也能找上門,真要是往軟件裏明目張膽塞一個偷瀏覽器密碼、偷錢包的程序,公司等於把自己的招牌和法律責任一起押上了,通常犯不上,也不敢這麼幹。你再看這種假的開源項目,它背後可能就是一個隨手註冊的賬號,倉庫是假的,招聘的人也是假的,偷完就跑,賬號扔掉就完了,沒有招牌要保,也沒有一家公司在那裏等着你去告。說白了,約束閉源廠商的還真不是它心善,是它跑不掉。約束這種一次性假項目的又是什麼呢?幾乎沒有。這個地方我是覺得挺反常識的:我們一直拿透明當開源的安全保證,可真到了這種沒名氣的小項目上,透明只是一個擺在那裏的可能性,真正起作用的約束,它反而比閉源那邊還少。
這種項目以後只會更多,不會更少。以前要把一個假項目做得像模像樣,你得自己寫題目,寫代碼,寫 readme,還要把後門藏好,是要花些功夫的。現在有 AI 了,一個下午批量做出來幾個版本,根本不算什麼事,題目像真的,說明像真的,提交記錄也能做得像真的。門檻降下來以後,遭殃的就不是面試這一個場景了。今天它能僞裝成面試題,明天就能僞裝成一個你正好需要的小工具,一個模板,一個練手項目。你在網上搜到,覺得正好對路,clone 下來打開,流程和你平時乾的一模一樣,區別只在於這一次,對面是衝着你主力機來的。你主力機上有什麼呢?郵箱、github、銀行、主密碼,還有錢包,基本都在那一臺機器上。這個習慣要是不改,等於我們每個人都在拿自己的主力機,替網上的陌生倉庫做第一次安全審查,審查的方法就是親自跑一遍,跑出問題就是中招了。
所以我的建議也很具體,主要是說給和我一樣,天天要碰開源項目的人。任何一個項目,尤其是 star 和 fork 都不多、作者你也不認識的項目,你打算在主力機上跑,或者打算拿它做二次開發的底子,就不要急着用編輯器打開它。先在 github 網頁上把文件翻一遍,別的先不說,.vscode 這個文件夾一定要點開看看,順便留意那些會自動運行的設置和腳本。然後讓你的本地 agent 幫你把整個倉庫靜態審一遍,就是隻讀代碼,不運行,先看看它想在你機器上幹什麼。這一步現在花不了多少時間,AI 把造假項目的門檻拉低了,好歹也把審查的門檻拉低了,不用白不用。真要把項目跑起來驗證,用虛擬機或者一次性的環境,別直接在存着錢包和主密碼的主力機上跑。要是你已經打開過來路不明的倉庫,還開過它配的終端,那就別抱僥倖了,按 slowmist 給的順序來:把那臺機器先隔離開,用另一臺你信得過的設備把錢包裏的資產轉走,然後該改的密碼挨個改掉。沒什麼好說的,趕緊處理,越拖丟的東西越多。
你回想一下,上一次你把一個沒名氣的小項目 clone 下來,在主力機上打開之前,你翻過它的 .vscode 嗎?
出處:SlowMist《Threat Intelligence: Beware Web3 Interview Questions Conceal a Data-Stealing Backdoor》,2026 年 10 月 23 日,https://slowmist.medium.com/threat-intelligence-beware-web3-interview-questions-conceal-a-data-stealing-backdoor-615cebdcb21c