乐于分享
好东西不私藏

会员风采 | AI投毒情报预警:Xinference国产推理框架遭受供应链窃密后门投毒

会员风采 | AI投毒情报预警:Xinference国产推理框架遭受供应链窃密后门投毒

AI风险情报概述

Summary

北京时间4月22日16点悬镜AI安全情报中心在Pypi官方仓库中监测到国产热门开源AI模型推理框架 Xinference 短时间内连续发布2.6.0、2.6.1及2.6.2三个版本更新,并且在这三个新版本框架源码中都检出混淆代码及高风险恶意行为。在混淆恶意代码中发现 “hacked by teampcp” 相关标记,目前猜测项目维护者 Pypi token 泄露导致Pypi发布权限疑似被 TeamPCP 组织接管而引发又一起针对AI数字供应链投毒事件。TeamPCP组织上个月已针对 PyPI 的 litellm、telnyx以及NPM、GitHub 等多个主流开源生态系统实施过类似供应链攻击。

Xinference 框架主页(投毒版本2.6.2、2.6.1及2.6.0)

Xinference(全称 Xorbits Inference) 是一个国产开源、Python开发的通用大模型分布式推理/服务框架,用于一键部署、管理、调用开源AI模型,提供完整 Python SDK、命令行、Web UI、OpenAI 兼容 API。截至目前,Xinference开源推理框架在Pypi官方仓库总下载量超过68+万次。

Xinference 官网

此次针对xinference框架的代码投毒发生在Pypi仓库,xinference github 项目https://github.com/xinqiyang/xinference)并未受到影响,攻击者主要通过xinference/__init__.py模块文件中植入base64编码的恶意代码。开发者一旦安装加载受影响的xinference库(import  xinference)或启动xinference cli即静默触发恶意代码。第一阶段payload创建临时目录,注入第二阶段内嵌编码的收集器,通过子进程在后台执行并隐藏输出;第二阶段收集器对目标主机进行全面信息侦察,窃取SSH密钥、Git凭证、AWS密钥、Kubernetes配置、Docker认证信息、包管理器令牌、环境变量文件(.env)、数据库配置、VPN凭据、TLS私钥、加密货币钱包等敏感数据,并外传至攻击者控制的C2服务器。

针对此次突发投毒事件,悬镜安全已于第一时间将本次AI供应链投毒相关技术细节向XSBOM情报订阅用户推送预警。

组件名

投毒版本
发布时间

xinference

2.6.2; 2.6.1; 2.6.0 

2026.04.22

供应链投毒分析

Poisoning Analysis

1

恶意代码植入  

以 xinference 2.6.0版本为例,攻击者在模块入口文件xinference/__init__.py尾部植入多阶段编码的恶意代码,如下图所示:

投毒文件代码比对

恶意代码经过一轮base64解码后直接传入 subprocess.Popen 执行,如下图所示:

第一阶段恶意代码
第一阶段恶意代码解码后的如下所示,同样内嵌了base64编码的第二阶段恶意代码。

第二阶段恶意代码

第二阶段恶意代码具体功能拆解如下:

  • 创建临时目录与文件(tempfile.TemporaryDirectory() → collected 文件)

  • 通过 subprocess.run() 启动 Python 子进程执行第二阶段恶意python代码,标准输出重定向到 collected文件

  • 若采集结果文件存在且非空,将其打包为 love.tar.gz

  • 使用curl 静默POST 请求,将压缩包以二进制形式上传到攻击者服务器

2

敏感信息采集   

第二阶段内嵌的恶意代码主要通过walk/emit/run等核心函数,系统性采集以下几类敏感数据:

  • 身份认证凭证:SSH 密钥(id_rsa/authorized_keys)、云服务凭证(AWS/Google Cloud/Azure/K8s)、容器凭证(Docker/kaniko)、数据库密码(.my.cnf/.pgpass)、版本控制凭证(.git-credentials)等;

  • 环境变量配置:各类.env文件、/etc/environment、云服务环境变量(AWS_/KUBE_/GOOGLE_等);

  • 系统与网络信息:主机名、IP、用户信息、/etc/passwd、/etc/shadow(系统账号密码)、命令历史(.bash_history)、日志文件(auth.log/secure);

  • 加密货币相关:比特币 / 以太坊等加密货币钱包配置、密钥文件;

  • 云服务信息采集:通过 AWS IMDS 元数据服务获取临时凭证,调用 AWS SecretsManager/SSM 接口读取更多云内敏感数据。

各类身份凭证数据收集

加密货币数据收集

3

数据外传  

最终收集的敏感数据会被打包为tar文件: love.tar.gz ,并调用curl系统命令将压缩包POST 到攻击者服务器:https://whereisitat.lucyatemysuperbox.space,完成数据外传。

采集数据外传

5

IoC 数据  

此次针对 Xinference 供应链投毒涉及的恶意IoC数据如下表所示:

排查方式

