CVE-2026-25138: Rucio webui Rucio WebUI Has Username Enumeration Vulnerability

MODERATE
Advisory Identifier: GHSA-38wq-6q2w-hcf9
CVSS 5.3
CWE-204
Published
Advisory Summary

CVE-2026-25138 is a MODERATE (CVSS 5.3) rucio webui has username enumeration vulnerability (CWE-204: Observable Response Discrepancy) affecting Rucio webui libraries in the PyPI ecosystem. The issue involves rucio webui has username enumeration via login error message. Remediation is available by upgrading affected packages to version 35.8.3, 38.5.4, 39.3.1.

CVE-2026-25138 at a Glance

CVE Identifier CVE-2026-25138
GHSA Identifier GHSA-38wq-6q2w-hcf9
Severity MODERATE
CVSS v3.1 Base Score 5.3
CWE Classification CWE-204: Observable Response Discrepancy
Affected Product Rucio webui
Package Ecosystem PyPI
Published Date
Last Updated

Security Impact

CVSS: 5.3

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required None (PR:N)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality Low (C:L)
Integrity None (I:N)
Availability None (A:N)

How to Fix CVE-2026-25138

To remediate this vulnerability, upgrade all affected Rucio webui dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

rucio-webui fixed: 35.8.3
pip install rucio-webui>=35.8.3
rucio-webui fixed: 38.5.4
pip install rucio-webui>=38.5.4
rucio-webui fixed: 39.3.1
pip install rucio-webui>=39.3.1
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

pip show rucio-webui

How to Check if You Are Affected

To determine whether your Python environment is affected by CVE-2026-25138, inspect your installed packages using pip:

pip show rucio-webui

Analyze the terminal output to locate any version of Rucio webui in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 35.8.3), your application is affected.

Note: The pip show rucio-webui command checks currently installed packages in your active Python environment.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-204: Observable Response Discrepancy, where the product provides different responses to incoming requests in a way that reveals internal state information to an unauthorized actor outside of the intended control sphere. In Rucio webui, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary The WebUI login endpoint returns distinct error messages depending on whether a supplied username exists, allowing unauthenticated attackers to enumerate valid usernames. ### Details When submitting invalid credentials to `/ui/login`, the WebUI responds with different error messages based on the existence of the provided username (identity). A non-existent username results in an error indicating that no account is associated with the identity, while an existing username with an incorrect password produces a different authentication-related error. This behavioral difference allows an attacker to distinguish valid usernames from invalid ones by observing the response content. ### Proof of Concept **Bogus Login (Non-existent Username "15251087")** Response contains: ``` Cannot get find any account associated with 15251087 identity. ``` **Bogus Login (Existing Username "root", Wrong Password)** Response contains: ``` Cannot get auth token. It is possible that the presented identity root is not mapped to any Rucio account root. ``` The difference in error messages confirms whether a username exists. ### Impact An unauthenticated attacker can enumerate valid usernames, which may be leveraged for targeted password guessing, credential stuffing, or social engineering attacks. ### Remediation / Mitigation Return a generic authentication failure message for all login errors, regardless of whether the username exists. Avoid disclosing account or identity existence through error responses. Consider implementing rate limiting or additional login throttling to further reduce abuse. #### Reources: - OWASP Authentication Cheat Sheet - Authentication and Error Messages: https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html#authentication-and-error-messages

CVE-2026-25138 Affected Rucio webui Versions

3 component(s)
Fixed Versions:
35.8.338.5.439.3.1
Product / Package Ecosystem Affected Versions Fixed Version
rucio-webui
PyPI
< 35.8.3
35.8.3
rucio-webui
PyPI
≥ 36.0.0rc1
< 38.5.4
38.5.4
rucio-webui
PyPI
≥ 39.0.0rc1
< 39.3.1
39.3.1

References

Frequently Asked Questions

