news 2026/7/3 18:27:23

CVE-2023-38633漏洞剖析:librsvg目录遍历与文件泄露原理及防御

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CVE-2023-38633漏洞剖析:librsvg目录遍历与文件泄露原理及防御

1. 项目概述:一次由SVG引发的文件泄露之旅

最近在分析一些历史漏洞案例时,我又重新审视了CVE-2023-38633。这个编号你可能不熟悉,但它的本质——“librsvg的URL解码器目录遍历漏洞”——却是一个相当经典的案例。简单来说,它允许攻击者通过一个精心构造的SVG图片文件,让服务器或本地应用在渲染图片时,意外地读取并返回本不该被访问的系统文件,比如/etc/passwd。听起来是不是有点像“指鹿为马”,让图片查看器去干文件读取器的活儿?这正是目录遍历漏洞的典型危害。

这个漏洞影响的是librsvg 2.56.3之前的所有版本。librsvg是什么?它是GNOME项目下的一个库,专门用来渲染SVG(可缩放矢量图形)格式的图片。很多Linux桌面环境、图像查看器,甚至一些Web服务端(如果它们需要动态处理SVG)都会用到它。所以,这个漏洞的潜在影响面其实挺广的,既可能被用于本地提权(比如诱骗用户打开一个恶意SVG文件),也可能在远程场景下(比如一个允许用户上传SVG作为头像或图床的Web应用)造成敏感文件泄露。

为什么我要专门聊这个看起来已经“过时”的漏洞?首先,漏洞原理本身具有教学意义,它涉及URL解码、XML外部实体(XXE)的变种利用以及文件系统路径解析等多个安全知识点。其次,根据我手头的资料和一些扫描报告,直到2025年初,仍有不少系统因为各种原因(例如使用老旧的稳定版发行版)存在未修复的版本,风险并未完全消失。最后,理解这类漏洞,能帮助我们更好地构建安全开发意识,尤其是在处理用户可控的、涉及文件操作的输入时。

2. 漏洞核心原理深度拆解

要理解CVE-2023-38633,我们不能只停留在“目录遍历”这四个字上,得把它掰开揉碎了看。这涉及到librsvg处理SVG文件中一个特定元素的方式。

2.1 祸起萧墙:<xi:include>元素与href属性

SVG是基于XML的格式。在SVG标准中,有一个来自XInclude规范的<xi:include>元素。这个元素的本意是好的,它允许一个SVG文件在渲染时,动态地包含(include)另一个外部文件的内容。这个外部文件的路径,就是通过href属性来指定的。

例如,一个合法的用法可能是:<xi:include href="logo-fragment.svg"/>,这样在渲染主SVG时,会把logo-fragment.svg的内容合并进来。

问题就出在librsvg对这个href属性值的处理逻辑上。在2.56.3之前的版本中,librsvg会对href的值进行URL解码

2.2 关键一击:URL解码的副作用

URL编码(也叫百分号编码)是为了在URL中安全传输特殊字符。比如,空格被编码为%20,斜杠/被编码为%2F,而两个点..可以被编码为%2e%2e

正常情况下,一个试图进行目录遍历的攻击Payload会是这样:href="../../../../etc/passwd"。稍微有点安全意识的应用或Web服务器防火墙(WAF)可能会直接拦截这种明显的路径穿越序列。

但是,如果应用在验证路径之前,先进行了一次URL解码,情况就不同了。攻击者可以提交:href="%2e%2e%2f%2e%2e%2fetc%2fpasswd"。librsvg在处理时,会先将这个字符串解码,还原成../../../../etc/passwd,然后再用这个解码后的路径去访问文件系统。

这里的核心安全缺陷是:输入验证和解析逻辑的顺序错位。安全的做法应该是:先对输入进行规范化(包括解码)和严格验证,确保其符合预期范围(如只允许当前目录下的特定图形文件),然后再进行文件操作。而存在漏洞的版本,则是先执行了“解码”这个可能改变输入语义的操作,却没有对解码后的结果进行充分的有效性重验,或者说,其验证逻辑可以被绕过。

2.3 漏洞利用链的组装

