GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2025-69286 (GCVE-0-2025-69286)

Vulnerability from cvelistv5 – Published: 2025-12-31 21:52 – Updated: 2026-01-02 14:35
VLAI
Title
RAGFlow has Predictable Token Generation Leading to Authentication Bypass Vulnerability
Summary
RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine. In versions prior to 0.22.0, the use of an insecure key generation algorithm in the API key and beta (assistant/agent share auth) token generation process allows these tokens to be mutually derivable. Specifically, both tokens are generated using the same `URLSafeTimedSerializer` with predictable inputs, enabling an unauthorized user who obtains the shared assistant/agent URL to derive the personal API key. This grants them full control over the assistant/agent owner's account. Version 0.22.0 fixes the issue.
SSVC
Exploitation: poc Automatable: yes Technical Impact: total
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-01-02 14:16 UTC
CWE
  • CWE-340 - Generation of Predictable Numbers or Identifiers
Impacted products
Vendor Product Version CPE status
infiniflow ragflow Affected: < 0.22.0
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2025-69286",
                "options": [
                  {
                    "Exploitation": "poc"
                  },
                  {
                    "Automatable": "yes"
                  },
                  {
                    "Technical Impact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-01-02T14:16:35.778286Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-01-02T14:35:31.041Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "references": [
          {
            "tags": [
              "exploit"
            ],
            "url": "https://github.com/infiniflow/ragflow/security/advisories/GHSA-9j5g-g4xm-57w7"
          }
        ],
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "product": "ragflow",
          "vendor": "infiniflow",
          "versions": [
            {
              "status": "affected",
              "version": "\u003c 0.22.0"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine. In versions prior to 0.22.0, the use of an insecure key generation algorithm in the API key and beta (assistant/agent share auth) token generation process allows these tokens to be mutually derivable. Specifically, both tokens are generated using the same `URLSafeTimedSerializer` with predictable inputs, enabling an unauthorized user who obtains the shared assistant/agent URL to derive the personal API key. This grants them full control over the assistant/agent owner\u0027s account. Version 0.22.0 fixes the issue."
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "attackVector": "NETWORK",
            "baseScore": 8.9,
            "baseSeverity": "HIGH",
            "privilegesRequired": "NONE",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "NONE",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P",
            "version": "4.0",
            "vulnAvailabilityImpact": "HIGH",
            "vulnConfidentialityImpact": "HIGH",
            "vulnIntegrityImpact": "HIGH"
          }
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-340",
              "description": "CWE-340: Generation of Predictable Numbers or Identifiers",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2025-12-31T21:52:54.304Z",
        "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
        "shortName": "GitHub_M"
      },
      "references": [
        {
          "name": "https://github.com/infiniflow/ragflow/security/advisories/GHSA-9j5g-g4xm-57w7",
          "tags": [
            "x_refsource_CONFIRM"
          ],
          "url": "https://github.com/infiniflow/ragflow/security/advisories/GHSA-9j5g-g4xm-57w7"
        },
        {
          "name": "https://github.com/infiniflow/ragflow/commit/a3bb4aadcc3494fb27f2a9933b4c46df8eb532e6",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/infiniflow/ragflow/commit/a3bb4aadcc3494fb27f2a9933b4c46df8eb532e6"
        },
        {
          "name": "https://github.com/infiniflow/ragflow/blob/v0.20.5/api/apps/system_app.py#L214-L215",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/infiniflow/ragflow/blob/v0.20.5/api/apps/system_app.py#L214-L215"
        },
        {
          "name": "https://github.com/infiniflow/ragflow/blob/v0.20.5/api/utils/__init__.py#L343",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/infiniflow/ragflow/blob/v0.20.5/api/utils/__init__.py#L343"
        },
        {
          "name": "https://github.com/infiniflow/ragflow/blob/v0.20.5/api/utils/api_utils.py#L378",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/infiniflow/ragflow/blob/v0.20.5/api/utils/api_utils.py#L378"
        }
      ],
      "source": {
        "advisory": "GHSA-9j5g-g4xm-57w7",
        "discovery": "UNKNOWN"
      },
      "title": "RAGFlow has Predictable Token Generation Leading to Authentication Bypass Vulnerability"
    }
  },
  "cveMetadata": {
    "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
    "assignerShortName": "GitHub_M",
    "cveId": "CVE-2025-69286",
    "datePublished": "2025-12-31T21:52:54.304Z",
    "dateReserved": "2025-12-31T16:36:25.943Z",
    "dateUpdated": "2026-01-02T14:35:31.041Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-69286",
      "date": "2026-09-16",
      "epss": "0.00773",
      "percentile": "0.53947"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-69286\",\"sourceIdentifier\":\"security-advisories@github.com\",\"published\":\"2025-12-31T22:15:49.280\",\"lastModified\":\"2026-06-17T10:00:25.850\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine. In versions prior to 0.22.0, the use of an insecure key generation algorithm in the API key and beta (assistant/agent share auth) token generation process allows these tokens to be mutually derivable. Specifically, both tokens are generated using the same `URLSafeTimedSerializer` with predictable inputs, enabling an unauthorized user who obtains the shared assistant/agent URL to derive the personal API key. This grants them full control over the assistant/agent owner\u0027s account. Version 0.22.0 fixes the issue.\"},{\"lang\":\"es\",\"value\":\"RAGFlow es un motor RAG (Generaci\u00f3n Aumentada por Recuperaci\u00f3n) de c\u00f3digo abierto. En versiones anteriores a la 0.22.0, el uso de un algoritmo de generaci\u00f3n de claves inseguro en el proceso de generaci\u00f3n de la clave API y del token beta (autenticaci\u00f3n compartida de asistente/agente) permite que estos tokens sean mutuamente derivables. Espec\u00edficamente, ambos tokens se generan utilizando el mismo \u0027URLSafeTimedSerializer\u0027 con entradas predecibles, lo que permite a un usuario no autorizado que obtiene la URL compartida del asistente/agente derivar la clave API personal. Esto les otorga control total sobre la cuenta del propietario del asistente/agente. La versi\u00f3n 0.22.0 soluciona el problema.\"}],\"affected\":[{\"source\":\"security-advisories@github.com\",\"affectedData\":[{\"vendor\":\"infiniflow\",\"product\":\"ragflow\",\"versions\":[{\"version\":\"\u003c 0.22.0\",\"status\":\"affected\"}]}]}],\"metrics\":{\"cvssMetricV40\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"4.0\",\"vectorString\":\"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X\",\"baseScore\":8.9,\"baseSeverity\":\"HIGH\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"attackRequirements\":\"NONE\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"vulnConfidentialityImpact\":\"HIGH\",\"vulnIntegrityImpact\":\"HIGH\",\"vulnAvailabilityImpact\":\"HIGH\",\"subConfidentialityImpact\":\"NONE\",\"subIntegrityImpact\":\"NONE\",\"subAvailabilityImpact\":\"NONE\",\"exploitMaturity\":\"PROOF_OF_CONCEPT\",\"confidentialityRequirement\":\"NOT_DEFINED\",\"integrityRequirement\":\"NOT_DEFINED\",\"availabilityRequirement\":\"NOT_DEFINED\",\"modifiedAttackVector\":\"NOT_DEFINED\",\"modifiedAttackComplexity\":\"NOT_DEFINED\",\"modifiedAttackRequirements\":\"NOT_DEFINED\",\"modifiedPrivilegesRequired\":\"NOT_DEFINED\",\"modifiedUserInteraction\":\"NOT_DEFINED\",\"modifiedVulnConfidentialityImpact\":\"NOT_DEFINED\",\"modifiedVulnIntegrityImpact\":\"NOT_DEFINED\",\"modifiedVulnAvailabilityImpact\":\"NOT_DEFINED\",\"modifiedSubConfidentialityImpact\":\"NOT_DEFINED\",\"modifiedSubIntegrityImpact\":\"NOT_DEFINED\",\"modifiedSubAvailabilityImpact\":\"NOT_DEFINED\",\"Safety\":\"NOT_DEFINED\",\"Automatable\":\"NOT_DEFINED\",\"Recovery\":\"NOT_DEFINED\",\"valueDensity\":\"NOT_DEFINED\",\"vulnerabilityResponseEffort\":\"NOT_DEFINED\",\"providerUrgency\":\"NOT_DEFINED\"}}],\"cvssMetricV31\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":9.8,\"baseSeverity\":\"CRITICAL\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":3.9,\"impactScore\":5.9}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2026-01-02T14:16:35.778286Z\",\"id\":\"CVE-2025-69286\",\"options\":[{\"exploitation\":\"poc\"},{\"automatable\":\"yes\"},{\"technicalImpact\":\"total\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.3\"}}]},\"weaknesses\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-340\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:infiniflow:ragflow:*:*:*:*:*:*:*:*\",\"versionEndExcluding\":\"0.22.0\",\"matchCriteriaId\":\"399A9F6D-D7D7-413D-B787-96DD6C1CDC40\"}]}]}],\"references\":[{\"url\":\"https://github.com/infiniflow/ragflow/blob/v0.20.5/api/apps/system_app.py#L214-L215\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Product\"]},{\"url\":\"https://github.com/infiniflow/ragflow/blob/v0.20.5/api/utils/__init__.py#L343\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Product\"]},{\"url\":\"https://github.com/infiniflow/ragflow/blob/v0.20.5/api/utils/api_utils.py#L378\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Product\"]},{\"url\":\"https://github.com/infiniflow/ragflow/commit/a3bb4aadcc3494fb27f2a9933b4c46df8eb532e6\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\"]},{\"url\":\"https://github.com/infiniflow/ragflow/security/advisories/GHSA-9j5g-g4xm-57w7\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Exploit\",\"Vendor Advisory\"]},{\"url\":\"https://github.com/infiniflow/ragflow/security/advisories/GHSA-9j5g-g4xm-57w7\",\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"tags\":[\"Exploit\",\"Vendor Advisory\"]}]}}",
    "redhat_vex": {
      "current_release_date": "2026-01-01T22:28:11+00:00",
      "cve": "CVE-2025-69286",
      "id": "CVE-2025-69286",
      "initial_release_date": "2025-01-01T00:00:00+00:00",
      "product_status:known_not_affected": "1",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "RAGFlow has Predictable Token Generation Leading to Authentication Bypass Vulnerability",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-69286.json",
      "version": "3"
    },
    "vulnrichment": {
      "containers": "{\"cna\": {\"title\": \"RAGFlow has Predictable Token Generation Leading to Authentication Bypass Vulnerability\", \"problemTypes\": [{\"descriptions\": [{\"cweId\": \"CWE-340\", \"lang\": \"en\", \"description\": \"CWE-340: Generation of Predictable Numbers or Identifiers\", \"type\": \"CWE\"}]}], \"metrics\": [{\"cvssV4_0\": {\"attackVector\": \"NETWORK\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"NONE\", \"privilegesRequired\": \"NONE\", \"userInteraction\": \"NONE\", \"vulnConfidentialityImpact\": \"HIGH\", \"vulnIntegrityImpact\": \"HIGH\", \"vulnAvailabilityImpact\": \"HIGH\", \"subConfidentialityImpact\": \"NONE\", \"subIntegrityImpact\": \"NONE\", \"subAvailabilityImpact\": \"NONE\", \"baseScore\": 8.9, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P\", \"version\": \"4.0\"}}], \"references\": [{\"name\": \"https://github.com/infiniflow/ragflow/security/advisories/GHSA-9j5g-g4xm-57w7\", \"tags\": [\"x_refsource_CONFIRM\"], \"url\": \"https://github.com/infiniflow/ragflow/security/advisories/GHSA-9j5g-g4xm-57w7\"}, {\"name\": \"https://github.com/infiniflow/ragflow/commit/a3bb4aadcc3494fb27f2a9933b4c46df8eb532e6\", \"tags\": [\"x_refsource_MISC\"], \"url\": \"https://github.com/infiniflow/ragflow/commit/a3bb4aadcc3494fb27f2a9933b4c46df8eb532e6\"}, {\"name\": \"https://github.com/infiniflow/ragflow/blob/v0.20.5/api/apps/system_app.py#L214-L215\", \"tags\": [\"x_refsource_MISC\"], \"url\": \"https://github.com/infiniflow/ragflow/blob/v0.20.5/api/apps/system_app.py#L214-L215\"}, {\"name\": \"https://github.com/infiniflow/ragflow/blob/v0.20.5/api/utils/__init__.py#L343\", \"tags\": [\"x_refsource_MISC\"], \"url\": \"https://github.com/infiniflow/ragflow/blob/v0.20.5/api/utils/__init__.py#L343\"}, {\"name\": \"https://github.com/infiniflow/ragflow/blob/v0.20.5/api/utils/api_utils.py#L378\", \"tags\": [\"x_refsource_MISC\"], \"url\": \"https://github.com/infiniflow/ragflow/blob/v0.20.5/api/utils/api_utils.py#L378\"}], \"affected\": [{\"vendor\": \"infiniflow\", \"product\": \"ragflow\", \"versions\": [{\"version\": \"\u003c 0.22.0\", \"status\": \"affected\"}]}], \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2025-12-31T21:52:54.304Z\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine. In versions prior to 0.22.0, the use of an insecure key generation algorithm in the API key and beta (assistant/agent share auth) token generation process allows these tokens to be mutually derivable. Specifically, both tokens are generated using the same `URLSafeTimedSerializer` with predictable inputs, enabling an unauthorized user who obtains the shared assistant/agent URL to derive the personal API key. This grants them full control over the assistant/agent owner\u0027s account. Version 0.22.0 fixes the issue.\"}], \"source\": {\"advisory\": \"GHSA-9j5g-g4xm-57w7\", \"discovery\": \"UNKNOWN\"}}, \"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2025-69286\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"poc\"}, {\"Automatable\": \"yes\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-01-02T14:16:35.778286Z\"}}}], \"references\": [{\"url\": \"https://github.com/infiniflow/ragflow/security/advisories/GHSA-9j5g-g4xm-57w7\", \"tags\": [\"exploit\"]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-01-02T14:17:05.934Z\"}}]}",
      "cveMetadata": "{\"cveId\": \"CVE-2025-69286\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"state\": \"PUBLISHED\", \"assignerShortName\": \"GitHub_M\", \"dateReserved\": \"2025-12-31T16:36:25.943Z\", \"datePublished\": \"2025-12-31T21:52:54.304Z\", \"dateUpdated\": \"2026-01-02T14:35:31.041Z\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…