GHSA-57jg-m997-cx3q CVE-2025-47951 PYSEC-2026-2039
Weblate lacks rate limiting when verifying second factor
- Severity
- 4.9 / 10
- Medium · CVSS 3.1
- Exploit chance (EPSS)
- 0.27%
- Chance of exploitation in the next 30 days. Higher than 18.47% of scored vulnerabilities.
- Known exploited
- No
- Not in CISA's catalog
- Weakness
- CWE-307 Improper Restriction of Excessive Authentication Attempts
- Fix
5.12- Upgrade weblate to this version or later
Description
Impact
The verification of the second factor was not subject to rate limiting. The absence of rate limiting on the second factor endpoint allows an attacker with valid credentials to automate OTP guessing.
Patches
This issue has been addressed in Weblate 5.12 via https://github.com/WeblateOrg/weblate/pull/14918.
References
Thanks to obscuredeer for reporting this issue at HackerOne.
Affected versions
PyPI
| Package | Vulnerable | Fixed in |
|---|---|---|
| weblate | < 5.12 |
5.12 |
How to fix
Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.
weblate PyPI → 5.12
- pip
pip install --upgrade "weblate>=5.12"- poetry
poetry add "weblate>=5.12"- uv
uv add "weblate>=5.12"
Severity breakdown
CVSS 3.1 4.9
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:N
- Attack vector
- Network
- Attack complexity
- High
- Privileges required
- Low
- User interaction
- None
- Scope
- Changed
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Weakness
CWE-307: Improper Restriction of Excessive Authentication Attempts
The product does not implement sufficient measures to prevent multiple failed authentication attempts within a short time frame.
How to prevent it
- Architecture and Design: Common protection mechanisms include: Disconnecting the user after a small number of failed attempts Implementing a timeout Locking out a targeted account Requiring a computational task on the user's part.
- Architecture and Design: Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid [REF-1482]. Consider using libraries with authentication capabilities such as OpenSSL or the ESAPI Authenticator. [REF-45]
References
Advisories
Packages
Other links
Timeline
- Published
- Last updated by the source
- Latest EPSS score
Related advisories
| Advisory | Severity | Why it's related |
|---|---|---|
| GHSA-2q2q-jr9g-v9rf Weblate has IDOR in GroupViewSet that allows authenticated project manager to gain unauthorized read access to any private project | High | Also affects weblate |
| GHSA-2p9g-x3cv-5hh4 Private Weblate projects vulnerable to observable object existence disclosure via globally scoped object lookups | Medium | Also affects weblate |
| GHSA-vmfc-9982-2m45 Weblate SSRF: outbound URL guard misses some private ranges | Medium | Also affects weblate |
| GHSA-6wxc-8mgq-w26m Weblate: Stored HTML injection in editor search preview | Medium | Also affects weblate |
| GHSA-5cmv-3rc4-7279 Weblate vulnerable to XSS via crafted Markdown | Medium | Also affects weblate |
| GHSA-gcg5-86jr-f7jg Weblate Vulnerable to Private Translation Enumeration via Screenshot API | Medium | Also affects weblate |
| GHSA-cwcx-382v-8m9g Weblate Vulnerable to Authenticated SSRF via Project Backup Import bypassing validate_repo_url | High | Also affects weblate |
| GHSA-6j8j-4qp3-36p2 Weblate Doesn't Invalidate API Token on Password Change | Medium | Also affects weblate |
MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.
Check your repos with MergeHarbor