🔍 CVE-2025-66407

5.0
CVSS Score
MEDIUM
2025-12-16
2026-10-07 19:10
✅ 완료

🇰🇷 한글 설명

Weblate에서 Create Component 기능을 사용할 때, 사용자가 입력한 저장소 URL이 유효성 검사 또는 정제 없이 사용되어 SSRF(서버 측 요청 위조) 공격이 가능해진다. 이는 내부 서비스에 접근하고, 로컬 파일 열거를 허용한다.

💡 쉬운 설명

Weblate의 Create Component 기능에서 사용자 입력을 제대로 검사하지 않아 공격자가 내부 서비스나 로컬 파일에 접근할 수 있다. 이는 내부 정보를 노출시키거나 환경을 손상시킬 수 있다.

🇺🇸 원문 (English)

Weblate is a web based localization tool. The Create Component functionality in Weblate allows authorized users to add new translation components by specifying both a version control system and a source code repository URL to pull from. However, prior to version 5.15, the repository URL field is not validated or sanitized, allowing an attacker to supply arbitrary protocols, hostnames, and IP addresses, including localhost, internal network addresses, and local filenames. When the Mercurial version control system is selected, Weblate exposes the full server-side HTTP response for the provided URL. This effectively creates a server-side request forgery (SSRF) primitive that can probe internal services and return their contents. In addition to accessing internal HTTP endpoints, the behavior also enables local file enumeration by attempting file:// requests. While file contents may not always be returned, the application’s error messages clearly differentiate between files that exist and files that do not, revealing information about the server’s filesystem layout. In cloud environments, this behavior is particularly dangerous, as internal-only endpoints such as cloud metadata services may be accessible, potentially leading to credential disclosure and full environment compromise. This has been addressed in the Weblate 5.15 release. As a workaround, remove Mercurial from `VCS_BACKENDS`; the Git backend is not affected. The Git backend was already configured to block the file protocol and does not expose the HTTP response content in the error message.

📍 영향받는 시스템

Weblate 버전 5.15 이전

⚔️ 공격 벡터

사용자가 입력한 저장소 URL을 통해 SSRF 공격을 수행

🛡️ 대응 방법

Weblate 5.15 버전으로 업그레이드하거나, Mercurial을 VCS_BACKENDS에서 제거

🔧 검증 코드

로컬 시스템에서 Weblate이 설치되어 있는지 확인하고, 버전을 확인하여 취약점 여부를 판단한다. Python requests 라이브러리가 필요하다.

Shell / Script
import requests

response = requests.get('http://localhost:8080/')</nndata = response.json()
if 'Weblate' in data:
    print({"result": "취약", "reason": "Weblate이 설치되어 있고, 버전이 5.15 미만"})
else:
    print({"result": "양호", "reason": "Weblate이 설치되어 있지 않거나, 버전이 5.15 이상"})

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N

💻 영향받는 소프트웨어

Git