
PolinRider 伸入 npm、Composer 同 Go:裝包前真係要望清楚
求職 coding task、VS Code task 同 package install 都變成入口
唔止係另一單有毒 package
iThome 報道引用 Socket 研究,北韓相關 Contagious Interview / Famous Chollima 攻擊者,將 PolinRider 由 npm 擴到 Packagist、Go module 同 Chrome Web Store。Socket 話今次見到 162 個惡意 release artifact,分散喺 108 個 package 或 extension,入面包括 80 個 Go module、10 個 Packagist package 同 1 個 Chrome extension;北韓歸因呢點,TechLab 跟 Socket、MITRE 呢類 source 嘅講法,唔會寫到似法庭已經定案。
呢件事值得睇,唔係因為 npm 又出事咁簡單,而係攻擊者打中開發者最鬆嗰一刻:搵工時收到 coding task、開人哋俾你嘅 repo、跑 package install、用 VS Code 或 Cursor 開 folder。本地 startup、agency、SaaS team 同 freelancer 好多都係咁做嘢,尤其交貨急、客戶 repo 又多,未必每次都會開乾淨環境。PolinRider 麻煩在於,問題可以早過 deploy 出現:一裝、一開、一 build,惡意 payload 已經有機會喺開發機或者 CI runner 落腳。

圖片:Socket
佢點樣入你部機
OpenSourceMalware 早前追 PolinRider,已經見到超過 1,951 個 public GitHub repo、1,047 個 owner 受影響。佢哋形容,攻擊者會用求職同假 interview 做包裝,例如 ShoeVista 呢類 MERN take-home task,client/package.json 入面夾住 tailwindcss-style-animate;另一個 StakingGame 就靠 .vscode/tasks.json,一開 project 就觸發隱藏任務。呢啲唔係高深 zero-day,反而係好貼地嘅社交工程:你以為自己喺做 test,其實已經俾人拉咗入感染鏈。
Socket 同 OSM 見到嘅手法好一致:惡意 JavaScript loader 會塞入 postcss.config.mjs、tailwind.config.js、eslint.config.mjs、vite.config.js 呢類 build config,甚至扮成 .woff2 font file。之後 payload 會搵 TRON、Aptos、BNB Smart Chain 呢類 public blockchain 基建攞第二階段內容,再解密執行;Socket 見到 DEV#POPPER 同 OmniStealer,功能包括 remote command、偷 credential、偷 browser data 同 crypto wallet。換句話講,呢類攻擊最想攞嘅,多數係開發機入面嘅 token、SSH key、cloud key 同 package registry 權限,唔係個前端 app 本身。
下架咗唔代表乾淨晒
npm registry 而家顯示,幾個 OSM 點名嘅 Tailwind-adjacent package 已經只剩 0.0.1-security placeholder:tailwindcss-typography-style 喺 2025-12-30 轉走,tailwind-autoanimation 喺 2026-01-07 轉走,tailwindcss-style-animate 喺 2026-03-10 轉走,tailwind-mainanimation 喺 2026-03-13 轉走;OSM 對應標記過嘅惡意版本包括 0.8.2、2.3.6、1.1.6 同 2.3.3。但呢點只係代表 npm 公開 registry 而家唔再直接派嗰啲舊 tarball,唔代表 lockfile、公司內部 mirror、CI cache、舊 Docker image 同 clone 落嚟嘅 repo 已經冇事。
Packagist、Go module 同 Chrome extension 嘅逐個下架時間,公開資料暫時未見到穩定清單,[待確認]。已知 Socket 點名 sevenspan namespace、7span organization、Xpos587/git2md、Xpos587/markfetch、Artiffusion-Inc/mirofish 呢啲 indicator,亦話 campaign 仲有新樣本冒出。實務上唔好靠一張二手 list 當完結,因為 PolinRider 其中一個惡位係改 Git history:main page 望落似幾個月冇改,Activity tab 先見到 force push 同舊 commit 俾人重寫過。
工程 team 而家應該點查
第一步先用乾淨機做排查,唔好急住 panic delete repo。先搵近期 clone 過嘅求職 task、freelance test、陌生 recruiter 俾嘅 repo,再查 package-lock.json、pnpm-lock.yaml、yarn.lock、composer.lock、go.sum 有冇上述 package、sevenspan / Xpos587 呢類 indicator,Chrome extension inventory 都要過一次。跟住查 repo 入面嘅 .vscode/tasks.json、postcss.config.*、tailwind.config.*、eslint.config.*、vite.config.*、next.config.*,特別留意正常 config 後面突然多咗長到睇唔晒嘅 obfuscated code、temp_auto_push.bat、奇怪 .woff2,同埋 GitHub Activity 入面嘅 force push。
如果真係中過,移除 package 只係最低限度。開發機、CI runner、serverless deploy secret、npm / Packagist / GitHub token、SSH key、cloud credential、Vault token、Docker registry credential 都要當暴露處理,用乾淨機 rotate。公司有自家 package proxy 或 artifact cache,就要追返有冇 cache 住舊版;有 monorepo 就唔好只掃 root,apps/、client/、frontend/、web/ 呢啲深層 path 都要睇。呢類攻擊最怕半清理,表面刪咗 fake font,config file 入面個 loader 仲喺度。
真正要改嘅習慣
今次最值得記住嘅位係,供應鏈安全已經唔可以淨係等 Dependabot 報 CVE。搵工 task、freelance client repo、Chrome extension、Composer package、Go module,全部都可能係同一條攻擊鏈嘅入口。之後開陌生 repo,最好用 disposable VM、冇登入主力 GitHub、冇 mount SSH key、冇帶 .env,package install 前先望 lockfile 同 install script;團隊層面就應該將 developer machine 當成高價值資產,而唔係只保護 production server。PolinRider 呢次畀人嘅提醒好直接:開發者部機一中,後面成條 software supply chain 都會跟住受牽連。
參考來源
- iThome — 北韓駭客發動PolinRider攻擊活動,於NPM、Packagist、Go、Chrome Web Store上架惡意套件 — original report
- Socket:PolinRider North Korea-linked supply chain campaign expands — 主要資安研究來源,核對 108 個 package / extension、162 個 artifact、Packagist / Go / Chrome 範圍同防禦建議。
- OpenSourceMalware:PolinRider DPRK Attack Expands Across GitHub — 補充 GitHub repo 感染規模、ShoeVista / StakingGame、VS Code task、fake font 同 IoC。
- OpenSourceMalware/PolinRider GitHub repository — 核對掃描建議、受影響 npm package、惡意版本同 registry 狀態描述。
- MITRE ATT&CK:Contagious Interview G1052 — 核對 Contagious Interview 嘅歸因寫法、目標平台同開發者 / crypto 受害背景。
- Unit 42:Contagious Interview fake recruiters and BeaverTail / InvisibleFerret — 補充假 recruiter、求職 coding test、BeaverTail 同 InvisibleFerret 背景。
- npm registry:tailwindcss-style-animate — 核對 npm 而家只剩 security holding package 同 placeholder 時間。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







