返回

文章详情

Keyv及其朋友在活跃的Shai-Hulud供应链攻击中遭到破坏

Hacker News2026年8月4日 11:01

在2026年8月4日,攻击者侵入了keyv的维护者的GitHub帐户,这是一个每周下载量约为1.27亿的键值存储库,并利用该访问权限在整个包族中注入窃取凭证的恶意软件。同一维护者还拥有cacheable(每月2900万次下载)、flat-cache(每月5.65亿次下载)、file-entry-cache(每月5570万次下载)和其他一些广泛使用的缓存工具,这些工具也都在同一攻击中受到影响。攻陷是通过直接将恶意文件推送到主分支,然后立即发布新版本完成的,这意味着这些被污染的版本是以有效的来源通过GitHub Actions签名发布到npm上的。受影响的包包括:keyv(每月6.19亿次下载),cacheable(每月2900万次),cache-manager(每月1600万次),cacheable-request(每月13300万次),flat-cache(每月5.65亿次),file-entry-cache(每月5570万次),@cacheable/node-cache(每月590万次),@cacheable/memory(每月2800万次),@cacheable/utils(每月3400万次),ecto(每月4000次)。我们还看到疫情蔓延至其他维护者和包的社区活动,包括主要组织:@deliveroo/reevent 1.0.1,@or-sdk/invitations 1.4.9,@picsart/ai-sdk 3.32.2,@qlik/embed-runtime 1.6.4,picasso.js 2.11.6。更新 — 2026年8月4日,13:37 CEST:至少868个包(涉及1381个版本)已被该蠕虫攻陷,根据撰写时的数据,总安装次数超过20亿。发生了什么 每个包都收到了两个新文件,setup.mjs和Math_Symbol.js,并在每个package.json中添加了“preinstall”:“node setup.mjs”条目。任何针对受影响版本运行npm install的人,在安装完成之前就会自动执行setup.mjs。setup.mjs是一个重度混淆的下马威文件。它的唯一任务是静默下载Bun JavaScript运行时并使用它来执行真实有效负载Math_Symbol.js:execFileSync(<bun binary>,['<script_dir>/ Math_Symbol.js'],{ stdio: 'inherit', cwd: <script_dir> })。Math_Symbol.js是一个重度混淆的728 KB的JavaScript文件,包含凭证窃取器,可以从受害者的环境中收集秘密,加密发现并将其外泄到一个公开的GitHub存储库,其描述为“Shai-Hulud:再来一次”。有效负载还包含蠕虫传播功能,以感染安装了一个已被攻陷包的其他维护者的包。它窃取了什么 Math_Symbol.js文件实现了一组凭证提取器,每个提取器定位受害者计算机上的不同秘密存储。npm令牌 读取~/.npmrc并扫描文件系统中的任何其他.npmrc文件。提取authToken值和任何//registry.*:_authToken=...条目。验证每个令牌是否有效,然后再进行外泄。GitHub令牌 目标是三种令牌格式:经典的PAT(ghp_...)和OAuth令牌(gho_...),GitHub应用程序的服务器对服务器令牌(ghs_...)以及JWT OIDC令牌。来源包括~/.config/gh/hosts.yml、环境变量和文件系统扫描。在GitHub Actions运行器上,有效负载还执行一个shell命令,直接读取运行器进程的内存以转储整个秘密存储。它读取ACTIONS_ID_TOKEN_REQUEST_TOKEN和ACTIONS_ID_TOKEN_REQUEST_URL以窃取用于npm发布的OIDC令牌。AWS凭证 ~/.aws/credentials和~/.aws/config,解析所有命名配置文件AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY和AWS_SESSION_TOKEN环境变量EC2实例元数据服务169.254.169.254,首先尝试IMDSv2,然后回退到IMDSv1 ECS容器元数据端点169.254.170.2 AWS Secrets Manager,跨多个区域调用secretsmanager:ListSecrets以枚举并外泄所有存储在那里秘密。Kubernetes秘密 读取/var/run/secrets/kubernetes.io/serviceaccount/中的服务帐户令牌、CA证书和命名空间。使用服务帐户令牌直接查询Kubernetes API并检索命名空间中的所有秘密。此外,还定位KUBECONFIG和~/.kube/config。HashiCorp Vault令牌 优先检查六个来源:VAULT_TOKEN环境变量,~/.vault-token,GitHub Actions运行器路径/home/runner/.vault-token,几个知名容器路径,使用被窃取的服务帐户JWT进行Kubernetes身份验证登录,以及使用任何被窃取的AWS凭证访问Vault的AWS IAM身份验证端点。在获得令牌后,通过/v1/sys/mounts枚举所有KV存储并从KV v1和v2路径读取每个秘密。Stripe和Slack令牌 扫描所有文件中被访问的Stripe API密钥(测试和实时,前缀为sk_和pk_)和Slack令牌(xox[baprs]-...)。通用文件系统扫描 一个硬件平台友好的扫描器(macOS与Linux)在文件系统上运行约200个通配符模式,针对包括其他内容在内的工作。

赞助内容

NordVPN Next-gen Antivirus

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

请我喝杯咖啡