What is CVE-2026-25138?
CVE-2026-25138 is a security vulnerability in Rucio webui involving Rucio WebUI has Username Enumeration via Login Error Message under CWE-204: Observable Response Discrepancy.
Which Rucio webui versions are affected?
Affected versions include releases prior to 35.8.3, 38.5.4, 39.3.1 across affected packages: rucio-webui.
What version fixes CVE-2026-25138?
Upgrading to 35.8.3, 38.5.4, 39.3.1 (or the latest patched release for your respective branch) resolves the vulnerability.
Is rucio-webui affected?
Yes, rucio-webui is affected in releases prior to 35.8.3, 38.5.4, 39.3.1. Upgrade your dependency to 35.8.3, 38.5.4, 39.3.1 or later.
What is the CVSS score of CVE-2026-25138?
CVE-2026-25138 has a CVSS v3.1 base score of 5.3 (MODERATE) with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N.
What CWE is associated with CVE-2026-25138?
CVE-2026-25138 is classified under CWE-204: Observable Response Discrepancy (The product provides different responses to incoming requests in a way that reveals internal state information to an unauthorized actor outside of the intended control sphere.).
How can I check PyPI dependencies for CVE-2026-25138?
Run the dependency tree command: 'pip show rucio-webui'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-38wq-6q2w-hcf9",
  "modified" : "2026-02-27T21:49:59Z",
  "published" : "2026-02-25T18:53:42Z",
  "aliases" : [ "CVE-2026-25138" ],
  "summary" : "Rucio WebUI has Username Enumeration via Login Error Message",
  "details" : "### Summary\nThe WebUI login endpoint returns distinct error messages depending on whether a supplied username exists, allowing unauthenticated attackers to enumerate valid usernames.\n\n### Details\nWhen submitting invalid credentials to `/ui/login`, the WebUI responds with different error messages based on the existence of the provided username (identity). A non-existent username results in an error indicating that no account is associated with the identity, while an existing username with an incorrect password produces a different authentication-related error.\n\nThis behavioral difference allows an attacker to distinguish valid usernames from invalid ones by observing the response content.\n\n### Proof of Concept\n**Bogus Login (Non-existent Username \"15251087\")**  \nResponse contains:\n```\nCannot get find any account associated with 15251087 identity.\n```\n\n**Bogus Login (Existing Username \"root\", Wrong Password)**  \nResponse contains:\n```\nCannot get auth token. It is possible that the presented identity root is not mapped to any Rucio account root.\n```\n\nThe difference in error messages confirms whether a username exists.\n\n### Impact\nAn unauthenticated attacker can enumerate valid usernames, which may be leveraged for targeted password guessing, credential stuffing, or social engineering attacks.\n\n### Remediation / Mitigation\nReturn a generic authentication failure message for all login errors, regardless of whether the username exists. Avoid disclosing account or identity existence through error responses. Consider implementing rate limiting or additional login throttling to further reduce abuse.\n\n#### Reources:\n- OWASP Authentication Cheat Sheet -  Authentication and Error Messages: https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html#authentication-and-error-messages",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "PyPI",
      "name" : "rucio-webui"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "35.8.3"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "PyPI",
      "name" : "rucio-webui"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "36.0.0rc1"
      }, {
        "fixed" : "38.5.4"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "PyPI",
      "name" : "rucio-webui"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "39.0.0rc1"
      }, {
        "fixed" : "39.3.1"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/rucio/rucio/security/advisories/GHSA-38wq-6q2w-hcf9"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-25138"
  }, {
    "type" : "WEB",
    "url" : "https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html#authentication-and-error-messages"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/rucio/rucio"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/rucio/rucio/releases/tag/35.8.3"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/rucio/rucio/releases/tag/38.5.4"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/rucio/rucio/releases/tag/39.3.1"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-204" ],
    "severity" : "MODERATE",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-02-25T18:53:42Z",
    "nvd_published_at" : "2026-02-25T20:23:47Z"
  }
}