攻防实战复盘
1小时绕过:供应链投毒实战复盘
2026年06月09日 · 周二
红蓝对抗 高级
场景:某金融科技公司,2026年6月9日,安全运营中心监测到内部代码仓库GitLab出现异常流量,疑似存在未授权访问。攻击者利用第三方开源组件供应链投毒,仅用1小时便绕过了所有Skill市场的安全扫描。
攻击 / 事件时间线
1
初始访问:供应链投毒
攻击者首先瞄准了该公司内部广泛使用的log4j-scan-fix开源组件(虚构),该组件托管在知名Skill市场。攻击者克隆了官方仓库,在代码中植入后门,利用base64编码的Python脚本,通过requests库向外发送DNS查询,将受害主机信息回传至攻击者控制的C2服务器。由于后门代码被巧妙伪装成日志格式化函数,且未触发Skill市场的静态SAST扫描规则,成功上架。
log4j-scan-fix(恶意版)base64Python requests
2
执行与持久化
开发人员下载并集成了该恶意组件,在CI/CD流水线中触发构建。后门代码在__init__.py中执行,通过cron任务建立了持久化定时任务,每15分钟向C2发送心跳包,并尝试收集/etc/shadow.env文件中的凭证信息。攻击者使用Mimikatz在构建服务器上抓取明文密码,成功获取了GitLab的Service Account权限。
cronMimikatzC2心跳
3
横向移动与数据窃取
利用GitLab Service Account,攻击者通过SSH在内部网络横向移动,攻击Kubernetes集群的kubelet节点,窃取了kubeconfig文件。随后,攻击者利用kubectl命令创建了恶意Pod,挂载了宿主机的/var/lib/docker目录,将生产数据库中包含用户隐私的MySQL数据表通过gzip压缩后,分段外传至公有云对象存储。整个数据窃取过程持续约40分钟。
SSHkubectlkubeconfiggzip
蓝队视角 · 发现与处置
蓝队通过Sysmon日志监控到异常DNS查询频率,目标域名evil-update.xyz被标记为可疑。SOC分析确认该域名与Cobalt Strike默认Profile匹配。应急响应团队立即通过Osquery全盘扫描,发现/tmp/.systemd-private-xxx目录下的恶意脚本。随后,切断受影响GitLab仓库的写权限,通过YARA规则在CI/CD流水线中阻断该组件,并回滚所有受影响的环境至前一个干净快照。
涉及关键技术 / 工具
供应链投毒绕过SAST扫描Mimikatz凭证窃取Kubernetes Pod逃逸与数据窃取Sysmon DNS日志分析
防护经验总结
  • 1. 建立第三方组件的动态行为分析机制:在CI/CD流水线中集成运行时沙箱(如Firejail),检测组件在构建过程中的异常网络连接与文件操作,而非仅依赖静态扫描。
  • 2. 实施最小权限与网络微隔离:构建服务器和GitLab Service Account应遵循最小权限原则,禁止直接访问生产Kubernetes集群;对Pod和Service设置NetworkPolicy,限制横向移动。
  • 3. 强化凭证生命周期管理:定期轮换GitLab Token和Service Account密码,启用多因素认证(MFA);在构建环境中禁用明文密码缓存,使用Vault等服务动态分发凭证。
#供应链攻击#红蓝对抗#Kubernetes安全#CI/CD安全
数据安全早知道 · 攻防实战专栏
⚠️ 免责声明
本文内容源自公开披露的安全事件或高仿真模拟场景,所有涉及的组织、系统、技术细节均经过脱敏处理,仅供安全学习与交流参考,不构成任何技术指导或合规建议。
数安早知道
🔗 数据安全与信息安全知识库 datasafe.website
— 点击上方链接访问知识库,获取更多安全资讯 —