<?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://vulnerability.circl.lu</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>Wed, 30 Sep 2026 11:59:31 +0000</lastBuildDate>
    <item>
      <title>BIT-pillow-2026-54060 — Pillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()`</title>
      <link>https://vulnerability.circl.lu/vuln/bit-pillow-2026-54060</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Bitnami: pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(&amp;#34;1&amp;#34;, (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Bitnami: pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(&amp;#34;1&amp;#34;, (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/bit-pillow-2026-54060</guid>
    </item>
    <item>
      <title>CVE-2026-54060 — Pillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()`</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-54060</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; python-pillow Pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(&amp;#34;1&amp;#34;, (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; python-pillow Pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(&amp;#34;1&amp;#34;, (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-54060</guid>
    </item>
    <item>
      <title>GHSA-5x94-69rx-g8h2 — Pillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()`</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-5x94-69rx-g8h2</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pillow&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;`PIL/FontFile.py` `FontFile.compile()` assembles per-glyph images into a single combined bitmap using `Image.new(&amp;#34;1&amp;#34;, (xsize, ysize))` without calling `Image._decompression_bomb_check()`. This is the base-class method shared by both `BdfFontFile` and `PcfFontFile`, and it is triggered whenever a loaded font is converted to an `ImageFont` or saved.&lt;/p&gt;
&lt;p&gt;Neither `BdfFontFile.BdfFontFile(fp)` nor `PcfFontFile.PcfFontFile(fp)` is registered with `Image.register_open()`, so Pillow&amp;#39;s standard decompression bomb guard never fires for font objects. The compile step is the final opportunity to check the combined allocation — and it has no check.&lt;/p&gt;
&lt;p&gt;**Vulnerable code (`PIL/FontFile.py` lines ~64–92):**&lt;/p&gt;
&lt;p&gt;```python
def compile(self) -&amp;gt; None:
    if self.bitmap:
        return&lt;/p&gt;
&lt;p&gt;h = w = maxwidth = 0
    lines = 1
    for glyph in self.glyph:              # up to 256 glyph slots
        if glyph:
            d, dst, src, im = glyph
            h = max(h, src[3] - src[1])   # max glyph height — attacker-controlled
            w = w + (src[2] - src[0])
            if w &amp;gt; WIDTH:                  # WIDTH = 800
                lines += 1
                w = src[2] - src[0]
            maxwidth = max(maxwidth, w)&lt;/p&gt;
&lt;p&gt;xsize = maxwidth                       # ≤ 800 (capped by WIDTH constant)
    ysize = lines * h                      # ← lines(256) × h(65535) = 16,776,960&lt;/p&gt;
&lt;p&gt;if xsize == 0 and ysize == 0:
        return&lt;/p&gt;
&lt;p&gt;self.ysize = h
    # NO _decompression_bomb_check() here…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pillow&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;`PIL/FontFile.py` `FontFile.compile()` assembles per-glyph images into a single combined bitmap using `Image.new(&amp;#34;1&amp;#34;, (xsize, ysize))` without calling `Image._decompression_bomb_check()`. This is the base-class method shared by both `BdfFontFile` and `PcfFontFile`, and it is triggered whenever a loaded font is converted to an `ImageFont` or saved.&lt;/p&gt;
&lt;p&gt;Neither `BdfFontFile.BdfFontFile(fp)` nor `PcfFontFile.PcfFontFile(fp)` is registered with `Image.register_open()`, so Pillow&amp;#39;s standard decompression bomb guard never fires for font objects. The compile step is the final opportunity to check the combined allocation — and it has no check.&lt;/p&gt;
&lt;p&gt;**Vulnerable code (`PIL/FontFile.py` lines ~64–92):**&lt;/p&gt;
&lt;p&gt;```python
def compile(self) -&amp;gt; None:
    if self.bitmap:
        return&lt;/p&gt;
&lt;p&gt;h = w = maxwidth = 0
    lines = 1
    for glyph in self.glyph:              # up to 256 glyph slots
        if glyph:
            d, dst, src, im = glyph
            h = max(h, src[3] - src[1])   # max glyph height — attacker-controlled
            w = w + (src[2] - src[0])
            if w &amp;gt; WIDTH:                  # WIDTH = 800
                lines += 1
                w = src[2] - src[0]
            maxwidth = max(maxwidth, w)&lt;/p&gt;
&lt;p&gt;xsize = maxwidth                       # ≤ 800 (capped by WIDTH constant)
    ysize = lines * h                      # ← lines(256) × h(65535) = 16,776,960&lt;/p&gt;
&lt;p&gt;if xsize == 0 and ysize == 0:
        return&lt;/p&gt;
&lt;p&gt;self.ysize = h
    # NO _decompression_bomb_check() here…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-5x94-69rx-g8h2</guid>
    </item>
    <item>
      <title>PYSEC-2026-2254</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-2254</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(&amp;#34;1&amp;#34;, (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(&amp;#34;1&amp;#34;, (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-2254</guid>
    </item>
  </channel>
</rss>
