2026年6月18日,国家安全部紧急发布安全提示:近期集中爆发多起供应链投毒攻击事件,涉及开源软件仓库和商用工具两大核心供应链场景。攻击者通过劫持开发者账号、篡改开源代码、污染软件安装包,将恶意程序植入海量软件,随正常分发渠道扩散至无数企业终端。
同一天,安全玻璃盒供应链安全威胁情报中心监测发现,一名攻击者接管了Mastra维护者账号,在27分钟内重新发布整个@mastra目录下的116个包 ,每个包都添加了指向伪造组件easy-day-js的隐藏链接。微软威胁情报团队将其归因于朝鲜APT组织Sapphire Sleet,确认超过140个npm包被投毒。Mastra组件每月下载量超2800万次,潜在受影响终端数以百万计。

国家安全部通报的源头危害明确指出 :被污染的组件会"主动连接境外服务器,接收远程指令 "。这就是供应链投毒攻击的致命逻辑------攻击者写了一个"后门程序",并把它埋进了软件依赖的深处。安装时它会触发安装后钩子(postinstall hook),禁用TLS证书验证,从攻击者控制的原生IP地址获取第二阶段恶意负载,作为隐藏子进程运行。
理解这条攻击链,就能明白为什么IP查询工具是阻断这类攻击的关键一环:只要后门程序要接收指令、回传数据,就必须进行网络"回连",而每次"回连",就会暴露一个目标IP。攻击者无论用多复杂的投毒手法,最终都得让恶意代码"回连"到自己的服务器。IP数据云就是专门用来识别、定位和阻断这个"回连"过程的关键一环。
一、供应链投毒的完整攻击链
本次Mastra攻击事件暴露了供应链投毒的典型链条:
- 账号劫持 :攻击者通过钓鱼获取维护者账号
ehindero的发布权限 - 伪造组件 :提前发布
easy-day-js------对流行工具dayjs的"拼写劫持"仿冒品 - 批量投毒 :用劫持账号批量发布140+个包的新版本,将每个注入
easy-day-js依赖 - 自动扩散 :开发者执行
npm install时,自动拉取被投毒的版本,恶意代码落地执行 - 回连服务器 :安装后钩子被触发,向攻击者的原生IP地址发起外连,下载第二阶段恶意负载
第5步,是整个攻击链条中容易被识别的环节。 无论恶意代码藏得多深,它"回连"C2服务器的网络请求必须经过防火墙、网关或EDR,会在日志中留下明确的IP记录。IP查询工具的价值正在于此:从海量外连请求中精准识别出那些指向数据中心、被标记为高风险、ASN归属异常的"回连"目标。

二、回连服务器IP的典型特征
Mastra事件中,easy-day-js的安装后钩子禁用了TLS证书验证,直接从攻击者控制的原生IP地址获取第二阶段恶意负载。这类C2服务器IP通常具备以下特征:
|-------|--------------|------------------|
| 特征维度 | 典型表现 | IP离线库能提供的判断 |
| 网络类型 | 云服务商/IDC机房出口 | net_type = 数据中心 |
| 风险评分 | 历史高风险行为记录 | risk_score > 70 |
| ASN归属 | 云厂商或IDC服务商 | asn、asn_org字段 |
| 地理位置 | 多为境外节点 | country、city字段 |
IP离线库的核心逻辑:不是追问"这个IP曾经干过什么坏事",而是回答"这个IP天生属于什么类型"------是普通家庭的住宅宽带,还是攻击者常用的数据中心云主机?这一定性在"回连"发生时就能完成,为后续处置争取了宝贵时间。
三、三步法:用IP离线库识别回连IP定位后门
第一步:从网络日志中提取可疑回连IP
在被投毒的内网终端或CI/CD环境中,从防火墙、EDR或网络流量分析系统导出可疑时间窗口内的外连IP列表。重点关注:
- 安装被投毒组件后新出现的陌生外连
- 指向数据中心IP段的外连请求
- 非工作时间或非业务端口的外连
第二步:用IP离线库批量查询回连目标画像
使用离线库批量查询可疑IP的归属地、ASN和网络类型,快速筛选出C2候选:
python
import ipdatacloud
from collections import Counter
# 加载IP数据云离线库(本地部署,微秒级查询)
ip_lib = ipdatacloud.OfflineIPLib('/data/ipdb/ip_data_cloud.xdb')
def analyze_c2_candidates(ip_list):
results = [ ]
asn_counter = Counter()
for ip in ip_list:
info = ip_lib.query(ip)
results.append({
'ip': ip,
'net_type': info.get('net_type'), # 数据中心/住宅/移动
'asn': info.get('asn'),
'asn_org': info.get('asn_org'),
'risk_score': info.get('risk_score', 0)
})
asn_counter[info.get('asn')] += 1
return results, asn_counter
suspected_ips = ['45.33.22.11', '103.233.147.1']
analysis, asn_counter = analyze_c2_candidates(suspected_ips)
c2_candidates = [r for r in analysis if r['net_type'] == '数据中心' and r['risk_score'] > 70]
print(f"发现 {len(c2_candidates)} 个可疑C2服务器")
第三步:ASN聚类与批量封堵
攻击者常在同一ASN下部署多个C2服务器。将可疑IP按ASN聚合,若多个IP属于同一ASN且均为数据中心类型,可判断该ASN被攻击者用于托管C2基础设施。云防火墙大多支持ASN级别的访问控制规则,一次配置即可批量封堵整个ASN下的整个回连IP。

四、总结
供应链投毒攻击的本质,是在软件依赖链中埋入"回连"后门,无论攻击者如何隐藏恶意代码,最终都需要通过网络请求完成"回连"动作。安全团队可以毫秒级完成"回连"目标的识别与定性------数据中心IP直接标记高危,ASN异常直接溯源。