JohnPerifanis/CVE-2025-51847-Reserved---under-review-

GitHub: JohnPerifanis/CVE-2025-51847-Reserved---under-review-

记录了CryptPad 2025.3.1中受信任插件目录自动加载机制因缺乏验证和沙箱而导致的远程代码执行漏洞及其详细技术分析。

Stars: 0 | Forks: 0

# CVE-2025-51847 (已预留) – 受信任的插件自动加载导致在放置插件文件并重启后实现服务端代码执行 ## 状态 已预留标识符。发布状态正在审核中。 ## 产品 CryptPad ## 测试版本 CryptPad 2025.3.1 ## 概述 CryptPad 在服务启动时,会自动加载放置在受信任插件目录(例如 `./lib/plugins/`)中的 JavaScript 模块。在测试中,放置在受信任插件目录中的攻击者控制代码在服务重启后被自动执行,随后该插件的 challenge handler 即可通过现有的 `/api/auth` 机制被远程触发。 ## 前置条件 此行为需要满足: - 能够将 JavaScript 文件放入受信任的插件目录中,以及 - 随后 CryptPad 服务发生重启。 ## 验证的技术行为 测试表明: - CryptPad 在重启时会自动 `require()` 并执行来自受信任插件路径的插件代码, - 此过程没有经过允许列表、完整性验证/签名或沙箱处理, - 插件的 `modules.challenge` handlers 会通过现有的 `/api/auth` RPC 流程暴露出来, - 重启后,远程调用攻击者控制的 handler 导致了在 CryptPad Node.js 进程内的服务端代码执行。 在受控环境中,通过返回 `/etc/passwd` 的内容验证了服务端代码的执行。 ## 影响 在满足上述前置条件的情况下,任意代码可以在 CryptPad 服务器进程中以服务账户的权限执行。这可能会影响服务器环境的机密性、完整性和可用性。 ## 威胁模型说明 供应商表示,此行为属于其“诚实但好奇/半诚实服务器”的威胁模型范畴,因为对受信任插件目录的写入权限已经意味着拥有服务器访问权限。在这种解释下,该问题可能会被视为受信任代码路径/系统加固方面的问题,而不是一个独立的漏洞。 然而,一旦攻击者能够执行或修改服务器提供的代码(包括客户端包),该声明就不再适用。CryptPad 自身的安全材料承认,用户必须信任服务器以提供正确的客户端代码,并讨论了诸如 WEBCAT / 验证方法等机制来降低这种信任需求。 如果攻击者能够修改服务器提供的客户端代码,那么原则上就有可能监控浏览器客户端,并在加密前捕获明文和/或密钥。从这个意义上说,密码学本身并没有矛盾:这是一个威胁模型边界问题(半诚实服务器与主动恶意服务器)。 ## 为什么这仍然是一个有意义的产品级别弱点 即使将文件写入前提视为高权限边界,该行为仍然是一个具体的产品级别弱点: - 来自受信任插件路径的未验证代码会在重启时被自动执行, - 该代码通过现有的 RPC 攻击面变得可被远程触发, - 并且其缓解措施属于产品级别的(默认禁用、允许列表、完整性验证/签名、沙箱化)。 ## 供应商 / 协调者状态 - 供应商对此应被视为独立漏洞持反对意见。 - CISA 拒绝根据其标准进行发布。 - CISA 表示,如果另一个 CNA 在不同的解释下分配此问题,它不会提出异议。 ## 披露说明 本公开参考故意省略了武器化的漏洞利用代码和详细的复现工具。测试仅在受控环境中进行。
标签:CISA项目, CryptPad, CVE-2025-51847, GitHub Advanced Security, Go语言工具, JavaScript模块加载, MITM代理, Node.js安全, NPM安全, Prisma Cloud, RCE, RPC接口安全, Web报告查看器, 代码执行漏洞, 任意代码执行, 协议分析, 反序列化缺陷, 威胁建模, 安全加固, 插件自动加载, 数据可视化, 文件写入, 文档安全, 服务端代码执行, 权限提升, 沙箱逃逸, 漏洞分析, 网络安全, 路径探测, 隐私保护, 零信任架构