<?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, 02 Oct 2026 23:26:00 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-34755 — vLLM Affected by Denial of Service via Unbounded Frame Count in video/jpeg Base64 Processing</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2026-34755</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; vllm-project vllm, Red Hat AI Inference Server 3.2, Red Hat AI Inference Server 3.4, Red Hat Enterprise Linux AI 3.4, Red Hat AI Inference Server, Red Hat OpenShift AI (RHOAI)&lt;/p&gt;
&lt;p&gt;vLLM is an inference and serving engine for large language models (LLMs). From 0.7.0 to before 0.19.0, the VideoMediaIO.load_base64() method at vllm/multimodal/media/video.py splits video/jpeg data URLs by comma to extract individual JPEG frames, but does not enforce a frame count limit. The num_frames parameter (default: 32), which is enforced by the load_bytes() code path, is completely bypassed in the video/jpeg base64 path. An attacker can send a single API request containing thousands of comma-separated base64-encoded JPEG frames, causing the server to decode all frames into memory and crash with OOM. This vulnerability is fixed in 0.19.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; vllm-project vllm, Red Hat AI Inference Server 3.2, Red Hat AI Inference Server 3.4, Red Hat Enterprise Linux AI 3.4, Red Hat AI Inference Server, Red Hat OpenShift AI (RHOAI)&lt;/p&gt;
&lt;p&gt;vLLM is an inference and serving engine for large language models (LLMs). From 0.7.0 to before 0.19.0, the VideoMediaIO.load_base64() method at vllm/multimodal/media/video.py splits video/jpeg data URLs by comma to extract individual JPEG frames, but does not enforce a frame count limit. The num_frames parameter (default: 32), which is enforced by the load_bytes() code path, is completely bypassed in the video/jpeg base64 path. An attacker can send a single API request containing thousands of comma-separated base64-encoded JPEG frames, causing the server to decode all frames into memory and crash with OOM. This vulnerability is fixed in 0.19.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2026-34755</guid>
    </item>
    <item>
      <title>GHSA-pq5c-rjhq-qp7p — vLLM: Denial of Service via Unbounded Frame Count in video/jpeg Base64 Processing</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-pq5c-rjhq-qp7p</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: vllm&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `VideoMediaIO.load_base64()` method at `vllm/multimodal/media/video.py:51-62` splits `video/jpeg` data URLs by comma to extract individual JPEG frames, but does not enforce a frame count limit. The `num_frames` parameter (default: 32), which is enforced by the `load_bytes()` code path at line 47-48, is completely bypassed in the `video/jpeg` base64 path. An attacker can send a single API request containing thousands of comma-separated base64-encoded JPEG frames, causing the server to decode all frames into memory and crash with OOM.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;### Vulnerable code&lt;/p&gt;
&lt;p&gt;```python
# video.py:51-62
def load_base64(self, media_type: str, data: str) -&amp;gt; tuple[npt.NDArray, dict[str, Any]]:
    if media_type.lower() == &amp;#34;video/jpeg&amp;#34;:
        load_frame = partial(self.image_io.load_base64, &amp;#34;image/jpeg&amp;#34;)
        return np.stack(
            [np.asarray(load_frame(frame_data)) for frame_data in data.split(&amp;#34;,&amp;#34;)]
            #                                                       ^^^^^^^^^^
            # Unbounded split — no frame count limit
        ), {}
    return self.load_bytes(base64.b64decode(data))
```&lt;/p&gt;
&lt;p&gt;The `load_bytes()` path (line 47-48) properly delegates to a video loader that respects `self.num_frames` (default 32). The `load_base64(&amp;#34;video/jpeg&amp;#34;, ...)` path bypasses this limit entirely — `data.split(&amp;#34;,&amp;#34;)` produces an unbounded list and every frame is decoded into a numpy array.&lt;/p&gt;
&lt;p&gt;### video/jpeg is part of vLLM&amp;#39;s public API&lt;/p&gt;
&lt;p&gt;`video/jpeg` is a vLLM-specific MIME typ…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: vllm&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `VideoMediaIO.load_base64()` method at `vllm/multimodal/media/video.py:51-62` splits `video/jpeg` data URLs by comma to extract individual JPEG frames, but does not enforce a frame count limit. The `num_frames` parameter (default: 32), which is enforced by the `load_bytes()` code path at line 47-48, is completely bypassed in the `video/jpeg` base64 path. An attacker can send a single API request containing thousands of comma-separated base64-encoded JPEG frames, causing the server to decode all frames into memory and crash with OOM.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;### Vulnerable code&lt;/p&gt;
&lt;p&gt;```python
# video.py:51-62
def load_base64(self, media_type: str, data: str) -&amp;gt; tuple[npt.NDArray, dict[str, Any]]:
    if media_type.lower() == &amp;#34;video/jpeg&amp;#34;:
        load_frame = partial(self.image_io.load_base64, &amp;#34;image/jpeg&amp;#34;)
        return np.stack(
            [np.asarray(load_frame(frame_data)) for frame_data in data.split(&amp;#34;,&amp;#34;)]
            #                                                       ^^^^^^^^^^
            # Unbounded split — no frame count limit
        ), {}
    return self.load_bytes(base64.b64decode(data))
```&lt;/p&gt;
&lt;p&gt;The `load_bytes()` path (line 47-48) properly delegates to a video loader that respects `self.num_frames` (default 32). The `load_base64(&amp;#34;video/jpeg&amp;#34;, ...)` path bypasses this limit entirely — `data.split(&amp;#34;,&amp;#34;)` produces an unbounded list and every frame is decoded into a numpy array.&lt;/p&gt;
&lt;p&gt;### video/jpeg is part of vLLM&amp;#39;s public API&lt;/p&gt;
&lt;p&gt;`video/jpeg` is a vLLM-specific MIME typ…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-pq5c-rjhq-qp7p</guid>
    </item>
  </channel>
</rss>
