<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://cve.radiocsirt.org/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-08T18:01:15.920858+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>csirt@opendfir.org</email>
  </author>
  <link href="https://cve.radiocsirt.org" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/bdu:2026-07454</id>
    <title>bdu:2026-07454</title>
    <updated>2026-10-08T18:01:16.004755+00:00</updated>
    <content>bdu:2026-07454</content>
    <link href="https://cve.radiocsirt.org/vuln/bdu:2026-07454"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/euvd-2026-328621</id>
    <title>EUVD-2026-328621</title>
    <updated>2026-10-08T18:01:16.004796+00:00</updated>
    <content>EUVD-2026-328621</content>
    <link href="https://cve.radiocsirt.org/vuln/euvd-2026-328621"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/fkie_cve-2026-45675</id>
    <title>fkie_cve-2026-45675</title>
    <updated>2026-10-08T18:01:16.004811+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.0, the LDAP and OAuth authentication flows use a TOCTOU (Time-of-Check-Time-of-Use) pattern for first-user admin role assignment. The regular signup handler (signup_handler in auths.py, line 663) was explicitly patched to prevent this race with the comment "Insert with default role first to avoid TOCTOU race", but the LDAP and OAuth code paths were never updated with the same fix. This vulnerability is fixed in 0.9.0.</p>
      </div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/fkie_cve-2026-45675"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/ghsa-h3ww-q6xx-w7x3</id>
    <title>GHSA-h3ww-q6xx-w7x3 — Open WebUI: LDAP and OAuth First-User Race Condition Allows Multiple Admin Accounts</title>
    <updated>2026-10-08T18:01:16.004845+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: open-webui</p>
<p>## Summary</p>
<p>The LDAP and OAuth authentication flows use a TOCTOU (Time-of-Check-Time-of-Use) pattern for first-user admin role assignment. The regular signup handler (`signup_handler` in auths.py, line 663) was explicitly patched to prevent this race with the comment *"Insert with default role first to avoid TOCTOU race"*, but the LDAP and OAuth code paths were never updated with the same fix.</p>
<p>## Vulnerable Code</p>
<p>### LDAP (auths.py, lines 479-490)
```python
# Line 482 - CHECK: is the user table empty?
role = 'admin' if not Users.has_users(db=db) else request.app.state.config.DEFAULT_USER_ROLE</p>
<p># Lines 484-490 - USE: create user with the role determined above
user = Auths.insert_new_auth(
    email=email,
    password=str(uuid.uuid4()),
    name=cn,
    role=role,   # &lt;-- role was determined BEFORE insert, race window exists
    db=db,
)
```</p>
<p>### OAuth (oauth.py, lines 1103-1112, 1566-1574)
```python
# Line 1104 - CHECK: count users
def get_user_role(self, user, user_data):
    user_count = Users.get_num_users()
    if not user and user_count == 0:
        return 'admin'    # Line 1112</p>
<p># Lines 1566-1574 - USE: create user with pre-determined role
user = Auths.insert_new_auth(
    ...
    role=self.get_user_role(None, user_data),  # Line 1571
    ...
)
```</p>
<p>Both paths determine the role BEFORE inserting the user, creating a race window where multiple concurrent requests on a fresh instance can all observe an empty database and all receive the `admin` role.</p>
<p>## Comparison wit…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/ghsa-h3ww-q6xx-w7x3"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/pysec-2026-2730</id>
    <title>PYSEC-2026-2730 — Open WebUI: LDAP and OAuth First-User Race Condition Allows Multiple Admin Accounts</title>
    <updated>2026-10-08T18:01:16.004903+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: open-webui</p>
<p>## Summary</p>
<p>The LDAP and OAuth authentication flows use a TOCTOU (Time-of-Check-Time-of-Use) pattern for first-user admin role assignment. The regular signup handler (`signup_handler` in auths.py, line 663) was explicitly patched to prevent this race with the comment *"Insert with default role first to avoid TOCTOU race"*, but the LDAP and OAuth code paths were never updated with the same fix.</p>
<p>## Vulnerable Code</p>
<p>### LDAP (auths.py, lines 479-490)
```python
# Line 482 - CHECK: is the user table empty?
role = 'admin' if not Users.has_users(db=db) else request.app.state.config.DEFAULT_USER_ROLE</p>
<p># Lines 484-490 - USE: create user with the role determined above
user = Auths.insert_new_auth(
    email=email,
    password=str(uuid.uuid4()),
    name=cn,
    role=role,   # &lt;-- role was determined BEFORE insert, race window exists
    db=db,
)
```</p>
<p>### OAuth (oauth.py, lines 1103-1112, 1566-1574)
```python
# Line 1104 - CHECK: count users
def get_user_role(self, user, user_data):
    user_count = Users.get_num_users()
    if not user and user_count == 0:
        return 'admin'    # Line 1112</p>
<p># Lines 1566-1574 - USE: create user with pre-determined role
user = Auths.insert_new_auth(
    ...
    role=self.get_user_role(None, user_data),  # Line 1571
    ...
)
```</p>
<p>Both paths determine the role BEFORE inserting the user, creating a race window where multiple concurrent requests on a fresh instance can all observe an empty database and all receive the `admin` role.</p>
<p>## Comparison wit…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/pysec-2026-2730"/>
  </entry>
</feed>