一个完整的利用过程是这样的:

  1. 攻击者构造恶意SVG:创建一个SVG文件,在其中插入<xi:include>元素,并将其href属性设置为经过URL编码的目录遍历路径,指向目标敏感文件(如%2e%2e%2f%2e%2e%2fetc%2fpasswd)。
  2. 诱使目标系统渲染该SVG
    • 本地利用:诱骗用户用存在漏洞的图片查看器(如GNOME图像查看器、Eye of GNOME)打开这个SVG文件。
    • 远程利用:将恶意SVG文件上传到支持SVG预览或处理的Web应用程序(例如,用户资料头像支持SVG格式的社交网站、文档处理服务等)。
  3. 漏洞触发:librsvg在解析SVG时,遇到<xi:include>标签,读取其href属性值。
  4. 问题发生:librsvg对href值进行URL解码,将%2e%2e%2f...还原为../../../../。随后,它尝试打开这个路径指向的文件。
  5. 信息泄露:如果进程有权限读取目标文件(如/etc/passwd),文件内容就会被成功读取。在本地场景,内容可能被忽略或导致应用异常;在远程场景,攻击者可能通过让应用将包含的内容渲染到输出的SVG中(例如作为图像数据),从而间接获取文件内容。

注意:并非所有使用librsvg的应用都会将包含的文件内容输出给攻击者。有些应用可能只是内部处理失败。能否成功泄露文件内容,还取决于调用librsvg的上层应用程序如何处理<xi:include>的包含结果。这增加了漏洞利用的复杂性,但也意味着在特定配置的应用中,风险是切实存在的。

3. 影响范围与严重性分析

CVE-2023-38633被分配了CVSS v3.0基本分数5.5,属于中危(Medium)漏洞。这个评分主要基于以下几个向量:

  • 攻击向量(AV): Local:评分认为攻击更可能发生在本地(需要用户交互打开文件)。
  • 攻击复杂度(AC): Low:利用方式简单直接,有公开的PoC。
  • 权限要求(PR): Low:通常需要用户权限(本地)或普通用户权限(远程上传)。
  • 用户交互(UI): None:无需用户额外交互(除了初始的打开或上传动作)。
  • 影响范围(S): Unchanged:漏洞影响限于当前用户上下文。
  • 机密性影响(C): High:成功利用会导致高机密性信息泄露。
  • 完整性和可用性影响(I/A): None:不影响系统完整性和可用性。

实际影响范围包括:

  1. 操作系统发行版:在漏洞披露时,所有搭载librsvg 2.56.3之前版本的Linux发行版均受影响,如RHEL 8、CentOS 8(在其维护周期结束前)、Ubuntu某些旧版本等。即使是一些长期支持版本,如果官方不提供回溯移植修复,也会持续受影响。
  2. 桌面应用程序:任何使用librsvg渲染SVG的GNOME或GTK应用,如图片查看器(eog)、文档查看器、图形编辑器等。
  3. Web应用程序与服务器:如果服务器端软件使用librsvg来处理用户上传的SVG文件(例如生成缩略图、验证SVG有效性、提取元数据),那么该服务器就可能面临远程文件泄露风险。这比本地利用的危害性更大。
  4. 其他集成环境:任何将librsvg作为依赖来渲染SVG的软件或框架。

一个重要的现实情况是“未修补的漏洞”。从提供的资料来看,一些供应商(如Red Hat对于RHEL 8的某些扩展支持阶段)可能将此漏洞标记为“不会修补”(Won‘t Fix)。这通常发生在该版本已进入生命周期末期(EOL),或者修复需要进行的代码变动过大,可能引入不稳定性。对于系统管理员和开发者来说,这意味著不能单纯依赖官方的系统更新来解决问题,需要采取其他缓解措施。

4. 漏洞复现与环境搭建

为了真正理解一个漏洞,最好的办法就是亲手在可控环境中复现它。下面我将搭建一个简单的测试环境,并演示如何构造攻击载荷。

4.1 测试环境准备

我们首先需要一个存在漏洞的librsvg版本。最方便的方法是使用Docker容器。

