<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Fri, 16 Oct 2026 22:19:56 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-45338 — Open WebUI: SSRF via OAuth Profile Picture URL in _process_picture_url (oauth.py)</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2026-45338</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; open-webui&lt;/p&gt;
&lt;p&gt;Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.0, a Server-Side Request Forgery (SSRF) vulnerability exists in _process_picture_url() in backend/open_webui/utils/oauth.py (line ~1338). The function fetches arbitrary URLs from OAuth picture claims without applying validate_url(), allowing an attacker to force the server to make HTTP requests to internal resources and exfiltrate the full response. This vulnerability is fixed in 0.9.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; open-webui&lt;/p&gt;
&lt;p&gt;Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.0, a Server-Side Request Forgery (SSRF) vulnerability exists in _process_picture_url() in backend/open_webui/utils/oauth.py (line ~1338). The function fetches arbitrary URLs from OAuth picture claims without applying validate_url(), allowing an attacker to force the server to make HTTP requests to internal resources and exfiltrate the full response. This vulnerability is fixed in 0.9.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2026-45338</guid>
    </item>
    <item>
      <title>GHSA-24c9-2m8q-qhmh — Open WebUI Vulnerable to SSRF via OAuth Profile Picture URL in _process_picture_url (oauth.py)</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-24c9-2m8q-qhmh</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: open-webui&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;A Server-Side Request Forgery (SSRF) vulnerability exists in `_process_picture_url()` in `backend/open_webui/utils/oauth.py` (line ~1338). The function fetches arbitrary URLs from OAuth `picture` claims without applying `validate_url()`, allowing an attacker to force the server to make HTTP requests to internal resources and exfiltrate the full response.&lt;/p&gt;
&lt;p&gt;## Vulnerable Code
```python
# backend/open_webui/utils/oauth.py, line ~1337-1345
async def _process_picture_url(self, picture_url: str, access_token: str = None) -&amp;gt; str:
    # No validate_url() call here
    async with aiohttp.ClientSession(trust_env=True) as session:
        async with session.get(picture_url, **get_kwargs, ssl=AIOHTTP_CLIENT_SESSION_SSL) as resp:
            if resp.ok:
                picture = await resp.read()
                base64_encoded_picture = base64.b64encode(picture).decode(&amp;#39;utf-8&amp;#39;)
                return f&amp;#39;data:{guessed_mime_type};base64,{base64_encoded_picture}&amp;#39;
```&lt;/p&gt;
&lt;p&gt;The codebase already uses `validate_url()` for the same SSRF protection pattern in other paths:
- `backend/open_webui/utils/files.py:38` - `validate_url(url)` before `requests.get(url)`
- `backend/open_webui/routers/images.py:800` - `validate_url(data)` before `requests.get(data)`&lt;/p&gt;
&lt;p&gt;The omission in `_process_picture_url()` is inconsistent with the project&amp;#39;s own security practices.&lt;/p&gt;
&lt;p&gt;## Affected Code Paths&lt;/p&gt;
&lt;p&gt;1. **New user OAuth signup** (line ~1556): `picture_url = await self._process_picture_url(picture_url, token.get(…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: open-webui&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;A Server-Side Request Forgery (SSRF) vulnerability exists in `_process_picture_url()` in `backend/open_webui/utils/oauth.py` (line ~1338). The function fetches arbitrary URLs from OAuth `picture` claims without applying `validate_url()`, allowing an attacker to force the server to make HTTP requests to internal resources and exfiltrate the full response.&lt;/p&gt;
&lt;p&gt;## Vulnerable Code
```python
# backend/open_webui/utils/oauth.py, line ~1337-1345
async def _process_picture_url(self, picture_url: str, access_token: str = None) -&amp;gt; str:
    # No validate_url() call here
    async with aiohttp.ClientSession(trust_env=True) as session:
        async with session.get(picture_url, **get_kwargs, ssl=AIOHTTP_CLIENT_SESSION_SSL) as resp:
            if resp.ok:
                picture = await resp.read()
                base64_encoded_picture = base64.b64encode(picture).decode(&amp;#39;utf-8&amp;#39;)
                return f&amp;#39;data:{guessed_mime_type};base64,{base64_encoded_picture}&amp;#39;
```&lt;/p&gt;
&lt;p&gt;The codebase already uses `validate_url()` for the same SSRF protection pattern in other paths:
- `backend/open_webui/utils/files.py:38` - `validate_url(url)` before `requests.get(url)`
- `backend/open_webui/routers/images.py:800` - `validate_url(data)` before `requests.get(data)`&lt;/p&gt;
&lt;p&gt;The omission in `_process_picture_url()` is inconsistent with the project&amp;#39;s own security practices.&lt;/p&gt;
&lt;p&gt;## Affected Code Paths&lt;/p&gt;
&lt;p&gt;1. **New user OAuth signup** (line ~1556): `picture_url = await self._process_picture_url(picture_url, token.get(…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-24c9-2m8q-qhmh</guid>
    </item>
  </channel>
</rss>
