漏洞概述 在Keycloak中,当用户拥有 角色时,可以部分导入和导出JSON文件。然而,导入JSON文件允许用户设置和覆盖现有客户端(即使没有其他角色分配给该用户,例如 )。这可能导致完全篡改客户端,如更改密钥或更糟糕的情况。此外,API不允许仅分配 角色的用户创建客户端。 影响范围 版本:16.1.0 影响:用户可以部分导入和导出JSON文件,但导入JSON文件允许设置和覆盖现有客户端,即使没有其他角色分配给该用户。这可能导致完全篡改客户端,如更改密钥或更糟糕的情况。 修复方案 1. 检查权限:在导入JSON文件时,检查用户是否有 角色。如果没有,则不允许导入客户端信息。 2. 代码修改:在 方法中添加权限检查,确保只有具有适当权限的用户才能导入客户端信息。 POC代码 实际行为 通过部分导入,用户可以创建和调整客户端、客户端角色和组。 重现步骤 1. 创建一个仅分配 角色的用户。 2. 部分导入包含客户端信息的JSON文件(创建客户端、导出、删除客户端并导入JSON文件)。 3. 观察是否成功。 其他信息 该问题已被报告给安全团队,但未被认定为高风险,而是不一致性问题。 社区贡献欢迎,以进一步调查和修复此问题。 结论 该漏洞允许具有 角色的用户通过导入JSON文件来篡改客户端,建议通过添加权限检查来修复此问题。