# 拉取一个包含旧版本librsvg的Linux发行版镜像,例如Ubuntu 20.04(默认librsvg版本可能较旧) docker pull ubuntu:20.04 # 启动容器并进入 docker run -it --rm --name cve-test ubuntu:20.04 /bin/bash # 进入容器后,更新包列表并安装必要的工具 apt-get update apt-get install -y librsvg2-bin vim curl # rsvg-convert 是librsvg的命令行工具 # 检查librsvg版本 dpkg -l | grep librsvg2 # 输出可能类似:ii librsvg2-2:2.48.9-1ubuntu0.20.04.1 amd64 ... # 2.48.9 远低于 2.56.3,确认存在漏洞。

4.2 构造恶意SVG文件

在容器内,我们创建一个恶意SVG文件exploit.svg

cat > exploit.svg << 'EOF' <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xi="http://www.w3.org/2001/XInclude" width="100" height="100"> <rect width="100" height="100" fill="red"/> <text x="10" y="20">This is a malicious SVG</text> <!-- 尝试包含系统文件 --> <xi:include href="%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd"/> </svg> EOF

Payload解释

  • %2e.的URL编码。
  • %2f/的URL编码。
  • 因此,%2e%2e%2f解码后就是../
  • 我们使用了多级../来尝试穿越到根目录,然后访问etc/passwd文件。

4.3 触发漏洞尝试

我们将使用librsvg自带的命令行工具rsvg-convert来尝试渲染这个SVG文件,并观察其行为。

# 尝试将SVG转换为PNG。如果漏洞被触发,在解析xi:include时可能会尝试读取/etc/passwd。 # 我们同时将标准错误输出重定向到文件,以便查看任何错误或警告信息。 rsvg-convert exploit.svg -o output.png 2> error.log # 检查错误日志 cat error.log

可能的输出结果分析

  1. 直接报错包含文件内容:在某些配置或版本下,错误信息可能直接包含/etc/passwd文件的部分内容,这是最直接的泄露证据。但这种情况不常见。
  2. 权限错误:如果容器内当前用户无权读取/etc/passwd,可能会看到“Permission denied”类错误。这证明了它确实尝试访问了该路径。
  3. 文件未找到错误:如果路径构造不正确(比如..的级数不对),可能会提示“No such file or directory”。你需要根据容器内实际的工作目录调整..的数量。可以使用pwd命令查看当前目录。
  4. 静默失败或图形渲染不完整:工具可能只是无法处理xi:include,生成一个不完整的PNG,没有明显错误。这并不代表漏洞不存在,只是这个具体的工具链没有将包含的内容输出到最终图像。

更直接的测试方法:为了更清晰地观察文件访问行为,我们可以使用系统监控工具strace

# 首先安装strace apt-get install -y strace # 使用strace跟踪rsvg-convert执行时的系统调用,特别是文件打开(openat)操作 strace -e trace=file rsvg-convert exploit.svg -o output.png 2>&1 | grep passwd

如果漏洞存在,你很可能在strace的输出中看到类似以下的记录:

openat(AT_FDCWD, "/etc/passwd", O_RDONLY) = -1 EACCES (Permission denied)

或者,如果权限允许且文件存在,会返回一个成功的文件描述符。这无可辩驳地证明了应用程序试图打开那个穿越目录后的目标文件。

实操心得:在漏洞复现时,straceltrace这类动态跟踪工具是你的好朋友。它们能让你绕过应用程序复杂的内部逻辑,直接从系统调用层面观察其行为,对于验证文件读写、网络连接等操作是否发生至关重要。对于Web应用测试,则可以配合Burp Suite等代理工具,观察HTTP响应中是否意外包含了文件内容。

5. 漏洞修复与缓解措施

理解了漏洞原理和利用方式,修复和防护的思路就清晰了。

5.1 官方修复方案

librsvg在2.56.3版本中修复了此漏洞。修复的核心逻辑是:在解析<xi:include>href属性时,禁止任何形式的目录遍历

具体的代码补丁通常涉及对解析后的路径进行规范化(realpath或类似机制),然后检查规范化后的路径是否仍然位于允许的目录范围内(例如,仅限于当前SVG文件所在目录或其子目录)。同时,修复也确保在路径验证完成之前,不会对输入进行可能改变其语义的解码操作。

升级是最根本的解决方案。对于个人用户或系统管理员:

