CVE-2025-64746Directus是一款开源实时API和App仪表板,用于管理SQL数据库内容。在11.13.0之前的版本中存在一个权限管理漏洞:当字段从collection(集合)中删除时,系统未能正确清理该字段在permissions表中的权限记录。这些过时的权限引用会持续存在于数据库中,形成潜在的安全隐患。攻击者可能利用此漏洞通过创建与已删除字段同名的字段来继承其权限设置,从而获得对数据的未授权访问或修改权限。该漏洞在多租户环境或生产环境中风险较高,因为管理员可能会复用字段名称,误以为旧权限已被完全清除。版本11.13.0已修复此问题,建议用户尽快升级。
该漏洞的根本原因在于Directus的权限管理机制与字段生命周期管理之间存在不同步问题。当管理员删除某个字段时,系统仅移除了字段本身的定义,但相应的权限表记录(directus_permissions表中该字段的权限条目)并未被清理。这导致permissions表积累了大量孤立的历史权限记录。
攻击者首先需要拥有一个低权限账户,并能够在目标collection中创建新字段。攻击的核心在于利用字段名称的复用机制:当新创建的字段名称与已删除字段的历史名称相同时,该新字段会自动继承permissions表中的历史权限条目。这意味着原本针对旧字段设置的权限限制会被应用到新字段上。
例如:假设字段'A'原本对角色X设置了禁止访问权限。当字段'A'被删除后,如果角色X的管理员创建了新字段'A',该字段会继承之前字段'A'的所有权限设置(包括允许访问的设置),从而导致角色X获得了超出预期的访问权限。攻击成功需要目标系统存在可复用的字段名称,并且攻击者能够以管理员身份执行字段创建操作。