网络安全平台 OPSWAT 近日报告,MongoDB 的对象数据建模(ODM)库 Mongoose 中存在的两个严重漏洞,可能导致攻击者在 Node.js 应用服务器上实现远程代码执行(RCE)。Mongoose 在生产环境中广泛使用,能够将 JavaScript 对象映射到 MongoDB 文档,从而简化数据管理和验证。然而,其用于优化文档间关系处理的函数却可能被利用以实现 RCE。
漏洞详情及危害
第一个严重漏洞被标记为 CVE-2024-53900,攻击者可通过利用_$where_值在 Node.js 上实现 RCE。第二个漏洞 CVE-2025-23061,则是对 CVE-2024-53900 补丁的绕过。
OPSWAT 解释说,$where_是 MongoDB 的一个查询操作符,允许在 MongoDB 服务器上直接执行 JavaScript,但存在某些限制。在处理检索到的数据时,Mongoose 的一个函数会将$where_值传递给从外部库导入的函数,该函数会在应用服务器上本地处理查询,而不执行输入验证。
“这种缺乏输入验证和限制的情况引入了一个重大的安全隐患,因为由用户输入直接控制的‘params’值可能被利用,进而导致代码注入攻击。”OPSWAT 指出。
补丁及其局限性
针对 CVE-2024-53900 的补丁增加了检查,禁止将_$where_操作符传递给易受攻击的函数,从而阻止了恶意负载的执行。
然而,该补丁可以通过将_$where_操作符嵌入到 MongoDB 和易受攻击函数都支持的_$or_操作符中来绕过。
参考来源:
Vulnerabilities in MongoDB Library Allow RCE on Node.js Servers