【恶意文件通告】Xinference供应链投毒

admin 2026-04-26 05:39:51 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 2026年4月22日,XInference开源推理框架的PyPI发布线遭劫持,攻击者通过窃取的维护者凭据向官方仓库推送2.6.0、2.6.1、2.6.2三个恶意版本。这些版本在init.py中植入双层Base64混淆载荷,在导入时后台窃取SSH、云IAM、Kubernetes、Docker、数据库及加密货币钱包等凭据,压缩为love.tar.gz后外传至C2。建议受影响用户立即降级至2.5.0、轮换所有相关凭据并审计下游访问日志。 综合评分: 95 文章分类: 供应链安全,漏洞预警,恶意软件,数据安全,应用安全


cover_image

【恶意文件通告】Xinference供应链投毒

深瞻情报实验室 深瞻情报实验室

深信服千里目安全技术中心

2026年4月24日 20:29 北京

在小说阅读器读本章

去阅读

近期,深信服千里目安全技术中心监测到一起围绕Xinference开源推理框架的PyPI供应链投毒事件。根据xorbitsai/inference项目维护者于2026年4月22日在GitHub公开确认的信息,xinference的2.6.0、2.6.1、2.6.2版本已遭攻击者注入恶意代码并被紧急撤回,攻击起点并非仿冒包名,而是合法PyPI发布线被劫持,属于典型的合法软件供应链投毒事件。

恶意文件概要

| | | | — | — | | 事件名称 | 关于Xinference PyPI包的供应链投毒攻击 | | 发布时间 | 2026年4月24日 | | 威胁类型 | PyPI发布线劫持、合法包投毒、凭据窃取、AI推理基础设施攻击 | | 简单描述 | 攻击者通过盗用的维护者/发布凭据向PyPI正式发布线推送xinference 2.6.0、2.6.1、2.6.2三个恶意版本,在xinference/__init__.py中嵌入双层Base64混淆载荷,在import或CLI/服务启动时后台派生子进程实施凭据窃取并外传至C2。 | | 关键特征 | 合法发布线被劫持;恶意代码位于__init__.py导入即触发;双层Base64 + subprocess.Popen分离执行;重点收集SSH、云IAM、K8s、Docker、包管理器令牌、.env、数据库、TLS和加密钱包等凭据;打包为love.tar.gz经带自定义头X-QT-SR: 14的curl –data-binary外传至whereisitat.lucyatemysuperbox.space;样本含# hacked by teampcp标记,TeamPCP已公开否认负责。 |

事件详述

攻击背景与起因

近期,深信服千里目安全技术中心监测到一起围绕Xinference开源推理框架的PyPI供应链投毒事件。

根据xorbitsai/inference项目维护者于2026年4月22日在GitHub Issue #4828中的公开确认,攻击者已取得对合法PyPI发布线的实质控制能力,将xinference 2.6.0、2.6.1、2.6.2三个版本打上恶意载荷后直接通过官方发布通道分发。推断攻击者通过窃取维护者或CI凭据实现了对发布线的接管,但该路径目前尚未被官方完全闭环确认。

影响范围与风险分析

根据项目官方公告与JFrog、OX Security等第三方研究分析,这次事件的核心影响不在于攻击者是否直接篡改Xinference项目代码仓库,而在于其能够通过合法的PyPI发布线将凭据窃取木马静默植入大量AI推理节点,并由此形成对云平台、代码托管、包仓库和数据库等多类下游资产的级联外泄风险。

  • 受影响范围: PyPI上xinference 2.6.0、2.6.1、2.6.2三个版本,上传时间集中在2026年4月22日前后,已由项目方紧急yank;目前PyPI最新安全版本为2.5.0(发布于2026年4月12日前后)。

  • 暴露数据: 样本重点收集Linux主机上的SSH私钥与主机密钥、AWS/GCP/Azure云凭据与IMDSv2角色令牌、Kubernetes kubeconfig与service account token、Docker认证、npm/PyPI/Cargo发布令牌、.env与.gitconfig机密、数据库与邮件配置、Terraform状态、WireGuard与Helm数据、TLS私钥及Bitcoin/Ethereum/Solana/Cardano/Monero等加密钱包文件。

  • 级联风险: 由于Xinference天然部署在富含云凭据与模型资源的AI基础设施中,一旦导入即可能在极短时间内外传大量高价值凭据,进而引发云账号接管、K8s接管、包仓库二次投毒、源码泄露、数据库外泄与资金类欺诈等级联后果。

受影响场景

