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

CVE-2025-14010: ansible-collection-community-general 敏感凭证信息泄露漏洞

披露日期: 2025-12-04

漏洞信息

漏洞编号
CVE-2025-14010
漏洞类型
信息泄露
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
ansible-collection-community-general

相关标签

CVE-2025-14010信息泄露敏感凭证暴露ansiblecommunity.general密码泄露Keycloakverbose输出中危漏洞Red Hat

漏洞概述

CVE-2025-14010是ansible-collection-community-general集合中的一个高危信息泄露漏洞。该漏洞允许在运行Ansible playbook时,通过debug模式将敏感凭证(特别是明文密码)暴露在verbose输出中。攻击者一旦获取到系统日志或Ansible执行输出,就可以提取这些明文密码,进而可能获取Keycloak账户访问权限或提升至管理员权限。此漏洞影响使用community.general模块进行密码管理的Ansible用户,特别是在启用debug或verbose模式时风险更高。由于Ansible常用于自动化配置管理和敏感系统部署,密码泄露可能导致整个基础设施被攻陷,造成严重的安全风险。

技术细节

该漏洞存在于ansible-collection-community-general的模块代码中,当模块在处理敏感信息(如密码)时,如果Ansible配置了debug模式或verbose输出级别,这些敏感数据会以明文形式被打印到stdout/stderr。技术层面上,问题出在模块没有正确使用no_log参数来保护敏感字段,导致在ansible-playbook命令使用-v、-vv、-vvv等verbose选项时,变量内容被完整输出。攻击者可以通过以下方式利用:1) 访问Ansible执行日志;2) 在多用户环境中查看其他用户的执行输出;3) 收集CI/CD管道的构建日志。漏洞主要影响使用community.general模块(如set_stats、debug等)配合敏感变量的场景。修复方案需要在相关模块中添加或正确配置no_log=True属性,确保敏感信息在任何输出级别下都不会被暴露。

攻击链分析

STEP 1
步骤1: 配置敏感凭证
管理员在Ansible playbook中配置敏感密码变量,用于自动化任务
STEP 2
步骤2: 触发verbose输出
用户或自动化脚本使用ansible-playbook的-v、-vv或-vvv选项运行playbook
STEP 3
步骤3: 敏感信息泄露
community.general模块在debug模式下将明文密码输出到stdout/stderr
STEP 4
步骤4: 日志收集
攻击者获取Ansible执行日志(通过日志文件、CI/CD输出或系统日志)
STEP 5
步骤5: 凭证提取
攻击者从日志中提取明文密码,可用于横向移动或提权
STEP 6
步骤6: 账户入侵
利用获取的凭证访问Keycloak或其他系统,获取管理员权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2025-14010 # Information Exposure in ansible-collection-community-general # Run with: ansible-playbook -vvv poc.yml - name: CVE-2025-14010 PoC - Information Exposure hosts: localhost gather_facts: no vars: sensitive_password: "Admin@123!SecretPassword" db_password: "P@ssw0rd!2024" tasks: - name: Simulate vulnerable debug output ansible.builtin.debug: msg: "Password being used: {{ sensitive_password }}" - name: Vulnerable set_stats usage ansible.builtin.set_stats: data: debug_info: "Using credentials: {{ sensitive_password }}" # With -vvv flag, these outputs will expose plaintext passwords # Attackers can extract passwords from logs: # grep -r "Password" ansible.log | grep -v "$ANSIBLE_" - name: Exploitation via log analysis hosts: target gather_facts: no vars: admin_password: "{{ hostvars['localhost'].sensitive_password }}" tasks: - name: Extract exposed credentials ansible.builtin.shell: cmd: "grep -i 'password' /var/log/ansible/*.log | tail -20" register: exposed_creds - name: Use exposed credentials for further attacks ansible.builtin.debug: msg: "Exposed credentials: {{ exposed_creds.stdout }}"

影响范围

ansible-collection-community-general < 12.0.0
community.general < 12.0.0
community.general 11.x 系列所有版本
community.general 10.x 系列所有版本

防御指南

临时缓解措施
立即在Ansible配置文件中设置display_skipped_hosts=False和display_args_to_stdout=False,并检查所有playbook中是否存在将敏感变量传递给debug模块或set_stats的情况。对于必须保留debug功能的场景,使用自定义过滤器对输出进行脱敏处理,仅显示变量名而非实际值。同时审查日志存储权限,限制非授权用户访问Ansible执行日志。

参考链接

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