文章总结: 悬镜安全情报中心监测到国产AI推理框架Xinference在PyPI发布的2.6.0-2.6.2版本遭供应链投毒,攻击者通过泄露维护者凭证植入多阶段恶意代码,可窃取SSH密钥、云凭证、加密货币钱包等敏感数据并外传至C2服务器。报告提供了恶意代码分析、IoC指标及排查脚本,建议用户立即回滚至2.5.0安全版本并更换泄露凭证。 综合评分: 85 文章分类: 供应链安全,恶意软件,漏洞预警,安全工具,AI安全
AI投毒情报预警 | Xinference国产推理框架遭受供应链窃密后门投毒
原创
悬镜安全情报中心 悬镜安全情报中心
悬镜安全
2026年4月23日 12:03 上海
在小说阅读器读本章
去阅读
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
- 使用pip show xinference 查询是否已经安装存在投毒版本(2.6.2;2.6.1;2.6.0)的组件,如果已安装请立即使用 pip install xinference==2.5.0 -y 回滚到安全版本;
- 监控恶意域名 whereisitat.lucyatemysuperbox.space 的出站流量或 DNS 查询,将恶意域名及IP加入网络黑名单;
- 审核系统日志中是否出现 169.254.169.254、169.254.170.2 请求(IMDS/容器凭据);
- 排查 curl 命令的异常执行记录,尤其是带有 X-QT-SR: 14 请求头;
- 根据本报告提供的IoC对项目文件进行哈希匹配,若命中则立即清除相关恶意文件,并更换所有暴露的私钥、API Token、数据库凭据(包括 Git、SSH、Kubernetes等),并对云端 Secrets 轮换;
- 使用悬镜开源工具 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" }]
- 快速排查脚本
#!/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 1fi
SCAN_DIR="$1"
# 检查目录是否存在if [ ! -d "$SCAN_DIR" ]; then echo "错误:目录 $SCAN_DIR 不存在" exit 1fi
echo "============================================="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 donedone
echo -e "\n扫描完成!"
近期悬镜安全正式发布的新一代AI原生安全治理平台“问境AIST”已将 AI 供应链安全情报纳入整体治理框架,当外部出现针对特定 AI 框架、模型组件或数据链路的 0Day 攻击与投毒事件时,AIST平台能够根据 AI-BOM 快速识别受影响范围,定位关联资产与代码链路,并为修复和处置提供更具针对性的依据,帮助企业构建起小时级的风险响应闭环。
+
部分标杆用户
+
推荐阅读
关于“悬镜安全”
悬镜安全,起源于北京大学网络安全技术研究团队“XMIRROR”。作为新一代 AI 数字供应链安全开拓者,首创基于“AI 原生安全+多模态AIST+ DevSecOps敏捷安全+多模态 SCA+AI 供应链安全情报预警”技术的新一代 AI 数字供应链安全治理体系,以 AI 治理 AI,从源头治理大模型开发、训练、部署到智能体运营等关键环节面临的 AI 原生安全风险,帮助企业用户构筑一套从传统软件供应链到 AI 原生供应链全生命周期的内生安全治理体系,持续守护新一代 AI 数字供应链安全。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:悬镜安全 悬镜安全情报中心 悬镜安全情报中心《AI投毒情报预警 | Xinference国产推理框架遭受供应链窃密后门投毒》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论