本次事件主要影响在Linux服务器、GPU推理节点、Kubernetes节点、容器构建机、CI Runner或云主机上安装并导入过受影响版本的AI/ML团队、平台运维团队与自托管推理服务运营方,尤其是将以下资产直接置于Xinference部署环境中的场景:

  • ~/.ssh/id_rsa 与 /etc/ssh/ssh_host_*_key

  • ~/.aws/credentials、~/.aws/config 与IMDSv2角色令牌

  • ~/.kube/config、

    /var/run/secrets/kubernetes.io/serviceaccount/token

  • ~/.docker/config.json、~/.npmrc、~/.pypirc、

    ~/.cargo/credentials.toml

  • .env、.env.local、.env.production、.git-credentials

  • .pgpass、.my.cnf、redis.conf、postfix sasl_passwd、terraform.tfvars、terraform.tfstate

  • .pem、.key、.p12、.pfx等TLS与证书私钥材料,以及加密货币钱包与keystore

同时公开情报显示本次事件尚未出现针对官方Docker镜像的大规模成功投毒证据,已落地的供应链影响目前主要集中在PyPI发布线。

攻击时间线

| | | | | | — | — | — | — | | 时间 | 事件 | 详细说明 | | | 2025/10 | 维护者关联机器人异常 | XprobeBot机器人账号开始出现异常活动,随后被怀疑是未经授权上传PyPI包的关键切入点。 | | 2025/12 | CI/CD风险披露期 | JFrog研究员报告xorbitsai/inference仓库GitHub Actions存在pull_request_target命令注入风险,可理论上导致PYPI_PASSWORD、DOCKERHUB_PASSWORD等机密泄露并形成供应链后果。 | | 2026/1/25 | GitHub公开披露CI/CD漏洞 | xorbitsai/inference仓库Issue #4528公开说明该命令注入与仓库接管风险,影响可延伸至PyPI和DockerHub发布链,随后被标记为通过PR修复,但与本次4月投毒的直接因果关系尚未被官方闭环。 | | 2026/4/12 | 正版2.5.0发布 | 维护者按正常流程在PyPI发布xinference 2.5.0(目前仍为推荐安全版本)。 | | 2026/4/22 | 恶意版本上传 | XprobeBot账号将Base64混淆恶意载荷写入xinference/__init__.py,并以2.6.0、2.6.1、2.6.2三个版本推送至PyPI,GitHub侧无对应标签或提交。 | | 2026/4/22 | 社区发现异常行为 | 用户在安装xinference 2.6.2后发现服务出现异常行为,包括在服务器上执行与密码相关的grep动作,并在GitHub Issue #4828告警。 | | 2026/4/22 | 官方确认遭攻击并撤回 | 项目维护者在Issue #4828明确回复”Yes, we are under attack, we have just yanked those versions.”。JFrog当日发布详细分析并纳入Xray (XRAY-96896),OX Security发布独立确认。 | | 2026/4/22 | TeamPCP公开否认 | TeamPCP通过X账号@pcpcats公开否认参与本次事件 |

技术特征与攻击行为分析

投毒载体与进入方式

本次事件并非攻击者在Xinference官方源码仓库、提交历史或构建流水线中植入恶意代码,而是典型的”合法PyPI发布线劫持”。

恶意代码仅被注入在xinference/__init__.py中,这意味着只要用户执行import xinference、通过CLI启动服务,载荷就会自动执行。根据JFrog分析,第一阶段为高度混淆的Base64字节串,运行时解码并通过subprocess.Popen派生一个独立的后台Python解释器,将stdout/stderr全部压制;第一阶段再解码第二阶段采集器并通过标准输入喂给子进程,把采集结果写入临时文件、压缩为love.tar.gz后外传,随即清理临时痕迹。

信息收集目标

潜在暴露对象包括:

  • 主机画像信息: hostname, pwd, whoami, uname -a, ip addr / ifconfig, ip route, printenv

  • SSH密钥与主机密钥: ~/.ssh/id_rsa, /etc/ssh/ssh_host_*_key

  • 云平台凭据: ~/.aws/credentials, ~/.aws/config, GCP配置, IMDSv2角色令牌, AWS Secrets Manager ListSecrets 与 SSM DescribeParameters枚举

  • Kubernetes凭据: ~/.kube/config, /var/run/secrets/kubernetes.io/serviceaccount/token

  • 容器与包管理凭据: ~/.docker/config.json, ~/.npmrc, ~/.pypirc, ~/.cargo/credentials.toml

  • Git与源码凭据: ~/.git-credentials, ~/.gitconfig

  • 环境变量与机密文件: .env, .env.local, .env.production

  • 基础设施配置: terraform.tfvars, terraform.tfstate, WireGuard, Helm

  • 证书与TLS材料: .pem, .key, .p12, .pfx

  • 加密货币钱包: 比特币、以太坊keystore、Solana validator keypair、Cardano、Monero等

  • Shell历史与系统账号信息: .bash_history, .zsh_history, /etc/passwd, /etc/shadow

  • 应用类Webhook与API密钥: Slack/Discord Webhook, JSON/配置文件中的各类API Key

