<?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://vulnerability.circl.lu/sightings/feed</id>
  <title>Most recent sightings.</title>
  <updated>2026-09-05T04:34:26.578282+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent sightings.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/2e430335-6214-4957-9367-feb11b24223f/export</id>
    <title>2e430335-6214-4957-9367-feb11b24223f</title>
    <updated>2026-09-05T04:34:26.583456+00:00</updated>
    <author>
      <name>Automation user</name>
      <uri>https://vulnerability.circl.lu/user/automation</uri>
    </author>
    <content>{"uuid": "2e430335-6214-4957-9367-feb11b24223f", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "GHSA-MFX4-HV73-Q22V", "type": "published-proof-of-concept", "source": "https://t.me/hacking_Attack/190197", "content": "CVE-2026-69243 PoC: aiohttp request smuggling through a rejected WebSocket upgrade\nhttps://www.reddit.com/r/redteamsec/comments/1vfp76j/cve202669243_poc_aiohttp_request_smuggling/\n\nTL;DR: CVE-2026-69243 \u2014 on aiohttp \u22643.14.1, a rejected WebSocket upgrade leaves the request body sitting in the parser tail, and aiohttp then feeds it back as a pipelined request. Behind the Nginx WebSocket config from the official docs, Nginx logs one request and aiohttp processes two. First public PoC, in Python and Rust, plus the lab. Impact here is blind handler invocation, not response disclosure.  Hey hey you all, it's me again So, The aiohttp advisory (GHSA-mfx4-hv73-q22v (https://github.com/aio-libs/aiohttp/security/advisories/GHSA-mfx4-hv73-q22v), CVE-2026-69243 (https://advisories.gitlab.com/pypi/aiohttp/CVE-2026-69243/), fixed in 3.14.2) described request smuggling \"using an edge case in the WebSocket upgrade procedure\" and noted no public exploit code existed, so i took it as a challenge and built a lab to reproduce it and work out what the actual impact is behind a proxy. The cause is that a request with `Connection: Upgrade`, `Upgrade: websocket` and a `Content-Length` body makes the C parser return llhttp's \"skip body\" signal, because an upgrade means the rest of the connection should be another protocol, but that holds only if the upgrade actually happens, when its rejected it returns a normal response with the connection staying HTTP but the body was never consumed, it sits in `_message_tail` and gets fed back into the parser as a pipelined request. `await request.read()` returns zero bytes on that request, The body is withheld below the handler layer, so you cannot drain it from application code. Patching or stripping upgrade headers at the proxy are some options. So I tested three Nginx configurations. The one straight out of the Nginx WebSocket documentation is the one that produces the desync, Nginx logs one request, aiohttp processes two. A smuggled request also bypassed `location /admin { deny all; }`. In this topology the second response is absorbed by the proxy, so it ends up being a blind handler invocation, the same payload against 3.14.2 produces one backend request. Lab is seven containers with the aiohttp versions pinned by build arg, PoCs in Python and Rust with byte-identical payloads enforced in CI, plus the detection side (what the desync looks like in Nginx logs). Write-up: glitchedcat.com (https://glitchedcat.com/posts/cve-2026-69243-poc-aiohttp-websocket-upgrade-smuggling/)\n Lab + PoC: https://github.com/JVBotelho/cve-2026-69243-poc-aiohttp-smuggling  Disclosure: I'm the author of both. Reporter credit for the bug goes to shivams0099, fix by Dreamsorcerer.    submitted by    /u/FrozenSuricats  (https://www.reddit.com/user/FrozenSuricats) \n [link] (https://glitchedcat.com/posts/cve-2026-69243-poc-aiohttp-websocket-upgrade-smuggling/)   [comments] (https://www.reddit.com/r/redteamsec/comments/1vfp76j/cve202669243_poc_aiohttp_request_smuggling/)", "creation_timestamp": "2026-09-02T01:00:24.971980Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/2e430335-6214-4957-9367-feb11b24223f/export"/>
    <published>2026-09-02T01:00:24.971980+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/8d405898-3371-4144-a6ba-0f2bb1a0e381/export</id>
    <title>8d405898-3371-4144-a6ba-0f2bb1a0e381</title>
    <updated>2026-09-05T04:34:26.584683+00:00</updated>
    <author>
      <name>Automation user</name>
      <uri>https://vulnerability.circl.lu/user/automation</uri>
    </author>
    <content>{"uuid": "8d405898-3371-4144-a6ba-0f2bb1a0e381", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "GHSA-MFX4-HV73-Q22V", "type": "seen", "source": "https://t.me/hacking_Attack/190197", "content": "CVE-2026-69243 PoC: aiohttp request smuggling through a rejected WebSocket upgrade\nhttps://www.reddit.com/r/redteamsec/comments/1vfp76j/cve202669243_poc_aiohttp_request_smuggling/\n\nTL;DR: CVE-2026-69243 \u2014 on aiohttp \u22643.14.1, a rejected WebSocket upgrade leaves the request body sitting in the parser tail, and aiohttp then feeds it back as a pipelined request. Behind the Nginx WebSocket config from the official docs, Nginx logs one request and aiohttp processes two. First public PoC, in Python and Rust, plus the lab. Impact here is blind handler invocation, not response disclosure.  Hey hey you all, it's me again So, The aiohttp advisory (GHSA-mfx4-hv73-q22v (https://github.com/aio-libs/aiohttp/security/advisories/GHSA-mfx4-hv73-q22v), CVE-2026-69243 (https://advisories.gitlab.com/pypi/aiohttp/CVE-2026-69243/), fixed in 3.14.2) described request smuggling \"using an edge case in the WebSocket upgrade procedure\" and noted no public exploit code existed, so i took it as a challenge and built a lab to reproduce it and work out what the actual impact is behind a proxy. The cause is that a request with `Connection: Upgrade`, `Upgrade: websocket` and a `Content-Length` body makes the C parser return llhttp's \"skip body\" signal, because an upgrade means the rest of the connection should be another protocol, but that holds only if the upgrade actually happens, when its rejected it returns a normal response with the connection staying HTTP but the body was never consumed, it sits in `_message_tail` and gets fed back into the parser as a pipelined request. `await request.read()` returns zero bytes on that request, The body is withheld below the handler layer, so you cannot drain it from application code. Patching or stripping upgrade headers at the proxy are some options. So I tested three Nginx configurations. The one straight out of the Nginx WebSocket documentation is the one that produces the desync, Nginx logs one request, aiohttp processes two. A smuggled request also bypassed `location /admin { deny all; }`. In this topology the second response is absorbed by the proxy, so it ends up being a blind handler invocation, the same payload against 3.14.2 produces one backend request. Lab is seven containers with the aiohttp versions pinned by build arg, PoCs in Python and Rust with byte-identical payloads enforced in CI, plus the detection side (what the desync looks like in Nginx logs). Write-up: glitchedcat.com (https://glitchedcat.com/posts/cve-2026-69243-poc-aiohttp-websocket-upgrade-smuggling/)\n Lab + PoC: https://github.com/JVBotelho/cve-2026-69243-poc-aiohttp-smuggling  Disclosure: I'm the author of both. Reporter credit for the bug goes to shivams0099, fix by Dreamsorcerer.    submitted by    /u/FrozenSuricats  (https://www.reddit.com/user/FrozenSuricats) \n [link] (https://glitchedcat.com/posts/cve-2026-69243-poc-aiohttp-websocket-upgrade-smuggling/)   [comments] (https://www.reddit.com/r/redteamsec/comments/1vfp76j/cve202669243_poc_aiohttp_request_smuggling/)", "creation_timestamp": "2026-09-01T20:00:06.240604Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/8d405898-3371-4144-a6ba-0f2bb1a0e381/export"/>
    <published>2026-09-01T20:00:06.240604+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/67d0e898-2bfc-4bbf-91a9-ea0f88021d8a/export</id>
    <title>67d0e898-2bfc-4bbf-91a9-ea0f88021d8a</title>
    <updated>2026-09-05T04:34:26.584799+00:00</updated>
    <author>
      <name>Automation user</name>
      <uri>https://vulnerability.circl.lu/user/automation</uri>
    </author>
    <content>{"uuid": "67d0e898-2bfc-4bbf-91a9-ea0f88021d8a", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "GHSA-mfx4-hv73-q22v", "type": "seen", "source": "https://gist.github.com/alon710/b3523524be79c42fa548f91ed3953ea3", "content": "# CVE-2026-69243: CVE-2026-69243: HTTP Request Smuggling via WebSocket Upgrade State Desynchronization in aiohttp\n\n&amp;gt; **CVSS Score:** 6.3\n&amp;gt; **Published:** 2026-08-03\n&amp;gt; **Full Report:** https://cvereports.com/reports/CVE-2026-69243\n\n## Summary\nAn asynchronous HTTP client/server framework for asyncio and Python, aiohttp prior to version 3.14.2 is vulnerable to HTTP Request Smuggling. The server-side HTTP parser immediately transitions the protocol state to 'upgraded' upon receiving a WebSocket upgrade request before consuming the accompanying request body. If the backend handler rejects the upgrade request while keeping the TCP connection alive, the unconsumed request body remains in the socket buffer and is parsed as a subsequent pipelined HTTP request. This allows an attacker to smuggle requests, bypass frontend reverse proxy controls, and perform unauthorized actions.\n\n## TL;DR\nPrior to version 3.14.2, aiohttp transitions its protocol state to 'upgraded' before reading the body of a WebSocket upgrade request. If the handler rejects the upgrade, any unconsumed body bytes are parsed as a new pipelined HTTP request, enabling request smuggling.\n\n## Exploit Status: POC\n\n## Technical Details\n\n- **CWE ID**: CWE-444\n- **Attack Vector**: Network (AV:N)\n- **CVSS Vector**: CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N\n- **Exploit Status**: poc\n- **KEV Status**: No\n- **Affected Component**: HTTP Parser\n\n## Affected Systems\n\n- aiohttp asynchronous server component\n- **aiohttp**: &amp;lt; 3.14.2 (Fixed in: `3.14.2`)\n\n## Mitigation\n\n- Upgrade to aiohttp version 3.14.2 or higher.\n- Block WebSocket upgrade requests that contain a non-empty request body at the reverse proxy layer.\n- Disable HTTP keep-alive or connection reuse for routes handling WebSocket upgrades.\n\n**Remediation Steps:**\n1. Update standard requirements.txt or dependency lockfiles to require 'aiohttp&amp;gt;=3.14.2'.\n2. Deploy the updated application containers or server instances.\n3. Verify the implementation by sending a test pipelined connection to confirm unconsumed bodies are properly handled without request smuggling.\n\n## References\n\n- [GitHub Security Advisory GHSA-mfx4-hv73-q22v](https://github.com/aio-libs/aiohttp/security/advisories/GHSA-mfx4-hv73-q22v)\n- [Official Pull Request #13017](https://github.com/aio-libs/aiohttp/pull/13017)\n- [Commit 6ae358f0983c3f4d6f67692b2f8e65dc8e091c98](https://github.com/aio-libs/aiohttp/commit/6ae358f0983c3f4d6f67692b2f8e65dc8e091c98)\n- [Release v3.14.2](https://github.com/aio-libs/aiohttp/releases/tag/v3.14.2)\n- [CVE Record](https://www.cve.org/CVERecord?id=CVE-2026-69243)\n\n\n---\n*Generated by [CVEReports](https://cvereports.com/reports/CVE-2026-69243) - Automated Vulnerability Intelligence*", "creation_timestamp": "2026-08-04T03:31:26.671709Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/67d0e898-2bfc-4bbf-91a9-ea0f88021d8a/export"/>
    <published>2026-08-04T03:31:26.671709+00:00</published>
  </entry>
</feed>
