<?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-06T04:17:32.595188+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/euvd-2026-319280</id>
    <title>EUVD-2026-319280</title>
    <updated>2026-10-06T04:17:32.598065+00:00</updated>
    <content>EUVD-2026-319280</content>
    <link href="https://cve.radiocsirt.org/vuln/euvd-2026-319280"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/fkie_cve-2026-42544</id>
    <title>fkie_cve-2026-42544</title>
    <updated>2026-10-06T04:17:32.598098+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>Granian is a Rust HTTP server for Python applications. From 1.2.0 to 2.7.4, Granian aborts a worker process when an unauthenticated client sends a WebSocket upgrade request whose Sec-WebSocket-Protocol header contains non-ASCII bytes. The crash happens in Granian's WebSocket scope construction path, before the ASGI application is invoked. This vulnerability is fixed in 2.7.4.</p>
      </div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/fkie_cve-2026-42544"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/ghsa-vrg7-482j-p6f6</id>
    <title>GHSA-vrg7-482j-p6f6 — Granian vulnerable to unauthenticated DoS via WebSocket subprotocol header panic</title>
    <updated>2026-10-06T04:17:32.598131+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: granian</p>
<p>### Summary</p>
<p>Granian aborts a worker process when an unauthenticated client sends a WebSocket upgrade request whose `Sec-WebSocket-Protocol` header contains non-ASCII bytes.</p>
<p>The crash happens in Granian's WebSocket scope construction path, before the ASGI application is invoked.</p>
<p>This is a single-request Denial Of Service against one worker. Repeating the request across workers takes the service offline.</p>
<p>### Details</p>
<p>https://github.com/emmett-framework/granian/blob/bdd5b0fbbb2aca6f2f4c0d2700c244d190958035/src/asgi/utils.rs#L122-L125</p>
<p>`HeaderValue::to_str()` returns `Err` for bytes outside visible ASCII. The subsequent `.unwrap()` panics.</p>
<p>In release builds Granian sets `panic = "abort"`, so this panic terminates the worker instead of being handled as a normal request error.</p>
<p>### PoC</p>
<p>#### Step 1.
starts a Granian ASGI server</p>
<p>```python
# app.py
async def app(scope, receive, send):
    if scope["type"] == "websocket":
        await receive()
        await send({"type": "websocket.accept"})
        return</p>
<p>await send({"type": "http.response.start", "status": 200, "headers": []})
    await send({"type": "http.response.body", "body": b"ok"})
```</p>
<p>```bash
granian --interface asgi app:app --host 127.0.0.1 --port 8000
```</p>
<p>#### Step 2.
sending a raw upgrade request with `Sec-WebSocket-Protocol: \x80\xff` reached this code path and caused the worker to abort.</p>
<p>```python
# ws-subproto-crash.py
import base64, os, socket, sys</p>
<p>host, port, path = sys.argv[1], int(sys.argv[2]), sy…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/ghsa-vrg7-482j-p6f6"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/pysec-2026-2503</id>
    <title>PYSEC-2026-2503 — Granian vulnerable to unauthenticated DoS via WebSocket subprotocol header panic</title>
    <updated>2026-10-06T04:17:32.598184+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: granian</p>
<p>### Summary</p>
<p>Granian aborts a worker process when an unauthenticated client sends a WebSocket upgrade request whose `Sec-WebSocket-Protocol` header contains non-ASCII bytes.</p>
<p>The crash happens in Granian's WebSocket scope construction path, before the ASGI application is invoked.</p>
<p>This is a single-request Denial Of Service against one worker. Repeating the request across workers takes the service offline.</p>
<p>### Details</p>
<p>https://github.com/emmett-framework/granian/blob/bdd5b0fbbb2aca6f2f4c0d2700c244d190958035/src/asgi/utils.rs#L122-L125</p>
<p>`HeaderValue::to_str()` returns `Err` for bytes outside visible ASCII. The subsequent `.unwrap()` panics.</p>
<p>In release builds Granian sets `panic = "abort"`, so this panic terminates the worker instead of being handled as a normal request error.</p>
<p>### PoC</p>
<p>#### Step 1.
starts a Granian ASGI server</p>
<p>```python
# app.py
async def app(scope, receive, send):
    if scope["type"] == "websocket":
        await receive()
        await send({"type": "websocket.accept"})
        return</p>
<p>await send({"type": "http.response.start", "status": 200, "headers": []})
    await send({"type": "http.response.body", "body": b"ok"})
```</p>
<p>```bash
granian --interface asgi app:app --host 127.0.0.1 --port 8000
```</p>
<p>#### Step 2.
sending a raw upgrade request with `Sec-WebSocket-Protocol: \x80\xff` reached this code path and caused the worker to abort.</p>
<p>```python
# ws-subproto-crash.py
import base64, os, socket, sys</p>
<p>host, port, path = sys.argv[1], int(sys.argv[2]), sy…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/pysec-2026-2503"/>
  </entry>
</feed>
