<?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://db.gcve.eu</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>Thu, 01 Oct 2026 02:15:53 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-53503 — Thumbor convolution filter allows divide-by-zero in C extension leading to remote DoS</title>
      <link>https://db.gcve.eu/vuln/cve-2026-53503</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; thumbor&lt;/p&gt;
&lt;p&gt;Thumbor is an open-source photo thumbnail service by globo.com. Prior to 7.8.0, Thumbor&amp;#39;s filters:convolution(&amp;lt;matrix&amp;gt;, &amp;lt;columns&amp;gt;, &amp;lt;should_normalize&amp;gt;) filter passes the user-controlled &amp;lt;columns&amp;gt; value to a C extension (thumbor/ext/filters/_convolution.c) where it is used as a divisor (for % and /) without validating columns &amp;gt; 0. When columns=0, the C code triggers undefined behavior; on x86_64 this reliably results in a fatal divide-by-zero trap (SIGFPE) and crashes the Thumbor process, causing a remote denial of service. This issue is fixed in 7.8.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; thumbor&lt;/p&gt;
&lt;p&gt;Thumbor is an open-source photo thumbnail service by globo.com. Prior to 7.8.0, Thumbor&amp;#39;s filters:convolution(&amp;lt;matrix&amp;gt;, &amp;lt;columns&amp;gt;, &amp;lt;should_normalize&amp;gt;) filter passes the user-controlled &amp;lt;columns&amp;gt; value to a C extension (thumbor/ext/filters/_convolution.c) where it is used as a divisor (for % and /) without validating columns &amp;gt; 0. When columns=0, the C code triggers undefined behavior; on x86_64 this reliably results in a fatal divide-by-zero trap (SIGFPE) and crashes the Thumbor process, causing a remote denial of service. This issue is fixed in 7.8.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-53503</guid>
    </item>
    <item>
      <title>PYSEC-2026-3619 — Thumbor convolution filter allows divide-by-zero in C extension leading to remote DoS</title>
      <link>https://db.gcve.eu/vuln/pysec-2026-3619</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: thumbor&lt;/p&gt;
&lt;p&gt;### Summary
Thumbor&amp;#39;s `filters:convolution(&amp;lt;matrix&amp;gt;, &amp;lt;columns&amp;gt;, &amp;lt;should_normalize&amp;gt;)` filter passes the user-controlled `&amp;lt;columns&amp;gt;` value to a C extension (`thumbor/ext/filters/_convolution.c`) where it is used as a divisor (for `%` and `/`) without validating `columns &amp;gt; 0`. When `columns=0`, the C code triggers undefined behavior; on x86_64 this reliably results in a fatal divide-by-zero trap (SIGFPE) and crashes the Thumbor process (confirmed on Linux x86_64 and macOS Intel x86_64), causing a remote denial of service.&lt;/p&gt;
&lt;p&gt;### Details
#### Root cause
The Python filter accepts `columns=0`, and the native C extension uses `columns_count` as a divisor without validating it.&lt;/p&gt;
&lt;p&gt;1) Python filter entry point allows `columns=0` (`thumbor/filters/convolution.py`):
```python
@filter_method(
    r&amp;#34;(?:[-]?[\d]+\.?[\d]*[;])*(?:[-]?[\d]+\.?[\d]*)&amp;#34;,
    BaseFilter.PositiveNumber,  # accepts 0
    BaseFilter.Boolean,
)
async def convolution(self, matrix, columns, should_normalize=True):
    ...
    imgdata = _convolution.apply(..., matrix, columns, should_normalize)
```
`BaseFilter.PositiveNumber` matches `&amp;#34;0&amp;#34;` (`thumbor/filters/__init__.py`):
```python
class BaseFilter:
    PositiveNumber = {&amp;#34;regex&amp;#34;: r&amp;#34;[\d]+&amp;#34;, &amp;#34;parse&amp;#34;: int}  # matches &amp;#34;0&amp;#34;
    PositiveNonZeroNumber = {&amp;#34;regex&amp;#34;: r&amp;#34;[\d]*[1-9][\d]*&amp;#34;, &amp;#34;parse&amp;#34;: int}
```&lt;/p&gt;
&lt;p&gt;2) C extension divides/modulos by `columns_count` without a zero check (`thumbor/ext/filters/_convolution.c`):
```c
kernel_size = PyTuple_Size(kernel_tuple);
if ((kernel_size % colum…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: thumbor&lt;/p&gt;
&lt;p&gt;### Summary
Thumbor&amp;#39;s `filters:convolution(&amp;lt;matrix&amp;gt;, &amp;lt;columns&amp;gt;, &amp;lt;should_normalize&amp;gt;)` filter passes the user-controlled `&amp;lt;columns&amp;gt;` value to a C extension (`thumbor/ext/filters/_convolution.c`) where it is used as a divisor (for `%` and `/`) without validating `columns &amp;gt; 0`. When `columns=0`, the C code triggers undefined behavior; on x86_64 this reliably results in a fatal divide-by-zero trap (SIGFPE) and crashes the Thumbor process (confirmed on Linux x86_64 and macOS Intel x86_64), causing a remote denial of service.&lt;/p&gt;
&lt;p&gt;### Details
#### Root cause
The Python filter accepts `columns=0`, and the native C extension uses `columns_count` as a divisor without validating it.&lt;/p&gt;
&lt;p&gt;1) Python filter entry point allows `columns=0` (`thumbor/filters/convolution.py`):
```python
@filter_method(
    r&amp;#34;(?:[-]?[\d]+\.?[\d]*[;])*(?:[-]?[\d]+\.?[\d]*)&amp;#34;,
    BaseFilter.PositiveNumber,  # accepts 0
    BaseFilter.Boolean,
)
async def convolution(self, matrix, columns, should_normalize=True):
    ...
    imgdata = _convolution.apply(..., matrix, columns, should_normalize)
```
`BaseFilter.PositiveNumber` matches `&amp;#34;0&amp;#34;` (`thumbor/filters/__init__.py`):
```python
class BaseFilter:
    PositiveNumber = {&amp;#34;regex&amp;#34;: r&amp;#34;[\d]+&amp;#34;, &amp;#34;parse&amp;#34;: int}  # matches &amp;#34;0&amp;#34;
    PositiveNonZeroNumber = {&amp;#34;regex&amp;#34;: r&amp;#34;[\d]*[1-9][\d]*&amp;#34;, &amp;#34;parse&amp;#34;: int}
```&lt;/p&gt;
&lt;p&gt;2) C extension divides/modulos by `columns_count` without a zero check (`thumbor/ext/filters/_convolution.c`):
```c
kernel_size = PyTuple_Size(kernel_tuple);
if ((kernel_size % colum…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/pysec-2026-3619</guid>
    </item>
  </channel>
</rss>