这些凭据一旦外泄,可能被用于数据窃取、会话伪造、云资源接管、Kubernetes接管、包仓库二次投毒、源代码泄露、数据库外泄、资金类欺诈和加密货币盗取,甚至进一步实施真正的下游软件供应链投毒。

持久化与横向移动能力

由于AI推理环境通常持有跨云、跨项目的高权限凭据,样本外泄的数据具备天然的横向移动潜力:一份被窃的AWS IAM密钥可能直接打开云账号;一份被窃的K8s service account token可能直接接管集群;一份被窃的PyPI/npm/Cargo令牌则可能被攻击者用于对下游其它开源项目再次实施供应链投毒,形成链式放大。

解决方案

建议处置流程

  1. 识别影响主机:梳理所有安装或运行过xinference 2.6.0/2.6.1/2.6.2的主机、容器与CI环境。

  2. 保全取证证据: 处置前先保留日志、pip缓存、site-packages目录与DNS/代理审计记录。

  3. 按优先级轮换凭据: 立即轮换SSH密钥、云IAM凭据、K8s令牌、Docker/PyPI/npm/Cargo令牌、数据库密码与.env机密。

  4. 核查下游访问日志:回溯云平台、代码托管与包仓库的访问记录,排查异常登录、令牌滥用与可疑外连。

  5. 审计CI/CD与发布凭据: 清理xorbitsai/inference相关GitHub Actions权限、PYPI_PASSWORD等机密与不再使用的机器人账号。

  6. 强化安全配置: 在PyPI、GitHub及维护者账号启用MFA,使用依赖锁定与SBOM工具持续扫描。

IOC

e1e007ce4eab7774785617179d1c01a9381ae83abfd431aae8dba6f82d3ac127

077d49fa708f498969d7cdffe701eb64675baaa4968ded9bd97a4936dd56c21c

fe17e2ea4012d07d90ecb7793c1b0593a6138d25a9393192263e751660ec3cd0

whereisitat.lucyatemysuperbox.space

hxxps://whereisitat.lucyatemysuperbox.space/

MITRE ATT&CK:

| | | | | | | — | — | — | — | — | | Tactic | Technique | ID | Application | | | Initial Access | Supply Chain Compromise: Compromise Software Supply Chain | T1195.002 | 恶意代码通过合法PyPI发布线推送至xinference 2.6.0/2.6.1/2.6.2 | | Execution | Command and Scripting Interpreter: Python | T1059.006 | __init__.py中双层Base64载荷导入即执行 | | Defense Evasion | Obfuscated Files or Information | T1027 | 双层Base64混淆 + subprocess.Popen分离 + stdout/stderr压制 | | Defense Evasion | Indicator Removal: File Deletion | T1070.004 | 采集完成后清理临时文件与love.tar.gz | | Credential Access | Unsecured Credentials: Credentials In Files | T1552.001 | 递归读取.env、.aws/credentials、.kube/config等凭据文件 | | Credential Access | Unsecured Credentials: Private Keys | T1552.004 | 收集SSH私钥、TLS私钥、加密钱包keystore | | Credential Access | Cloud Instance Metadata API | T1552.005 | 获取AWS IMDSv2令牌及IAM角色凭据 | | Discovery | System Information Discovery | T1082 | hostname / uname -a / ip addr 等主机画像命令 | | Discovery | Cloud Service Discovery | T1526 | AWS Secrets Manager ListSecrets、SSM DescribeParameters枚举 | | Collection | Data from Local System | T1005 | 广泛递归扫描本地凭据、配置与密钥材料 | | Exfiltration | Exfiltration Over Web Service | T1567 | 经curl –data-binary外传love.tar.gz至C2 | | Exfiltration | Exfiltration Over C2 Channel | T1041 | 通过自定义HTTP头X-QT-SR: 14标识通信 |

参考链接

1.https://github.com/xorbitsai/inference/issues/4828

2.https://github.com/xorbitsai/inference/issues/4528

3.https://research.jfrog.com/post/xinference-compromise/

4.https://www.ox.security/blog/xinference-allegedly-hacked-by-teampcp-malicious-package-in-pypi/

5.https://securityboulevard.com/2026/04/a-poisoned-xinference-package-targets-ai-inference-servers/

6.https://cloud.tencent.com/announce/detail/2263

7.https://mp.weixin.qq.com/s/RdDiw93k2tcr0YYqnc-V4Q

8.https://finance.eastmoney.com/a/202604233715088018.html


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:深信服千里目安全技术中心 深瞻情报实验室 深瞻情报实验室《【恶意文件通告】Xinference供应链投毒》

评论:0   参与:  0