Investigation Method

  1. 使用pip show xinference 查询是否已经安装存在投毒版本(2.6.2;2.6.1;2.6.0)的组件,如果已安装请立即使用 pip install xinference==2.5.0 -y 回滚到安全版本

  2. 监控恶意域名 whereisitat.lucyatemysuperbox.space 的出站流量或 DNS 查询,将恶意域名及IP加入网络黑名单

  3. 审核系统日志中是否出现 169.254.169.254、169.254.170.2 请求(IMDS/容器凭据)

  4. 排查 curl 命令的异常执行记录,尤其是带有 X-QT-SR: 14 请求头

  5. 根据本报告提供的IoC对项目文件进行哈希匹配,若命中则立即清除相关恶意文件,并更换所有暴露的私钥、API Token、数据库凭据(包括 Git、SSH、Kubernetes等),并对云端 Secrets 轮换

  6. 使用悬镜开源工具 OpenSCA-cli将受影响的组件包按如下示例保存为db.json文件,并在opensca配置文件中指定db.json文件路径后,直接执行扫描命令(opensca-cli -path ${project_path}),即可快速获知您的项目是否受到投毒包影响

[     {         "product": "xinference",         "version": "[2.6.2, 2.6.1, 2.6.0]",         "language": "Python",         "id": "XMIRROR-MAL45-E3B30934",         "description": "热门开源AI模型推理框架xinference遭受供应链投毒开展窃密后门攻击",         "release_date": "2026-04-22"     }]

7. 快速排查脚本

#!/bin/bash# 功能:检查是否安装 xinference 2.6.0 / 2.6.1 / 2.6.2 恶意版本# 用法:./check_xinference_ioc.sh# 定义需要拦截的版本MALICIOUS_VERSIONS=("2.6.0" "2.6.1" "2.6.2")# 查询已安装的 xinference 版本(兼容 pip / pip3)INSTALLED=$(pip3 show xinference 2>/dev/null | grep ^Version: | awk '{print $2}')if [ -z "$INSTALLED" ]; then    INSTALLED=$(pip show xinference 2>/dev/null | grep ^Version: | awk '{print $2}')fi# 未安装则直接退出if [ -z "$INSTALLED" ]; then    echo "xinference 未安装"    exit 0fi# 匹配恶意版本for v in "${MALICIOUS_VERSIONS[@]}"do    if [ "$INSTALLED" = "$v" ]; then        echo -e "\033[31mCompromised!\033[0m"        echo "已安装恶意版本 xinference $INSTALLED"        exit 1    fidone# 安全版本echo "xinference 版本安全:$INSTALLED"
#!/bin/bash# 功能:递归扫描指定目录,计算文件MD5,匹配恶意IOC,命中则告警# 用法:sudo ./check_xinference_md5_ioc.sh 目标扫描目录 (如 /tmp /root /home)# 定义恶意MD5 IOC列表MALICIOUS_MD5=("971670c10eff28339a085ca50a600e35""8673c50ccff8e2acc8d3c31463c36490""9b3257e45b27a6bbe4e240e41a3a306f""67de6bf436257442e95efa9fab159e10""484067fd6232f7cdd7b664b33857fc2c""fe407adc7d14ab0ba6f415914fbf7959""3ee893ae46530b92e0d26435fb979d82""e291734d46c313a23d676681499f8846""c6ce4e25f7fe3e3bb1eea2e9052483bf")# 检查是否传入目录参数if [ $# -ne 1 ]; then    echo "用法:$0 <需要扫描的目录>"    echo "示例:$0 /tmp"    exit 1fiSCAN_DIR="$1"# 检查目录是否存在if [ ! -d "$SCAN_DIR" ]; then    echo "错误:目录 $SCAN_DIR 不存在"    exit 1fiecho "============================================="echo "  开始扫描目录:$SCAN_DIR"echo "  递归扫描所有文件,匹配恶意MD5..."echo "============================================="echo# 递归遍历文件 + 计算MD5 + 匹配IOCfind "$SCAN_DIR" -type f | while read -r file; do    # 计算文件MD5    current_md5=$(md5sum "$file" 2>/dev/null | awk '{print $1}')    # 跳过无法读取的文件    if [ -z "$current_md5" ]; then        continue    fi    # 匹配恶意MD5    for malicious in "${MALICIOUS_MD5[@]}"do        if [ "$current_md5" == "$malicious" ]; then            echo -e "\033[31m[!] Compromised! 发现恶意文件:\033[0m"            echo "文件路径:$file"            echo "匹配MD5:$current_md5"            echo "---------------------------------------------"        fi    donedoneecho -e "\n扫描完成!"

近期悬镜安全正式发布的新一代AI原生安全治理平台“问境AIST”已将 AI 供应链安全情报纳入整体治理框架,当外部出现针对特定 AI 框架、模型组件或数据链路的 0Day 攻击与投毒事件时,AIST平台能够根据 AI-BOM 快速识别受影响范围,定位关联资产与代码链路,并为修复和处置提供更具针对性的依据,帮助企业构建起小时级的风险响应闭环。