执行摘要

广受欢迎的 Python 软件包 xinference (Xorbits Inference) 在 PyPI 上遭到污染,该包主要用于部署大语言模型 (LLM)、语音识别和多模态 AI 模型。恶意版本 2.6.0、2.6.1 和 2.6.2 被上传,其 __init__.py 文件中包含混淆的恶意软件,在执行 import xinference(或启动 CLI/服务)时会立即触发执行。

恶意负载会执行广泛的侦察并外泄大量敏感数据,包括云凭据(包含针对 AWS 的 IMDSv2 逻辑)、SSH 密钥Kubernetes 配置.env 文件API 令牌加密货币钱包等,并将数据发送至攻击者控制的 C2 服务器 (hxxps://whereisitat.lucyatemysuperbox.space/)。数据被压缩为 love.tar.gz 后通过 curl 命令发送。

该软件包总下载量约为 68 万次,其 GitHub 仓库 (xorbitsai/inference) 拥有 9.3K 颗星。仅上述三个恶意版本受到影响;在用户报告可疑行为(例如发现搜索密码的 grep 活动)后,维护者已将这些版本从 PyPI 撤回。目前 PyPI 上的最新安全版本为 2.5.0(发布于 2026 年 4 月 12 日至 13 日左右)。

恶意软件中包含“# hacked by teampcp”标记,这与威胁组织 TeamPCP 先前的攻击行为一致。然而,TeamPCP 于 2026 年 4 月 22 日在 X 平台上公开否认参与此事,暗示这可能是模仿者或“假旗”行动。这符合 TeamPCP 在 2026 年发起的更广泛供应链活动,其目标是通过凭据窃取负载攻击高价值的 PyPI/npm 软件包。

针对受影响用户的紧急行动:

如果您安装或导入了 xinference==2.6.0, 2.6.1, 或 2.6.2请将该主机/环境视为完全被攻破。请立即隔离该环境,轮换所有可从该环境访问的凭据,并审计后续的可疑活动。

Xinference 背景介绍

  • 官方项目:由 XorbitsAI 开发。GitHub 地址:https://github.com/xorbitsai/inference (9.3K stars)。
  • 用途:面向开源 LLM、嵌入模型、图像/音频模型的生产级推理服务器。提供兼容 OpenAI 的 API;支持在云端、本地或笔记本电脑上进行分布式部署。集成了 LangChain、LlamaIndex、Dify 等工具。
  • PyPI 软件包:xinference —— 作者/维护者:Qin Xuye (xprobe)。许可证:Apache 2.0。
  • 正版发布历史:最新安全版本为 2.5.0(2026 年 4 月)。GitHub 上不存在 2.6.x 的标签或发布版本,表明这些恶意上传绕过了源码仓库。

事件时间线

  • 2025 年 10 月起

    与维护者关联的机器人账号 XprobeBot 出现活动;随后被怀疑是未经授权上传 PyPI 包的切入点。

  • 2026 年 4 月初

    发布正版 2.5.0 版本。

  • 2026 年 4 月 22 日左右(具体上传时间未公开)

    恶意版本 2.6.0–2.6.2 通过被盗的 PyPI 凭据上传至 PyPI(GitHub 端无变动)。XprobeBot 在 UTC 时间约 04:08 提交了一次操作,将 base64 混淆的恶意负载添加到了 __init__.py 中。

  • 2026 年 4 月 22 日(上午)

    用户报告可疑行为(例如 GitHub issue #4828 提到发现 grep 扫描密码的操作)。

  • 2026 年 4 月 22 日

    维护者撤回了这三个版本。JFrog 安全研究团队发布了详细分析。TeamPCP 在 X 上发布声明否认,称其为模仿行为。

  • 2026 年 4 月 22 日至 23 日

    OX Security 等机构发布独立确认报告。目前 PyPI 仅显示 ≤2.5.0 的版本可用。

恶意软件技术分析

该攻击是典型的供应链木马,在导入包时触发(无需单独执行)。

感染向量

  • 恶意代码被注入到 xinference/__init__.py 中。

  • import xinference 时,会存在一个经过高度混淆的 base64 编码负载(第一阶段)。

  • 第一阶段会解码并派生一个分离的子 Python 解释器进程(通过带有 stdin 的 subprocess.Popen),运行第二阶段负载。这种方式可以将恶意软件从父进程中隐匿。

  • 大量使用异常处理、抑制 stdout/stderr 以及清理临时文件以实现隐蔽性。

负载行为(第二阶段收集器)

1.主机画像:运行 hostname; pwd; whoami; uname -a; ip addr; ip route 等命令。

2.机密信息收割(广泛的递归搜索,有限的搜索深度):

  • SSH 密钥(~/.ssh/id_rsa, /etc/ssh/ssh_host_*_key)。
  • 云凭据:~/.aws/credentials, ~/.aws/config, GCP 配置, Kubernetes (~/.kube/config, service-account tokens)。
  • AWS 特有行为:获取 IMDSv2 令牌以及 IAM 角色凭据;尝试调用 Secrets Manager (ListSecrets) 和 SSM (DescribeParameters)。(注:由于存在小 bug,限制了完整机密值的提取)。
  • 包管理器令牌:~/.npmrc, ~/.pypirc, Cargo 凭据。
  • .env 文件、.git-credentials.gitconfig、Docker config.json
  • 数据库配置(.pgpass, Redis, MongoDB, LDAP, Postfix)。
  • 加密货币钱包(比特币、以太坊等)。
  • Shell 历史记录(.bash_history, .zsh_history)、/etc/passwd/etc/shadow、TLS 密钥(.pem, .key)。
  • Slack/Discord webhook,JSON/配置文件中的 API 密钥。

3.数据外泄:所有收集的数据写入标准输出 → 压缩为 love.tar.gz → 通过带有自定义头部 X-QT-SR: 14curl --data-binary 发送到 C2。

哈希值(来源于 JFrog):

  • 恶意 __init__.py: SHA-256 e1e007ce4eab7774785617179d1c01a9381ae83abfd431aae8dba6f82d3ac127

  • 解码后的第一阶段负载: 077d49fa708f498969d7cdffe701eb64675baaa4968ded9bd97a4936dd56c21c

  • 解码后的第二阶段负载: fe17e2ea4012d07d90ecb7793c1b0593a6138d25a9393192263e751660ec3cd0

与此前 TeamPCP 的一些样本不同,该样本没有持久化机制。其重点是快速、一次性地窃取数据。

归因与更广泛背景

  • TeamPCP 特征:包含明确的“# hacked by teampcp”标记,使用了类似的 base64 + subprocess 技术,以及在 2026 年早期攻击中见过的 C2 外泄模式(如 litellm 1.82.7/1.82.8telnyx 4.87.1/4.87.2)。
  • 否认声明:TeamPCP 的 X 账号 (@pcpcats) 明确否认负有责任,称其为模仿者并表示愿意调查。JFrog 已更新其博客以记录此声明。
  • 可能路径:极有可能是 PyPI 账号被盗 (XprobeBot),而非 GitHub 被攻破。这与 TeamPCP 使用窃取的 CI/CD 或维护者凭据的历史一致。
  • 活动背景:这是 2026 年针对开发工具、AI 代理和基础设施 SDK 的供应链攻击浪潮的一部分。之前的事件也涉及类似的凭据窃取,目标是高权限环境。

影响

  • 规模:虽然三个恶意版本在线时间较短,但该包总体下载量巨大。在受影响窗口期内自动更新或全新安装的任何 CI/CD 流水线、AI 推理服务器或开发机都处于风险之中。
  • 目标画像:运行自托管推理的 AI/ML 团队(这些环境通常持有高价值云凭据、K8s 令牌和模型服务环境)。
  • 潜在损害:完全的凭据泄露可能导致横向移动、数据外泄、加密货币被盗或勒索软件攻击。AWS 特有的逻辑显示了针对性的后期利用意图。

维护者与社区响应

  • 维护者 (Qin Xuye / XorbitsAI):在 GitHub 收到 issue 报告后迅速撤回了相关版本。目前 GitHub 仓库尚未发布置顶的公开声明,但暗示已进行内部调查。
  • JFrog 安全研究:当日发布了全面的技术分析,并将其加入 Xray (XRAY-96896)。
  • OX Security:独立确认了此事,强调了机器人账号被盗的问题,并提供了修复建议。
  • PyPI:已移除相关版本;并提供了恶意软件举报链接。

修复与建议

如果您可能受到影响(根据 JFrog/OX 的建议):

  1. 立即隔离受影响的主机。
  2. 轮换所有凭据:SSH 密钥、所有云平台 IAM 凭据 (AWS/GCP/Azure)、K8s 令牌、Docker/PyPI/npm 令牌、数据库密码、.env机密、钱包、TLS 密钥等。
  3. 审计:CloudTrail、K8s 日志、Shell 历史、认证日志、Git 活动。封禁 C2 域名。
  4. 降级:运行 pip install "xinference<=2.5.0"< code="">,并在 requirements.txtpyproject.toml锁定版本。
  5. 长期防护:
    • 在 PyPI、GitHub 和所有维护者账号上启用双重认证 (2FA/MFA)。

    • 使用依赖锁定和 SBOM 工具(如 JFrog Xray,具有漏洞扫描功能的 Dependabot)。

    • 使用能检测这些 IOC(失陷指标)的工具扫描环境。

    • 在 CI/CD 中优先使用锁定的、经过验证的包源或镜像。

针对 PyPI 普通用户的建议:此次事件(以及之前的“Revival Hijack”技术)凸显了已删除/重新注册软件包及维护者账号被盗的风险。

这是一个快速演变的事件。请关注官方 GitHub 仓库 (xorbitsai/inference) 和 PyPI 以获取维护者的进一步更新。组织机构应将此视为 AI 工具供应链安全的警钟。

资料来源

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

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

声明:本文来自奇安信威胁情报中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。