首页研究报告机构研究人工智能2025年智能体安全实践报告-360漏洞研究院清华大学
壹方

文档

5182

关注

1

好评

0
PDF

2025年智能体安全实践报告-360漏洞研究院清华大学

阅读 995 下载 67 大小 1.67M 总页数 23 页 2025-08-27 分享
价格:¥ 9.90
下载文档
/ 23
全屏查看
2025年智能体安全实践报告-360漏洞研究院清华大学
还有 23 页未读 ,您可以 继续阅读 或 下载文档
1、本文档共计 23 页,下载后文档不带水印,支持完整阅读内容或进行编辑。
2、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。
清苇大兽计算机科学与技术系VULNERABILITY RESEARCH INSTITUTE智能体安全实践报告目录概述二、漏洞列表三、开发框架中的安全隐忧1.本地请求攻击…52.云上服务接口3.小结P四、智能体生态中的信任危机1.调用链风险互嵌9(1)大模型输出…9(2)工具调用10(3)多智能体协同….122.脆弱的决策者.…143.小结16五、沙箱隔离中的盲区风险171.差异化沙箱选择…172.易忽视的暗面193.小结21六、总结22贡献者列表222概述随着LLM推理预测能力不断提升进步,人工智能技术正进入积极探索应用落地的高速发展时期。作为生成式AI的核心交互方案,智能体(Aget)由于其能够进行环境感知、自主决策、任务执行的高度智能化特性,市场规模和应用场景持续扩大,展现出多样化发展趋势。与此同时,AI Agent带来的安全风险也与日俱增,作为需要独立完成复杂任务的计算机工程应用,在面对不可信的网络环境和潜在攻击威胁时,如何确保其正确性和可靠性尤为重要。近期,360漏洞研究院联合清华大学计算机科学与技术系,针对AI Agent生命周期链路中的各个场景开展安全研究。通过典型攻击面梳理和漏洞挖掘,深入分析探讨了其中潜在的安全风险。结合360安全智能体的高效代码分析能力以及特有的特征库,研究团队报告了智能体相关开源项目漏洞20余个,并在此基础上对重点攻击场景进行归纳总结。本地设备互联网沙箱环境隔离方案智能体生态沙箱隔离信任危机言区风险AIAgenti运行时使型对话开发框架云端服务开发框架图1-1智能体安全实践场景概览研究发现,AIAgent的全生命周期安全风险呈现多维性、隐蔽性与系统性特征,其安全威胁渗透到开发、测试、部署和运营等一系列流程之中。本报告将Aget安全实践划分为框架层开发设计、生态层协同交互、沙箱层边界隔离三大具体场景,详细介绍了场景中的运行模式,并对其中代表性的风险面和漏洞进行举例说明,旨在提供智能体安全的综合性视角,为智能体安全生态的持续、积极发展贡献力量。二、漏洞列表目标名称LangChain-Chatchat任意文件写CVE-2025-6853LangChain-Chatchat任意文件读CVE-2025-6854LangChain-Chatchat任意文件写CVE-2025-6855n8n命令注入暂无Flowise参数校验错误暂无DB-GPT参数校验错误CVE-2025-6772SuperAGI任意文件写CVE-2025-6280Agent-Zero任意文件读CVE-2025-6166AstrBot任意文件读CVE-2025-48957信息泄露CVE-2025-22892XAgent参数校验错误CVE-2025-6281Upsonic远程代码执行CVE-2025-6278Upsonic任意文件写CVE-2025-6279PySpur远程代码执行CVE-2025-6518Steel Browser任意文件写CVE-2025-6152OpenAgents任意文件写CVE-2025-6282Sim任意文件读CVE-2025-7107Sim权限配置错误CVE-2025-7114Rowboat权限配置错误CVE-2025-7115Xata Agent任意文件读CVE-2025-6283Python-a2a参数校验错误CVE-2025-6167在后续章节的分析中,使用了上述漏洞的部分详情信息作为实际案例,此外,4案例分析还包含了智能体设计中的风险因素,该类因素可能并不构成完整可用的安全漏洞,但仍可用于揭示当前智能体开源软件项目中易受攻击的不安全场景。三、开发框架中的安全隐忧Agent架构通常由模型(Model)、工具(Tools)、编排(Orchestration)三个主要组件构成。模型作为系统的决策核心,能够根据具体的输入指令进行推理和预测;工具提供了与外部数据和服务交互的接口,极大的扩展了Agent实时获取信息和处理复杂任务的能力:编排则决定了系统如何拆分任务,并根据推理结果来指导和规划之后的行动,直至完成既定目标。Agent开发框架通过对系统组件进行一定程度的抽象表达,以模块化、可扩展性和快速编排能力为核心,提供了一系列预设工具和基础功能,旨在筒化智能体构建与部署流程,提升整体开发效率。然而,在框架为开发者带来便利性的同时,框架中的潜在安全问题也提供了额外的攻击向量,使其变为恶意攻击者通过网络发起攻击的“帮凶”。1.本地请求攻击区别于那些暴露在广域网上,接受任意外部连接的公共服务,本地服务通常无法通过公网路由直接进行访问,并且预期只会收到局域网或者仅来自本地的访问请求。例如,当把服务配置为监听0.0.0.0这一特殊地址时,意味着其它进程可以通过该机器上的任意网卡P访问到该服务,包括运行在其中的虚拟机,以及局域网内可达的其它设备。而如果将服务配置为监听127.0.0.1(1 ocalhost),则该服务只能收到本地请求。对于Aget开发框架而言,启动本地服务是最常见的行为之一,因为框架通常需要提供后端服务,来帮助开发者进行应用的调试和管理,而这类服务一般也仅需处理来自局域网或本地的请求,而无需运行在广域网中。正因如此,框架服务通常默认所有的请求都是可信任的,并且缺少对请求发起方的身份验证以及对请求中包含数据的二次检查。因此,对于绑定0.0.0.0地址的框架服务,可能成为攻击者进行横向渗透,或者容器逃逸的目标。此外,即使服务限制localhost作为监听地址,仍有可能通过外部网络向本地服务发送请求,并利用其中的安全漏洞完成远程攻击。最为典型的场景就是将浏览器作为跳板,与浏览器所在设备上的本地服务建立连接,其流程如下图所示。●O●http:/localhostGET POST/.●o●http://evil.comGET /POST/...Service bound tolocalhostJS图3-1通过浏览器发起本地请求攻击由于同源策略的限制,当从浏览器中发起跨域HTTP请求时,如果响应报文中没有包含正确的CORS响应头信息,则浏览器将阻止发起方获得响应内容。但上述攻击仍能成功的关键因素在于:浏览器虽然阻止了发起方接收响应,但并不会阻止发送请求这一行为,而有时候,单纯的发送请求就足以完成漏洞利用。案例l:PyspurPyspur是一个轻量级Agent工作流构建框架,支持以可视化节点编排的方式来生成复杂流程,每个节点代表了诸如LLM对话、工具调用、逻辑控制等特定功能。在某些节点中,由于存在对Jinja2库的Template对象不安全的使用,因此可导致任意代码执行。Jinjaz2是使用Python实现的一个模板引擎,支持在模板渲染过程中执行其中的表达式,服务端在没有良好过滤的情况下接收外部传递的数据并进行渲染,则可能会执行攻击者控制的恶意指令。Pyspur则是一个符合本地请求攻击场景的典型例子:将服务绑定于localhost,且没有身份认证措施,意味着默认信任来自本地的请求;同时,触发其中的模板注入漏洞流程,仅需连续的发送几个请求,而不要求能够获取响应内容,意味着通过浏览器发起跨域请求能够满足攻击条件。因此,攻击者可以借助该场景轻易实施针对该框架的远程代码执行,从而控制开发者的设备。策例2:Google Agent Development KitAgent Development Kit(ADK)是由Google发布的一个用于Agent工作流开发的工具集,并专门针对Gemini生态进行了优化,同时兼容其他模型与框架。ADK提供基于FastAPI的本地服务,帮助开发者以命令行或Web可视化的形式来运行、调试、评估Agent。.在启动时,服务将绑定于0.0.0.0地址,且绑定过程没有提供修改地址的选项,而是直接硬编码在代码中。这代表除非开发者自行寻找并修改软件源代码,否则无法将服务连接的访问限制在本地,同时,ADK官方的文档中并没有体现这一设计特点,反而在某种程度上表明服务的连接仅需在本地完成。Then,run the dev Ul:adk webOpen the URL provided (usually http://1ocalhost:8000 or http://127.0.0.1:8000)directly inyour browser.This connection stays entirely on your local machine.Selectgoogle_search_agent.图3-2ADK官方文档说明除此之外,ADK的服务中还增加了对于WebSocket连接的支持,开发者可通过/mum_Ie接口与Agent建立实时性更强的连接,并通过WebSocket进行双向通信。这进一步削弱了浏览器对于跨域请求的防护,因为在默认配置下,浏览器不会阻止跨域建立WebSocket连接,也不会阻止发起跨域连接一方获得响应消息。因此,攻击者可以通过构造一个恶意页面,静默的与运行在ADK服务下的Agent建立通信并使用其实现的各项功能,从而造成更大的破坏。2.云上服务接口框架中包含的软件基础设施通常提供多种部署方式,开发者可将其部署在自己的本地环境,或者以付费的方式直接使用框架部署在云端的服务。这也是许多开源框架的商业化模式之一。相较于本地部署,云端服务会增加账户认证和环境隔离等措施,用以确保用户的基本安全,但服务本身的核心代码逻辑与开源部分保持一致。这种云服务的形式将一部分用户本地资源转移至云端处理,从安全的角度来看,原本由用户自行管理的本地资源,现在需要依靠服务提供者来提供安全保障。这也意味着如果云服务接口中存在漏洞,则攻击者就能利用它来影响到整个业务系统的安全。案例:Steel BrowserSteel Browser是一个为Agent提供浏览器操作接口的基础设施开源框架。它提供了一个完整的浏览器实例,允许用户使用编程的方式实现会话管理、页面提取、JavaScript代码执行等自动化操作,其底层原理是通过远程调试协议与浏览器实例建立连接,并对外提供包装后的REST API服务,将各接口的功能转换为调试协议的请求,从而对浏览器实例进行控制。Steel Browser有商业化的云部署,并提供了浏览器凭证管理和反机器人检测等功能。在Steel Browser提供的API中存在文件上传功能,普通场景下,用户使用包含有文件内容的POST请求向服务端发送数据,并由服务端完成存储,此时会对请求中提供的文件名称进行检查,过滤其中的相对路径字符,以避免在后续路径拼接时出现路径穿越。然而,Steel Browser的代码实现中,还支持了fileUrl字段,用于从指定的U下载文件。在这个情况下,代码直接通过正则匹配的方式获取文件名,而没有进行额外检查,因此产生了路径穿越漏洞。1const nameMatch disposition.match(/filename="(.+)"/i);2 if (nameMatch 8&nameMatch[1]){name nameMatch[1];4 else{5name url.split("/").pop()Il "downloaded-file";7filePath join(tmpdir(),'upload_${Date.now()}_${name}')const result await saveWithChecksum(streamFromUrl.stream,filePath);图3-3 Steel Browser路径穿越相关代码该漏洞可允许攻击者在指定路径下创建内容可控的文件,通过写入系统定时任务、敏感配置文件等方式,可进一步获取任意代码执行的能力。3.小结Aget开发框架在致力于降低AI开发门槛,提供智能体系统构建一站式服务的同时,也因自身缺少完善的安全体系设计而存在着安全隐忧。无论是仅建立在本地服务,或是部署在云端的接口,都存在着从远程被攻破的可能。通过浏览器攻击私有网络的问题已经存在了很长一段时间,又因为开发框架通常承载着丰厚的计算与存储资源,可能会成为攻击者优先选择的目标。Chrome作为市场占有率最高的浏览器,提出了专用网络访问(Private Network Access,PNA)规范,用于阻止从公网访问私网资源,但却因为各种兼容性问题,在2024年底宣布推迟PNA在浏览器上的启用时间,可见本地请求攻击仍将持续存在。因此,开发框架应尽可能将本地服务默认绑定127.0.0.1而非0.0.0.0,避免局域网其它设备访问,同时在服务层增加访问控制和身份验证,以阻止通过浏览器发起的本地请求攻击。而通过云部署的方式来使用框架中的部分功能,则更应关注接口实现中的安全设计,避免因接口暴露所引发的各类安全问题。四、智能体生态中的信任危机自2023年OpenAI发布Function Calling功能支持大模型通过结构化编程方式调用外部函数以来,Google、.Meta等知名模型开发方均开始相继支持大模型的工具调用,随着工具连接更多软硬件设施,基座推理能力不断增强,Agent被赋予解决现实生活中问题的能力。同时,AutoGen、LangChain等主流开发框架通过提供额外的抽象层,来标准化不同模型中的工具解析和调用流程,从而提供多Agent共同协作的功能架构。随着业务复杂度的提升,参与到Aget系统运作中的成员也越来越复杂,模型调用方、模型供给方、工具实现方、资源提供方等多个角色,构成了整个系统运转的基础。正因如此,Aget系统的整体安全性,需由每一个参与方共同保障。1.调用链风险互嵌(1)大模型输出在Aget系统中,大模型通常作为核心的感知与决策模块,负责解析用户输入、规划任务流程,并生成用于调用外部工具或服务的指令。在复杂的系统设计中,往往存在多个大模型来扮演不同的角色。大模型的输出结果在很大程度上决定了Aget的行为走向,包括是否调用某个工具、如何处理外部数据以及与用户或其他Agent的交互策略。因此,攻击者可能通过构造诱导性Prompt,操控大模型生成包含恶意内容或错误流程的响应,从而间接影响Aget的行为。例如,攻击者可以诱导模型返回伪造的函数调用请求、嵌入非法指令,或故意提供错误信息,使Aget在毫无察觉的情况下执行越权操作、暴露敏感数据或破坏既定流程。这类攻击方式通常不依赖底层权限或接口漏洞,而是通过影响模型输出内容干扰Agent的决策,具有高度的隐蔽性和通用性。目前,大多数Aget系统对大模型返回结果缺乏有效的安全验证机制,往往默认将模型输出视为可信输入,直接驱动后续工具调用或任务执行,导致潜在风险难以及时识别与阻断。因此,必须将大模型输出结果作为系统安全防护的一部分,引入包括内容合规检测、危险指令过滤、上下文一致性检查等在内的安全验证机制,从而提升Aget面对复杂环境和诱导性攻击时的稳健性与可信度。(2)工具调用工具调用作为AI Agent与现实世界深度交互的重要桥梁,极大拓展了智能体的能力边界,使其能够通过连接外部计算资源、数据接口及物理执行终端,构建“感知决策-行动”的完整闭环。这种机制通过将算法决策与实体工具链动态结合,既扩展了AI的认知维度,又增强了执行效力。为了使得大模型能够借助工具执行任务,开发者需要先向大模型注册工具功能描述和接口定义等信息,然后对大模型工作时的输出进行解析,判断提取其中的工具调用需求,并以特定的参数形式调用指定工具接口,最后将工具运行结果返回至大模型。Function Calling是目前最广泛采用的实现方式,它允许模型通过自然语言生成调用指令,直接触发预定义函数完成操作。然而,在缺乏权限控制与参数校验的情况下,该机制存在显著的安全风险。攻击者可通过构造诱导性Prompt引导模型调用高权限函数,进而实现未授权操作、访问敏感数据,甚至远程执行系统命令,造成信息泄露或系统失控。此外,Function Calling这一开发流程在跨模型适配、多工具集成及不同架构部署场景下,往往面临存在代码实现碎片化和兼容性问题。对此,Anthropic在2024年底提出了Model Context Protocol(MCP)规范,通过标准化工具发现、注10册、调用等流程,提供大模型与工具之间的通用通信框架,使开发者无需考虑底层对接细节,提升Agent系统可扩展性与维护效率。Transport LayerRemoteHostMCP Server--Chat AppHTTP Post---Al AssistantSSE EventToolsResources PromptsMCP ClientLocalSTDIOMCP ServerMCP Client图4-1MCP基本工作流程Client--Server架构进一步明晰了通信流程中各主体部分的职责:客户端负责与服务端建立并维护一对一的连接,使用特定的传输层协议进行数据通信;服务端实现具体功能,并有能力对外部的各类资源进行访问;主机应用可以根据实际需求对多个服务进行调用。然而,在多方协同的场景下,包括MCP在内的主流方案并没有很好的解决系统中不同主体间的信任问题。在MCPServer井喷式增长,AI应用接入工具愈发多样,复杂任务所需调用链条越来越长的背景下,该架构也显现出一系列的安全风险。MCPServer投毒。MCP Server的组件包含有服务的元数据、配置信息,以及内部实现用于提供特定功能和资源的代码。Server对于Agent系统能够产生控制流和数据流两方面的影响。使用stdio模式启动的Server,通过标准输入输出管道来传递数据,需要运行在与Client相同的环境之中,其本质与直接运行互联网中下载的普通程序并无不同。由于缺乏统一安装渠道和严格的审计校验,Server可以通过执行恶意代码的方式直接对系统产生严重的破坏。另一方面,经投毒后的Server可将恶意指令嵌入到工具的描述中,在影响模型的同时尽可能的隐藏指令内容,从而达到未经用户授权而执行操作的攻击效果。这类攻击可在Server生命周期的多个阶段发生,例如,当前主流MCP服务平台(如mcp.so)对用户上传的MCP服务缺乏审查,攻击者甚至可以上传名字和描述与其它已安装Server相似的名称和功能描述来实施伪装,并在注册工具时向接口描述中加入额外的恶意指令。MCP Server远程风险。在sse(server--sent events)模式下,MCP服务作为远程服务运行,与Aget通过持久化通信通道保持实时交互,同样会引入新的安全风险。首先,Agent对远程Server缺乏运行时控制能力,攻击者可通过服务响应动态注入恶意数据流,诱导模型执行越权或错误操作。其次,SSe通信若未加密或缺乏身份校验,容易遭受中间人攻击,导致指令被监听、篡改或伪造。更严重的是,部分Server具备广播能力,若被控制,攻击者可利用其向多个智能体扩散恶意指令,形成跨智能体的投毒传播链条,进一步放大安全风险。MCP Client悉意请求。Server中的工具实现通常需要接收来由Client传递的参数,并有能力执行代码或访问数据资源,因此在处理外部请求时,有可能出现一些传统的安全问题。例如,数据未经过严格的验证和过滤,可能导致SQL注入、跨站请求伪造等经典漏洞。同时,因MCP协议缺乏良好的身份验证和权限控制功能,导致私有MCP Server可能存在未授权访问风险。(3)多智能体协同所谓独木不成林,虽然MCP扩展了智能体处理任务能力的深度,但单一智能体的能力往往是有限的,当处理的任务跨越多个领域时,往往得不到正确的结果。因此,多个不同功能智能体之间的协同,打破信息孤岛,可以为智能体生态注入更强大的活力。为了解决智能体之间如何进行有效地沟通协作问题,G0ogle提出了Agen2Aget(A2A)协议,为智能体系统提供了一种标准化的交互方式,其核心能力如下:L.协议架构同样基于Client-Server架构,由Client Agent发起任务,并调度至不同的Remote Agent来执行;2.规定了Agent服务发现流程,使用AgentCard描述其身份、认证和能力3.规定了通信使用的结构体详情,用于支持任务周期、多格式数据交互、12状态通知推送等协议功能。A2A的提出与MCP相辅相成。当涉及到专业领域的任务时,可以通过将任务调度到不同智能体进行专业处理,每个智能体利用特定领域的提示词、知识库,同是灵活的通过MCP指导调用相关外部工具,对自身专业能力进行延拓。无独有偶,在MCP中常见的攻击向量,A2A中也同样存在。A2A ComponentsRegisterAgent Discovery Name CollisionAgent DispatchSpoofingA2AWorkflowInteractionRequest-Skill Shadow AttackTransfer图4-2A2A常见攻击向量安全与认证。A2A协议可借助AgentCard中的authentication相关字段指定身份认证形式,从而指导Client端在认证后对Server进行访问。但目前开源A2A协议实现并不包含具体认证接口代码,相反,协议建议开发者根据业务完成认证流程,并在后续交互中携带凭证与Server端通信。认证过程发生在HTTPS协议层,而与A2A协议消息无关,因此认证的安全性本质上取决于开发者自身的实现。上下文投毒。多智能体系统一个重要功能在于打破信息孤岛,因此,一个智能体的输出可能会是另一个智能体的输入,如果一个恶意智能体返回的结果带有恶意注入内容,那么很有可能会影响下一个智能体的行为。影子攻击。在A2A中,通过AgentCard描述智能体的基本信息,主要用于服务发现。AgentCard中的name和description字段是Client Agent进行任务调度13的重要依据。例如,在官方的例子中,description中的内容是提示词的关键部分:1 def root_instruction(self,context:ReadonlyContext)str:2current_agent self.check_state(context)34PLease rely on tools to address the request,...5Agents:6{self.agents}Current agent:{current_agent['active_agent']}8图4-3A2 A sample host agent提示词此外,AgentCard中还有其它可被恶意利用的字段。例如,根据目前已有的一些客户端实现,展示给用户的一般是总体描述信息,而AgentSkill这类用于智能体进行确切请求的描述是隐藏的,向AgentSkill插入恶意提示就可能会在用户无法察觉的情况下,影响后续智能体的执行逻辑。2.脆弱的决策者Aget通过循环迭代的方式进行信息处理、知情决策,并基于前序输出来优化下一步行为,这一过程体现出了其实现目标的特定认知架构。该架构的关键组件是编排层,其承担着记忆维护、状态管理、推理运算与任务规划四项重要职能。编排层运用提示词工程技术及相关框架来指导推理与规划过程,通过将自然语言指令转化为结构化操作序列,使智能体能够有效感知环境特征并执行复杂任务。从链式思维提示(Chain of Thought)到ReAct模式,Agent的正确推理和响应很大程度上依赖于可靠的输入信息,但正如互联网上纷繁的信息经常使人难以判断真伪一样,对外部数据输入的强依赖性使得其易暴露于潜在的安全威胁之下:当认知层接收的数据被注入对抗样本或逻辑误导信息时,其决策可能产生极大偏差,通过设计特殊的数据污染,从而将Aget的自主决策导向预设的恶意逻辑之中。目前Aget设计的特性,使得这类诱导攻击实施起来难度不大,却可以产生严重的安全影响:1.决策核心需要观察工具执行后的结果来规划下一步骤,存在被恶意输入干扰的可能;2.工具往往需要访问和处理外部的不可信资源,例如抓取搜索引擎结果,或者工具本身即隐藏有恶意行为:3.决策核心观察过程中受到诱导,转而生成偏离预期的计划任务,即Aget行为完全由外部指令控制。可见,产生这类问题的核心在于,负责决策的大模型在多步迭代的过程中无法准确区分原本用户的合理请求和源自攻击者的注入指令,从而会以较高的权限调度工具来执行恶意行为。案例:BrowserUseBrowser Use融合了大模型编排和浏览器自动化工具,使得Agent能像真实用户一样访问网页并执行各项任务,例如网页导航、数据抓取和表单填写。该系统的大致工作流程如下:1.Agent从用户端接收任务描述,启动浏览器实例,完成系统初始化;2.将浏览器状态、历史记录、当前页面数据等信息与内置的Prompt进行结构化组合,并交由大模型决策;3.根据大模型的输出调用浏览器自动化接口执行所需动作,并将输出作为历史记录进行记忆存储:4.重复上述操作,直到Agent判断任务成功完成或无法继续。可见Browser Use遵循了ReAct设计模式,通过观察浏览器的状态及页面信息来决定完成任务所需的步骤,然后调用工具来驱动浏览器依次执行,并循环该过程直至达到既定目标。为了让决策模型理解网页内容并能够执行诸如填写账户密码和点击按钮等动作,Browser Use会向网页注入JavaScript代码来构建DOM树信息,提取其中可交互的元素,组织为具有特定格式的文本,并根据模板拼接在HumanMessage结构体中发送至决策模型。而该文本中包含的对网页元素的描述并没有经过额外的过滤处理,因此形成了一个提示词注入场景,即来自外部互联网页面数据可直接拼在发送给决策模型的消息中,并对其后续推理产生极大影响。
文档评分
    请如实的对该文档进行评分
  • 0
发表评论

特惠

限量优惠活动

正在火热进行

站长

添加站长微信

领取新人礼包

下载

便携运营智库

立即下载APP

工具

运营导航

工具推荐

帮助

帮助中心

常见问题

分销

50%直推收益

30%间推分成

AI

智能对话

办公助手

顶部