<?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/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-29T15:39:34.069930+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 entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2025-54121</id>
    <title>CVE-2025-54121 — Starlette has possible denial-of-service vector when parsing large files in multipart forms</title>
    <updated>2026-09-29T15:39:34.073099+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> encode starlette</p>
<p>Starlette is a lightweight ASGI (Asynchronous Server Gateway Interface) framework/toolkit, designed for building async web services in Python. In versions 0.47.1 and below, when parsing a multi-part form with large files (greater than the default max spool size) starlette will block the main thread to roll the file over to disk. This blocks the event thread which means the application can't accept new connections. The UploadFile code has a minor bug where instead of just checking for self._in_memory, the logic should also check if the additional bytes will cause a rollover. The vulnerability is fixed in version 0.47.2.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2025-54121"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-2c2j-9gv5-cj73</id>
    <title>GHSA-2c2j-9gv5-cj73 — Starlette has possible denial-of-service vector when parsing large files in multipart forms</title>
    <updated>2026-09-29T15:39:34.073232+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: starlette</p>
<p>### Summary
When parsing a multi-part form with large files (greater than the [default max spool size](https://github.com/encode/starlette/blob/fa5355442753f794965ae1af0f87f9fec1b9a3de/starlette/formparsers.py#L126)) `starlette` will block the main thread to roll the file over to disk. This blocks the event thread which means we can't accept new connections.</p>
<p>### Details
Please see this discussion for details: https://github.com/encode/starlette/discussions/2927#discussioncomment-13721403. In summary the following UploadFile code (copied from [here](https://github.com/encode/starlette/blob/fa5355442753f794965ae1af0f87f9fec1b9a3de/starlette/datastructures.py#L436C5-L447C14)) has a minor bug. Instead of just checking for `self._in_memory` we should also check if the additional bytes will cause a rollover.</p>
<p>```python</p>
<p>@property
    def _in_memory(self) -&gt; bool:
        # check for SpooledTemporaryFile._rolled
        rolled_to_disk = getattr(self.file, "_rolled", True)
        return not rolled_to_disk</p>
<p>async def write(self, data: bytes) -&gt; None:
        if self.size is not None:
            self.size += len(data)</p>
<p>if self._in_memory:
            self.file.write(data)
        else:
            await run_in_threadpool(self.file.write, data)
```</p>
<p>I have already created a PR which fixes the problem: https://github.com/encode/starlette/pull/2962</p>
<p>### PoC
See the discussion [here](https://github.com/encode/starlette/discussions/2927#discussioncomment-13721403) for s…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-2c2j-9gv5-cj73"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/pysec-2026-1941</id>
    <title>PYSEC-2026-1941 — Starlette has possible denial-of-service vector when parsing large files in multipart forms</title>
    <updated>2026-09-29T15:39:34.073373+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: starlette</p>
<p>### Summary
When parsing a multi-part form with large files (greater than the [default max spool size](https://github.com/encode/starlette/blob/fa5355442753f794965ae1af0f87f9fec1b9a3de/starlette/formparsers.py#L126)) `starlette` will block the main thread to roll the file over to disk. This blocks the event thread which means we can't accept new connections.</p>
<p>### Details
Please see this discussion for details: https://github.com/encode/starlette/discussions/2927#discussioncomment-13721403. In summary the following UploadFile code (copied from [here](https://github.com/encode/starlette/blob/fa5355442753f794965ae1af0f87f9fec1b9a3de/starlette/datastructures.py#L436C5-L447C14)) has a minor bug. Instead of just checking for `self._in_memory` we should also check if the additional bytes will cause a rollover.</p>
<p>```python</p>
<p>@property
    def _in_memory(self) -&gt; bool:
        # check for SpooledTemporaryFile._rolled
        rolled_to_disk = getattr(self.file, "_rolled", True)
        return not rolled_to_disk</p>
<p>async def write(self, data: bytes) -&gt; None:
        if self.size is not None:
            self.size += len(data)</p>
<p>if self._in_memory:
            self.file.write(data)
        else:
            await run_in_threadpool(self.file.write, data)
```</p>
<p>I have already created a PR which fixes the problem: https://github.com/encode/starlette/pull/2962</p>
<p>### PoC
See the discussion [here](https://github.com/encode/starlette/discussions/2927#discussioncomment-13721403) for s…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/pysec-2026-1941"/>
  </entry>
</feed>
