OSSN/OSSN-0021
< OSSN
受损账户的所有者应验证 Keystone 信任关系
总结
Keystone 的 'trusts' API 允许将权限委派给一个用户,代表另一个用户。此 API 可能会允许攻击者利用受损账户设置后门访问权限。即使检测到账户被攻破,这种后门也可能难以检测到。
受影响的服务 / 软件
Keystone, Grizzly, Havana, Icehouse
讨论
Keystone 信任关系系统允许将角色委派给 Keystone 用户,而无需透露主令牌或与这些用户共享账户密钥。这意味着,在账户被攻破后,更改密钥和使现有令牌失效可能不足以防止攻击者的未来访问。
如果攻击者获得账户访问权限(通过盗取的凭据或服务利用),他们可以创建一个新的 Keystone 信任关系。这个新的信任关系可能授予不依赖于任何受损用户密钥知识的访问权限,并且可以设置为永不过期。在这种情况下,必须由账户所有者手动查找并删除该信任关系。
有关使用信任关系的信息,请参阅 https://wiki.openstack.org/wiki/Keystone/Trusts
建议的操作
如果账户已被攻破,或正在进行审计,所有者应检查活动信任关系列表,并验证
- 所有活动信任关系都是必需的 - 所有活动信任关系都具有预期的角色和委派深度 - 所有活动信任关系都具有适当的过期时间
在撰写此 OSSN 时,可以使用 Keystone API 直接列出信任关系
# get ENDPOINT from the last field of the output
keystone endpoint-get --service identity --attr versionId \
--value 3.0
# get TOKEN from the last field of the output
keystone token-get
# list the trusts by running:
curl -i -X GET "ENDPOINT/trusts/" -H "X-Auth-Token: TOKEN" \
-H "Content-Type: application/json" -H "Accept: application/json"
如果识别出某个信任关系(ID 为 TRUST_ID)无效,可以使用以下命令删除它
curl -i -X DELETE "ENDPOINT/trusts/TRUST_ID" \
-H "X-Auth-Token: TOKEN" -H "Content-Type: application/json" \
-H "Accept: application/json"
未来,操作员将能够使用 keystoneclient 以更方便的方式访问和更新此信息。
联系方式 / 参考文献
- 作者:Stanislaw Pitucha,HPE
- 此 OSSN:https://wiki.openstack.org/wiki/OSSN/OSSN-0021
- 原始 LaunchPad Bug:https://bugs.launchpad.net/ossn/+bug/1341849
- OpenStack Security ML:openstack-security@lists.openstack.org
- OpenStack Security Group:https://launchpad.net/~openstack-ossg