首页 > 其他分享 >供应链投毒预警 | 恶意Py包仿冒tensorflow AI框架实施后门投毒攻击

供应链投毒预警 | 恶意Py包仿冒tensorflow AI框架实施后门投毒攻击

时间:2024-01-22 17:46:18浏览次数:28  
标签:AI Py 恶意 组件 tensrflwo 开发者 pip 投毒

概述

本周(2024年01月15号),悬镜供应链安全实验室在Pypi官方仓库(https://pypi.org/)中捕获1起Py包投毒事件,投毒者利用包名错误拼写(typo-squatting)的攻击方式来仿冒谷歌开源的tensorflow机器/深度学习框架,投毒攻击目标锁定AI开发者。

截至目前,投毒者在Pypi仓库共发布5个不同版本的恶意包。python开发者一旦通过pip命令下载或安装该投毒包(tensrflwo),则会触发执行Py组件包中的恶意后门代码,并最终导致开发者系统被攻击者远程控制。

恶意Py包tensrflwo在Pypi官方仓库上的总下载量为870次。

该恶意Py包已从Pypi官方仓库下架,但通过国内主流Pypi镜像源(清华大学、腾讯云等)依旧可正常下载、安装该恶意包,因此潜在的受害者数量将会更多,尤其对于国内广大使用tensorflow深度学习框架的AI开发者来说,仍存在被恶意投毒攻击的风险。

投毒分析

攻击流程

Py投毒包tensrflwo尝试利用包名错误拼写 (typo-squatting)来攻击使用tensorflow框架的AI开发者。tensrflwo安装包setup.py中定义的taint2()函数通过创建子进程将受害者系统shell反连到投毒者控制的服务器上(59.110.111.85:8088),最终投毒者能够通过反弹的shell实现对受害者系统进行远程控制。

一旦开发者通过命令pip download tensrflwo下载py包或者pip install tensrflwo安装py包时,投毒包tensrflwo中的恶意函数tain2()会立即被调用执行,开发者系统将被投毒者远程控制。

攻击复现

以清华大学和腾讯云pypi镜像源为例,通过以下pip命令模拟开发者安装恶意包tensrflwo 。

​pip install tensrflwo -i  https:​//pypi.tuna.tsinghua.edu.cn/simple/​
​pip install tensrflwo -i https://mirrors.cloud.tencent.com/pypi/simple​

同样,在本地环境中模拟投毒攻击者的服务器IP (59.110.111.85),并监听TCP 8088端口,当受害者执行pip install tensrflwo 操作时,攻击者可获取受害者系统shell权限,并可对目标系统进行远程控制。

IoC数据

此次投毒组件包涉及的恶意文件和恶意链接IoC数据如下所示:

排查方式

截至目前,该Python恶意组件包可正常从国内主流Pypi镜像源下载安装,国内Python开发者仍面临被投毒攻击的安全风险,开发者需提高安全防护意识,可自行根据IoC和恶意包信息通过以下方式进行快速排查是否安装或引用恶意组件包。开发者可通过命令pip show tensrflwo快速排查是否误安装或引用该恶意py组件包,若命令运行结果如下图所示,则代表系统已被安装该恶意组件,请尽快通过命令pip uninstall tensrflwo -y 进行卸载,此外还需关闭系统网络并排查系统是否存在异常进程。

此外,开发者也可使用OpenSCA-cli,将受影响的组件包按如下示例保存为db.json文件(可参考总结中提到的组件包信息按格式增减),直接执行扫描命令(opensca-cli -db db.json -path ${project_path}),即可快速获知您的项目是否受到投毒包影响。

[
  {
    "product": "tensrflwo",
    "version": "[2.5.1,2.5.1]|[2.7,2.7]|[2.7.1,2.7.1]|[2.8,2.8]|[2.9,2.9]",
    "language": "python",
    "id": " XMIRROR-MAL45-777DD586",
    "description": "恶意Python组件包投毒,仿冒tensorflow AI框架。",
    "release_date": "2024-01-15"
  }
]

悬镜供应链安全情报中心将持续监测全网主流开源软件仓库,对潜在风险的开源组件包进行动态跟踪和溯源,实现快速捕获开源组件投毒攻击事件并第一时间提供精准安全预警。

标签:AI,Py,恶意,组件,tensrflwo,开发者,pip,投毒
From: https://www.cnblogs.com/openscacommunity/p/17980565

相关文章

  • 将jupyter notebook通过nginx代理
    最近要学习数据分析,就需要一个jupyternotebook环境,由于不想在公司和家里的环境来回切换,正好有台公网服务器,就将jupyternotebook部署到服务器上,然后通过nginx代理处理。期间踩了好多坑,现记录如下。一、安装jupyternotebookpip3installjupyter二、配置jupyter1、配置......
  • 基于python3 flet库的证书查看工具
    前言基于python3flet库实现了证书信息的提取,留作自用,如有错误欢迎指正。正文程序架构:主程序main.py证书解析程序certHandle.py运行pythonmain.pymain.py#-*-coding:utf-8-*-importbase64importtracebackimportjsonimportfletasftfromcertHandleimp......
  • Python web crawler(4)图片的下载
    下载图片(单线程)importos.pathimportrequests#异步加载数据的接口url=''headers={'User-Agent':'****************************','Cookie':'********************************','Referer':'......
  • useeffect发起请求,以及内部使用 async和await
    一定要执行一次具名函数+函数执行useEffect(()=>{asyncfunctionfetchData(){try{constresponse=awaitfetch('https://api.example.com/data');constdata=awaitresponse.json();//处理获取到的数据c......
  • 国产的AI基础设施与国外的差距?仅以grpc与prpc做比较
    搞AI,基础设施包括软件、硬件以及相关生态,多方面,这里只片面的取一个例子来说明国内外在AI基础设施上的区别,注意,这里只是片面截取。高性能的rpc框架是搞AI的一个基础依赖软件,当然,国外也有与之可以替代的mpi框架,不过这两个都是老美的。对于mpi,老美一直是开源的,国内也没有任何一家企......
  • 【Python进阶】Python设计模式
    设计模式介绍什么是设计模式设计模式是面对各种问题进行提炼和抽象而形成的解决方案。这些设计方案是前人不断试验,考虑了封装性、复用性、效率、可修改、可移植等各种因素的高度总结。它不限于一种特定的语言,它是一种解决问题的思想和方法为什么要用设计模式按照设计模式编写......
  • Windows 10系统VirtualBox无法进入系统,日志报错“HM: HMR3Init: Attempting fall back
    在Windows10上使用 Linux 子系统的时候,无法成功启用。根据官方文档 旧版WSL的手动安装步骤 之后,依旧没效果,反倒是VirtualBox无法进入系统了。观察日志,报错信息如下:IntelCPUAMDCPU 解决方案如下:1.使用管理员启动命令行.2.执行如下命令: 某些电脑需要额外执行......
  • Rust 泛型、Trait 和生命周期
    本文在原文基础上有删减,原文参考泛型、Trait和生命周期。目录泛型数据类型在函数定义中使用泛型结构体定义中的泛型枚举定义中的泛型方法定义中的泛型泛型代码的性能Trait:定义共同行为定义trait为类型实现trait默认实现trait作为参数TraitBound语法通过+指定多个traitb......
  • 如何查看华为的大模型(AI模型),华为官方的mindspore下的大模型???
    由于华为官方的mindspore网站的设计比较反人性话,操作起来十分的复杂,因此如果想要在华为的官方网站上查找这个华为的官方大模型还是比较困难的,为此直接给出链接地址。PS.要注意,华为的AI官方网站经常性的进行修改,所以这个链接只能保证一段时间内可以使用,如果未来网站升级修改,就......
  • python之for循环
    for循环                              1.RANGE循环range(start,end):默认取start值,不取end值,如果没有start值,则从0开始1#!/usr/bin/python2#简单循环3foriinrange(5):4print(i)ViewCode2.字符串......