SELECT DISTINCT U.ID, U.USERNAME, U.EMAIL, U.REALM_ID FROM USER_ENTITY U
INNER JOIN USER_ATTRIBUTE UA ON U.ID = UA.USER_ID
WHERE UA.NAME IN ('password','password-confirm')
2023 年 9 月 12 日
要下载发行版,请访问 Keycloak 下载.
Keycloak 22.0.2 中引入了安全漏洞。我们强烈建议不要升级到 22.0.2,并且对于已在生产环境中部署 22.0.2 的任何人,请立即升级到 22.0.3。
对于在将 Keycloak 升级到 22.0.2 后进行自我注册的用户,其密码未被安全存储,并且可能会被 Keycloak 管理员暴露。这仅影响升级后注册的用户,不影响任何先前注册的用户。
使用预览声明式用户配置文件的任何领域不受此问题影响,只有使用默认用户配置文件提供程序的领域受影响。
要确定您的部署中是否有任何受影响的用户,您可以通过访问数据库并运行以下 SQL 语句来查询它们
SELECT DISTINCT U.ID, U.USERNAME, U.EMAIL, U.REALM_ID FROM USER_ENTITY U
INNER JOIN USER_ATTRIBUTE UA ON U.ID = UA.USER_ID
WHERE UA.NAME IN ('password','password-confirm')
我们建议联系任何受影响的用户,并为他们添加更新密码所需的行动。
如果有任何受影响的用户,我们还建议通过运行以下 SQL 语句从数据库中删除这些属性
DELETE FROM USER_ATTRIBUTE UA WHERE UA.NAME IN ('password','password-confirm')
如果在 22.0.2 版本发布后对数据库进行了任何备份,并且有受影响的用户,我们建议删除这些备份。
任何具有自定义用户存储联合提供程序的部署也可能受到影响,请验证您的自定义用户存储以确定这是否是一个问题。
如果用户存储提供程序将属性管理委托给 Keycloak,要确定您的部署中是否有任何受影响的联合用户,您可以通过访问数据库并运行以下 SQL 语句来查询它们
SELECT DISTINCT USER_ID,REALM_ID,STORAGE_PROVIDER_ID FROM FED_USER_ATTRIBUTE
WHERE NAME IN ('password','password-confirm')
如果有任何受影响的联合用户,我们还建议通过运行以下 SQL 语句从数据库中删除这些属性
DELETE FROM FED_USER_ATTRIBUTE UA WHERE UA.NAME IN ('password','password-confirm')
如果您的自定义用户存储提供程序本身管理属性,您应该查看您的自定义存储以删除 password
和 password-confirm
属性。
在升级之前,请参考 迁移指南以获取更改的完整列表。