<?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>Fri, 23 Oct 2026 19:29:02 +0000</lastBuildDate>
    <item>
      <title>BREW-aider-CVE-2026-112900 — Pillow: Argument Injection in Ghostscript call, potentially leading into RCE</title>
      <link>https://db.gcve.eu/vuln/brew-aider-cve-2026-112900</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: aider&lt;/p&gt;
&lt;p&gt;### Summary
`PIL.EpsImagePlugin.Ghostscript()` builds the Ghostscript command line using the input file path (`fp.name`) **without sanitization**, placing it at `-f &amp;lt;infile&amp;gt;`. A filename beginning with `-` is interpreted by Ghostscript as an option, giving command-line argument injection; chainable to RCE (see Impact). Reproduces with Pillow&amp;#39;s default invocation (with `-dSAFER` enabled).&lt;/p&gt;
&lt;p&gt;### Details
_Give all details on the vulnerability. Pointing to the incriminated source code is very helpful for the maintainer._&lt;/p&gt;
&lt;p&gt;#### Type
CWE-88 (Argument Injection) (→ CWE-78 (OS Command Injection) optionally, with attacker controlled text file)&lt;/p&gt;
&lt;p&gt;#### Vulnerable Codes&lt;/p&gt;
&lt;p&gt;```python
infile_temp = None
if hasattr(fp, &amp;#34;name&amp;#34;) and os.path.exists(fp.name):
    infile = fp.name                      # user-controlled path used as-is, without validation
else:
    in_fd, infile_temp = tempfile.mkstemp()
    os.close(in_fd)
    infile = infile_temp
    # ... (copy fp into a temporary file)&lt;/p&gt;
&lt;p&gt;# Build Ghostscript command
command = [
    gs_binary,
    &amp;#34;-q&amp;#34;,
    f&amp;#34;-g{width:d}x{height:d}&amp;#34;,
    f&amp;#34;-r{res_x:f}x{res_y:f}&amp;#34;,
    &amp;#34;-dBATCH&amp;#34;,
    &amp;#34;-dNOPAUSE&amp;#34;,
    &amp;#34;-dSAFER&amp;#34;,                            # default sandbox — does NOT stop this injection
    f&amp;#34;-sDEVICE={device}&amp;#34;,
    f&amp;#34;-sOutputFile={outfile}&amp;#34;,
    &amp;#34;-c&amp;#34;,
    f&amp;#34;{-bbox[0]} {-bbox[1]} translate&amp;#34;,
    &amp;#34;-f&amp;#34;,
    infile,                               # injected here: inserted into argv with no check for
                                          # option prefi…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: aider&lt;/p&gt;
&lt;p&gt;### Summary
`PIL.EpsImagePlugin.Ghostscript()` builds the Ghostscript command line using the input file path (`fp.name`) **without sanitization**, placing it at `-f &amp;lt;infile&amp;gt;`. A filename beginning with `-` is interpreted by Ghostscript as an option, giving command-line argument injection; chainable to RCE (see Impact). Reproduces with Pillow&amp;#39;s default invocation (with `-dSAFER` enabled).&lt;/p&gt;
&lt;p&gt;### Details
_Give all details on the vulnerability. Pointing to the incriminated source code is very helpful for the maintainer._&lt;/p&gt;
&lt;p&gt;#### Type
CWE-88 (Argument Injection) (→ CWE-78 (OS Command Injection) optionally, with attacker controlled text file)&lt;/p&gt;
&lt;p&gt;#### Vulnerable Codes&lt;/p&gt;
&lt;p&gt;```python
infile_temp = None
if hasattr(fp, &amp;#34;name&amp;#34;) and os.path.exists(fp.name):
    infile = fp.name                      # user-controlled path used as-is, without validation
else:
    in_fd, infile_temp = tempfile.mkstemp()
    os.close(in_fd)
    infile = infile_temp
    # ... (copy fp into a temporary file)&lt;/p&gt;
&lt;p&gt;# Build Ghostscript command
command = [
    gs_binary,
    &amp;#34;-q&amp;#34;,
    f&amp;#34;-g{width:d}x{height:d}&amp;#34;,
    f&amp;#34;-r{res_x:f}x{res_y:f}&amp;#34;,
    &amp;#34;-dBATCH&amp;#34;,
    &amp;#34;-dNOPAUSE&amp;#34;,
    &amp;#34;-dSAFER&amp;#34;,                            # default sandbox — does NOT stop this injection
    f&amp;#34;-sDEVICE={device}&amp;#34;,
    f&amp;#34;-sOutputFile={outfile}&amp;#34;,
    &amp;#34;-c&amp;#34;,
    f&amp;#34;{-bbox[0]} {-bbox[1]} translate&amp;#34;,
    &amp;#34;-f&amp;#34;,
    infile,                               # injected here: inserted into argv with no check for
                                          # option prefi…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/brew-aider-cve-2026-112900</guid>
    </item>
    <item>
      <title>fkie_cve-2026-112900</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-112900</link>
      <description>&lt;p&gt;Pillow is a Python imaging library. From 2.6.0 until 13.0.0, Pillow is vulnerable to argument injection when invoking Ghostscript for EPS input. EpsImagePlugin.Ghostscript passes a caller-controlled input filename after -f without converting it to a safe absolute path, so a name beginning with a hyphen can be interpreted as a Ghostscript option. An attacker who controls the filename can inject Ghostscript arguments. Arbitrary command execution specifically requires a leading @ argument-file filename and control of the referenced text file containing additional Ghostscript arguments; the reported chain reproduces with the default -dSAFER invocation. This issue is fixed in version 13.0.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Pillow is a Python imaging library. From 2.6.0 until 13.0.0, Pillow is vulnerable to argument injection when invoking Ghostscript for EPS input. EpsImagePlugin.Ghostscript passes a caller-controlled input filename after -f without converting it to a safe absolute path, so a name beginning with a hyphen can be interpreted as a Ghostscript option. An attacker who controls the filename can inject Ghostscript arguments. Arbitrary command execution specifically requires a leading @ argument-file filename and control of the referenced text file containing additional Ghostscript arguments; the reported chain reproduces with the default -dSAFER invocation. This issue is fixed in version 13.0.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-112900</guid>
    </item>
    <item>
      <title>GHSA-w889-685w-c8fh — Pillow: Argument Injection in Ghostscript call, potentially leading into RCE</title>
      <link>https://db.gcve.eu/vuln/ghsa-w889-685w-c8fh</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: Pillow&lt;/p&gt;
&lt;p&gt;### Summary
`PIL.EpsImagePlugin.Ghostscript()` builds the Ghostscript command line using the input file path (`fp.name`) **without sanitization**, placing it at `-f &amp;lt;infile&amp;gt;`. A filename beginning with `-` is interpreted by Ghostscript as an option, giving command-line argument injection; chainable to RCE (see Impact). Reproduces with Pillow&amp;#39;s default invocation (with `-dSAFER` enabled).&lt;/p&gt;
&lt;p&gt;### Details
_Give all details on the vulnerability. Pointing to the incriminated source code is very helpful for the maintainer._&lt;/p&gt;
&lt;p&gt;#### Type
CWE-88 (Argument Injection) (→ CWE-78 (OS Command Injection) optionally, with attacker controlled text file)&lt;/p&gt;
&lt;p&gt;#### Vulnerable Codes&lt;/p&gt;
&lt;p&gt;```python
infile_temp = None
if hasattr(fp, &amp;#34;name&amp;#34;) and os.path.exists(fp.name):
    infile = fp.name                      # user-controlled path used as-is, without validation
else:
    in_fd, infile_temp = tempfile.mkstemp()
    os.close(in_fd)
    infile = infile_temp
    # ... (copy fp into a temporary file)&lt;/p&gt;
&lt;p&gt;# Build Ghostscript command
command = [
    gs_binary,
    &amp;#34;-q&amp;#34;,
    f&amp;#34;-g{width:d}x{height:d}&amp;#34;,
    f&amp;#34;-r{res_x:f}x{res_y:f}&amp;#34;,
    &amp;#34;-dBATCH&amp;#34;,
    &amp;#34;-dNOPAUSE&amp;#34;,
    &amp;#34;-dSAFER&amp;#34;,                            # default sandbox — does NOT stop this injection
    f&amp;#34;-sDEVICE={device}&amp;#34;,
    f&amp;#34;-sOutputFile={outfile}&amp;#34;,
    &amp;#34;-c&amp;#34;,
    f&amp;#34;{-bbox[0]} {-bbox[1]} translate&amp;#34;,
    &amp;#34;-f&amp;#34;,
    infile,                               # injected here: inserted into argv with no check for
                                          # option prefi…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: Pillow&lt;/p&gt;
&lt;p&gt;### Summary
`PIL.EpsImagePlugin.Ghostscript()` builds the Ghostscript command line using the input file path (`fp.name`) **without sanitization**, placing it at `-f &amp;lt;infile&amp;gt;`. A filename beginning with `-` is interpreted by Ghostscript as an option, giving command-line argument injection; chainable to RCE (see Impact). Reproduces with Pillow&amp;#39;s default invocation (with `-dSAFER` enabled).&lt;/p&gt;
&lt;p&gt;### Details
_Give all details on the vulnerability. Pointing to the incriminated source code is very helpful for the maintainer._&lt;/p&gt;
&lt;p&gt;#### Type
CWE-88 (Argument Injection) (→ CWE-78 (OS Command Injection) optionally, with attacker controlled text file)&lt;/p&gt;
&lt;p&gt;#### Vulnerable Codes&lt;/p&gt;
&lt;p&gt;```python
infile_temp = None
if hasattr(fp, &amp;#34;name&amp;#34;) and os.path.exists(fp.name):
    infile = fp.name                      # user-controlled path used as-is, without validation
else:
    in_fd, infile_temp = tempfile.mkstemp()
    os.close(in_fd)
    infile = infile_temp
    # ... (copy fp into a temporary file)&lt;/p&gt;
&lt;p&gt;# Build Ghostscript command
command = [
    gs_binary,
    &amp;#34;-q&amp;#34;,
    f&amp;#34;-g{width:d}x{height:d}&amp;#34;,
    f&amp;#34;-r{res_x:f}x{res_y:f}&amp;#34;,
    &amp;#34;-dBATCH&amp;#34;,
    &amp;#34;-dNOPAUSE&amp;#34;,
    &amp;#34;-dSAFER&amp;#34;,                            # default sandbox — does NOT stop this injection
    f&amp;#34;-sDEVICE={device}&amp;#34;,
    f&amp;#34;-sOutputFile={outfile}&amp;#34;,
    &amp;#34;-c&amp;#34;,
    f&amp;#34;{-bbox[0]} {-bbox[1]} translate&amp;#34;,
    &amp;#34;-f&amp;#34;,
    infile,                               # injected here: inserted into argv with no check for
                                          # option prefi…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-w889-685w-c8fh</guid>
    </item>
    <item>
      <title>openSUSE-SU-2026:12230-1 — python313-Pillow-13.0.0-1.1 on GA media</title>
      <link>https://db.gcve.eu/vuln/opensuse-su-2026:12230-1</link>
      <description>&lt;p&gt;python313-Pillow-13.0.0-1.1 on GA media&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;python313-Pillow-13.0.0-1.1 on GA media&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/opensuse-su-2026:12230-1</guid>
    </item>
    <item>
      <title>UBUNTU-CVE-2026-112900</title>
      <link>https://db.gcve.eu/vuln/ubuntu-cve-2026-112900</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:Pro:14.04:LTS: pillow, Ubuntu:Pro:16.04:LTS: pillow, Ubuntu:Pro:18.04:LTS: pillow, Ubuntu:Pro:20.04:LTS: pillow, Ubuntu:Pro:20.04:LTS: pillow-python2, Ubuntu:22.04:LTS: pillow, Ubuntu:24.04:LTS: pillow, Ubuntu:26.10: pillow, Ubuntu:26.04:LTS: pillow&lt;/p&gt;
&lt;p&gt;(Pillow is a Python imaging library. From 2.6.0 until 13.0.0, Pillow is ...)&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:Pro:14.04:LTS: pillow, Ubuntu:Pro:16.04:LTS: pillow, Ubuntu:Pro:18.04:LTS: pillow, Ubuntu:Pro:20.04:LTS: pillow, Ubuntu:Pro:20.04:LTS: pillow-python2, Ubuntu:22.04:LTS: pillow, Ubuntu:24.04:LTS: pillow, Ubuntu:26.10: pillow, Ubuntu:26.04:LTS: pillow&lt;/p&gt;
&lt;p&gt;(Pillow is a Python imaging library. From 2.6.0 until 13.0.0, Pillow is ...)&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ubuntu-cve-2026-112900</guid>
    </item>
  </channel>
</rss>