# 对于基于Debian/Ubuntu的系统 sudo apt update sudo apt upgrade librsvg2-2 librsvg2-bin # 对于基于RHEL/CentOS/Fedora的系统 sudo yum update librsvg2 # 或使用 dnf

升级后,务必确认版本号至少为2.56.3。

5.2 针对“无法升级”情况的缓解措施

面对供应商不提供补丁的旧系统(例如已EOL的RHEL 8),我们需要采取变通方案:

  1. 禁用或限制SVG文件处理

    • 对于关键服务器:如果服务器上的应用不需要处理SVG,可以考虑在应用层或Web服务器(如Nginx, Apache)配置中,直接拦截或拒绝.svg后缀的请求。
    • 配置示例(Nginx)
      location ~ \.svg$ { return 403; # 或返回一个默认的安全图片 # 或者使用 `svg_content_filter` 模块对内容进行过滤(如果存在)。 }
  2. 实施严格的输入验证与净化

    • 对于必须处理用户上传SVG的Web应用:绝不能信任用户提交的任何文件内容。应在服务器端对上传的SVG文件进行“净化”。
    • 使用专门的净化库:例如,对于Python环境,可以使用defusedxml库来安全地解析XML,它可以禁用外部实体引用,从根本上防止XXE及其变种攻击。
    • 自定义过滤:在应用逻辑中,在将SVG交给librsvg或其他库处理之前,先使用XML解析器遍历DOM,查找并移除所有<xi:include>元素,或者严格校验其href属性,只允许相对路径且不包含..序列。
  3. 沙箱与权限最小化

    • 运行隔离:将处理用户上传文件的进程放在低权限的容器或沙箱环境中运行,即使该进程被利用来读取文件,也只能访问沙箱内有限的、非敏感的文件系统。
    • 文件系统权限:确保运行Web服务或相关应用的操作系统用户权限尽可能低,没有读取/etc/passwd/etc/shadow、应用源代码、配置文件等敏感资源的权限。
  4. 安全监控与入侵检测

    • 在服务器上部署HIDS(主机入侵检测系统),监控进程对敏感文件(如/etc/passwd/etc/shadow/proc/self/environ等)的异常读取行为。
    • 检查Web服务器日志,寻找对SVG文件的访问请求中是否包含异常的URL编码字符序列(如大量的%2e%2e%2f)。

5.3 开发者安全编码启示

这个漏洞给所有开发者上了一课:处理用户提供的、用于文件系统操作的输入时,必须极度谨慎。

  • 原则:白名单优于黑名单:不要试图过滤掉../等危险字符,因为编码、双编码、Unicode混淆等方式都可能绕过。应该定义明确的、安全的允许字符集(白名单),或者更好的是,定义允许访问的基目录,并将所有用户输入解析为相对于此基目录的路径,然后使用realpath等函数解析绝对路径,并确保解析结果仍然位于基目录之下。
  • 规范化后再验证:所有输入应先进行规范化(包括URL解码、UTF-8解码、路径解析等),得到一个“标准形式”,然后对这个标准形式进行严格的安全检查。
  • 使用安全库:尽可能使用社区维护的、经过安全审计的库来处理复杂格式(如XML、SVG、ZIP归档等),并及时更新这些库。

6. 关联漏洞分析与横向对比

CVE-2023-38633并非孤例。目录遍历(Path Traversal)或因其导致的文件泄露,是安全领域一个经久不衰的漏洞类型。结合你提供的热词,我们可以做一次横向对比。

6.1 与 CVE-2015-5531 (Elasticsearch 目录遍历) 对比

CVE-2015-5531:影响Elasticsearch 1.6.0及之前版本。攻击者可以通过快照API,指定一个包含目录遍历序列(如../)的路径名称,将快照存储到Elasticsearch数据目录之外的位置,后续可能实现任意文件读取。

对比分析

  • 相似点:核心都是利用应用程序未对用户输入的路径进行充分校验,允许..序列跳出预期目录。
  • 不同点
    • 触发点:CVE-2023-38633通过SVG文件内容中的XML属性触发;CVE-2015-5531通过Elasticsearch的HTTP API参数触发。
    • 利用复杂度:Elasticsearch的漏洞利用需要与多个API交互(创建仓库、创建快照),步骤稍多;librsvg的漏洞利用只需诱使目标渲染一个文件。
    • 影响:Elasticsearch漏洞通常影响暴露在公网的数据搜索服务,可能导致大规模数据泄露;librsvg漏洞影响范围更分散,从桌面应用到Web后端都有可能。
  • 根本原因共性:两者都违反了“对用户输入进行不可信处理”的安全原则。Elasticsearch相信了用户提供的文件系统路径,librsvg相信了用户提供的XML属性值。

6.2 与 “glib 递归目录遍历” 类问题的关联

“glib递归目录遍历”可能指的是在使用GLib库(GNOME的基础库,librsvg也依赖它)中的文件遍历函数(如g_dir_read())时,如果处理不当也可能引发类似问题。例如,如果一个程序使用GLib递归遍历一个目录,并将遍历到的文件名直接拼接成路径进行操作,而该目录名或文件名又部分来自用户输入,就可能构造出类似../../../etc/passwd的路径。

关联性:这说明了目录遍历漏洞的根源往往在于路径拼接验证缺失。无论是处理URL、XML属性还是文件名,只要最终会拼接成一个文件系统路径,就必须对来源不可信的组成部分进行严格的净化。librsvg的漏洞可以看作是这种问题在XML/URL解码上下文中的一个具体表现。

6.3 防御模式的通用性

从这些案例中,我们可以提炼出防御目录遍历的通用模式:

  1. 输入校验:在数据入口处进行严格校验。对于文件路径,使用白名单机制。
  2. 路径规范化:使用操作系统或语言标准库提供的函数(如Python的os.path.normpath,但注意它不解决所有问题,最好结合os.path.realpath)将路径规范化。
  3. 基目录限定(Chroot/Jail):在打开文件前,将用户提供的路径与一个安全的基目录(Base Directory)进行拼接,然后验证最终路径是否仍然位于该基目录下。这是最有效的方法之一。
    import os def safe_file_open(base_dir, user_input): # 拼接路径 full_path = os.path.join(base_dir, user_input) # 获取规范化后的绝对路径 real_path = os.path.realpath(full_path) # 验证是否仍在基目录下 if not real_path.startswith(os.path.realpath(base_dir)): raise SecurityException("Path traversal attempt detected!") return open(real_path, 'r')
  4. 最小权限原则:运行程序的账户只拥有完成其功能所必需的最小文件系统权限。

7. 实战排查与入侵检测

假设你是一名运维工程师,负责维护一个可能受此漏洞影响的Web应用(例如,一个使用旧版ImageMagick或直接调用librsvg处理用户上传SVG头像的应用)。你该如何排查风险?

7.1 排查步骤

  1. 资产清点

    • 检查服务器上所有可能处理SVG文件的应用程序、库和脚本。
    • 使用包管理器检查librsvg2及相关工具的版本。
    • 查找Web应用中调用rsvg-convert命令或使用librsvg绑定的代码(如Python的cairosvgrsvg模块,PHP的imagick扩展等)。
  2. 版本确认

    # 检查系统库版本 dpkg -l | grep librsvg2 # Debian/Ubuntu rpm -qa | grep librsvg # RHEL/CentOS/Fedora # 如果版本号低于2.56.3,则存在风险。 # 检查ImageMagick是否使用librsvg作为SVG解码器 convert -list format | grep -i svg # 查看输出,如果SVG格式的处理委托给了`rsvg`或`MSVG`,则可能受影响。
  3. 代码审计

    • 审查应用代码,寻找文件上传、SVG处理、图像转换等功能点。
    • 重点关注将用户可控数据(文件名、文件内容)传递给系统命令(如os.system,subprocess.Popen)或直接调用文件操作函数的地方。
    • 检查是否有对用户上传文件的扩展名进行“黑名单”式过滤,而忽略了内容检查。

7.2 入侵检测与日志分析

即使暂时无法升级,也可以通过加强监控来发现攻击企图。

  1. Web服务器日志监控

    • 在Nginx/Apache日志中,搜索包含.svg且请求参数或文件内容中带有大量%2e%2f..等字符的请求。
    • 示例日志分析命令
      # 查找可能包含URL编码目录遍历的SVG上传请求 grep -i \\.svg /var/log/nginx/access.log | grep -E \"%2e%2e|%2f%2e%2e|\.\./\.\.\" # 查找POST请求体中可能包含恶意内容的上传(需要配置日志记录请求体,默认不记录)
  2. 文件系统监控

    • 使用auditdfanotify监控对敏感文件(如/etc/passwd/etc/shadow、Web应用配置文件、.env文件等)的读取访问。
    • 使用auditd规则示例
      # 添加规则监控对/etc/passwd的读取 sudo auditctl -w /etc/passwd -p r -k read_passwd # 然后查看日志 sudo ausearch -k read_passwd
      如果发现来自Web服务器进程(如nginxphp-fpm)或图像处理进程对/etc/passwd的读取记录,就需要立即警惕。
  3. 网络层监控

    • 如果攻击成功,泄露的文件内容可能会通过HTTP响应返回。监控出站流量中是否包含异常大的响应体,或者响应内容中出现了本应是服务器内部文件才有的字符串(如“root:x:0:0”)。

7.3 应急响应预案

如果通过监控发现了疑似攻击行为,应立即启动应急响应:

  1. 隔离:暂时禁用相关的文件上传或SVG处理功能。
  2. 取证:保存相关的恶意文件、日志记录、进程内存快照(如果可能)。
  3. 评估影响:根据攻击者可能访问到的文件,评估泄露数据的敏感程度(系统用户信息、数据库密码、源代码、密钥等)。
  4. 修复:根据第5部分的建议,立即实施缓解措施或升级补丁。
  5. 通知:如果涉及用户数据泄露,需根据相关法律法规和公司政策进行通知。

漏洞的修复从来不是一劳永逸的,尤其是在一个复杂的软件供应链中。CVE-2023-38633给我们提了个醒:一个看似普通的图像渲染库,因为对标准协议中一个不常用功能(<xi:include>)的安全处理疏忽,就能打开一扇通往敏感数据的大门。作为防御者,我们需要建立纵深防御体系,从安全的代码编写、严格的依赖管理、及时的补丁更新,到有效的运行时监控和清晰的应急响应流程,每一个环节都不能掉以轻心。对于开发者而言,每一次处理用户输入,都应当视作一次潜在的攻防对抗,慎之又慎。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 18:23:28

Potrace:如何将像素图片转换为无限缩放矢量图形

Potrace&#xff1a;如何将像素图片转换为无限缩放矢量图形 【免费下载链接】potrace [mirror] Tool for tracing a bitmap, which means, transforming a bitmap into a smooth, scalable image 项目地址: https://gitcode.com/gh_mirrors/pot/potrace 位图转矢量是现代…

作者头像 李华
网站建设 2026/7/3 18:23:05

2026会务系统价格全解析 会助力智能会务把高性价比办会落到实处

办会选系统&#xff0c;大家最先关心的永远是会务系统价格&#xff0c;不少主办方都踩过这样的坑&#xff1a;看着宣传页标着“免费使用”&#xff0c;真到要导出数据、解锁多会场功能的时候才发现处处是隐形消费&#xff0c;算下来总花费比当初的预算高出两三倍&#xff1b;还…

作者头像 李华
网站建设 2026/7/3 18:17:22

Xournal++:免费跨平台手写笔记软件的完全指南

Xournal&#xff1a;免费跨平台手写笔记软件的完全指南 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Suppor…

作者头像 李华
网站建设 2026/7/3 18:17:14

BepInEx游戏插件框架:为什么它成为Unity游戏模组开发的首选?

BepInEx游戏插件框架&#xff1a;为什么它成为Unity游戏模组开发的首选&#xff1f; 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 你是否曾经想要为喜爱的Unity游戏添加新功能、…

作者头像 李华
网站建设 2026/7/3 18:14:12

Dify:可视化拖拽构建AI智能体,10分钟打造企业级应用

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Claude 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 你是否曾想过&#xff0c;能否像搭积木一样&#xff0c;通过拖拽几个模块&#xff0c;就快速构建出一个能理解你业务、处理复杂逻辑…

作者头像 李华