CVE-2025-64347Apollo Router Core是一款使用Rust语言编写的可配置图形路由器,用于运行基于Apollo Federation 2的联邦超图。在1.61.12-rc.0及以下版本和2.8.1-rc.0及以下版本中,存在一个严重的访问控制绕过漏洞。攻击者可以通过@link指令重命名访问控制指令(如@authenticated、@requiresScopes、@policy),使得路由器无法正确执行这些重命名后的访问控制策略。这允许未授权用户绕过字段和类型级别的访问控制,直接访问原本受保护的数据。由于该漏洞可在无需认证和用户交互的情况下被利用,且对数据机密性造成严重影响,因此被评定为高危漏洞(CVSS 7.5)。
该漏洞的根本原因在于Apollo Router Core对通过@link指令导入并重命名的访问控制指令处理不当。在GraphQL Federation中,@link指令允许导入和重命名外部定义,包括访问控制指令。当开发者使用@link...as="@customAuth"这样的语法重命名@authenticated指令时,路由器在验证查询时没有正确识别重命名后的指令与原始@authenticated指令的等价关系。具体来说,路由器在解析和验证查询时,只检查了原始指令名称,而没有检查通过@link重命名的别名。这导致即使字段或类型上应用了重命名的访问控制指令,路由器也不会执行相应的访问检查。攻击者可以利用Apollo Federation的导入机制,通过构造特定的超图(supergraph),在子图(subgraph)级别引入重命名的访问控制指令,从而绕过路由器级别的访问控制策略。