CVE-2025-48187 is a critical account takeover flaw (CVSS 9.1) in RAGFlow through version 0.18.1. Email verification codes are six digits with no rate limiting, so they can be brute forced to register, log in or reset a password. The record names no fixed version, so check the project releases.
What's affected
Per the CVE record, RAGFlow versions through 0.18.1 are affected. RAGFlow is an open-source retrieval-augmented generation engine. The record does not name a fixed release.
Its references are a list of commits on the project main branch and a blog post. Neither is a security advisory with a fixed version, so confirm the status in the project release notes before you rely on any build.
The record describes the cause as email verification codes that are six digits long with no rate limiting. That makes brute-force guessing practical for registration, login and password reset flows that rely on the code. It is filed under CWE-307 (Excessive Authentication Attempts).
The base vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N: network reachable, no privileges, no interaction, and high impact on confidentiality and integrity.
How to check if you're exposed
Find the version you run. If you deployed with Docker, check the image tag:
docker ps --format '{{.Names}} {{.Image}}'
Anything at 0.18.1 or older is in scope. If you use a floating tag, confirm the real version in the application.
Then check how the service is reachable. A RAGFlow instance on the open internet with registration or email login enabled is the risky case. An instance behind a VPN or single sign-on is much safer.
Finally, look at your logs and mail system. Many failed code attempts for the same account, or bursts of verification emails, are signs of guessing. Check the user list for accounts nobody created.
What to do now
- Check the RAGFlow releases and changelog for a version later than 0.18.1 that addresses verification code handling, and upgrade to it.
- Put the application behind your single sign-on, a VPN or an allow list if it does not need to be public.
- Add rate limiting at the reverse proxy or gateway for the registration, login and reset endpoints, and lock out a source after repeated failures.
- Disable open self-registration if you do not need it.
- Review accounts and sessions, remove any you cannot account for, and force password resets for users with sensitive access.
- Review what data sources and API keys are connected to RAGFlow, and rotate any that an intruder could have reached.
Why it matters
A six digit code has one million possible values. That is fine when the system allows a handful of attempts and then stops. With no limit on guesses, a program can try every value in a short time. The weakness class is excessive authentication attempts, and the fix is a limit on tries per account and per source, a short code lifetime, and a lock after repeated failure.
Retrieval tools hold something valuable: connectors to internal documents, model keys and chat history. A takeover of an account on such a system can mean access to all of that, which is why the score is critical.
It is not listed in the CISA Known Exploited Vulnerabilities catalog, and the record does not report exploitation in the wild. Because the record names no fix, controls around the application, such as limits at the proxy, matter even more until you can confirm a patched release.
Try it yourself
Click through it at your own pace, or open it full screen.
Quick check
Is there a fixed version of RAGFlow?
The record does not name one. It covers versions through 0.18.1. Check the project release notes for a later version that addresses it.
What is the quickest mitigation?
Put rate limits on the login, registration and reset endpoints at your proxy, and restrict who can reach the service at all.
Sources
Last reviewed: 18 October 2026.