CVE-2026-11526: GD versions before 2.86 for Perl allow OS command injection and file overwrite via a 2-arg open() of filename arguments in _make_filehandle
Paul Johnson 14 Jun 2026 20:24 UTC
========================================================================
CVE-2026-11526 CPAN Security Group
========================================================================
CVE ID: CVE-2026-11526
Distribution: GD
Versions: before 2.86
MetaCPAN: https://metacpan.org/dist/GD
VCS Repo: https://github.com/lstein/Perl-GD
GD versions before 2.86 for Perl allow OS command injection and file
overwrite via a 2-arg open() of filename arguments in _make_filehandle
Description
-----------
GD versions before 2.86 for Perl allow OS command injection and file
overwrite via a 2-arg open() of filename arguments in _make_filehandle.
GD::Image::_make_filehandle opens a filename argument with Perl's 2-arg
open(), so a filename that begins or ends with a pipe ("| cmd", "cmd
|") or begins with a redirect ("> path", ">> path") is run as a command
or redirect rather than opened as a file. _make_filehandle is the
single open path behind every filename-accepting constructor (new,
newFromPng, newFromJpeg, and the rest); the in-memory *Data variants do
not open a path and are unaffected.
Any caller that forwards untrusted input to one of these constructors
as a pathname can run an arbitrary command or truncate a file under the
process UID.
Problem types
-------------
- CWE-78 Improper Neutralization of Special Elements used in an OS
Command ('OS Command Injection')
- CWE-73 External Control of File Name or Path
Workarounds
-----------
For deployments that cannot upgrade to 2.86, do not pass untrusted
input as a pathname to GD::Image constructors. Callers can open the
file themselves and pass the resulting filehandle, which bypasses the
affected string path.
Solutions
---------
Upgrade to GD 2.86 or later, which opens filename arguments with a
3-arg read open so the filename is never interpreted as a command or
redirect.
References
----------
https://github.com/lstein/Perl-GD/commit/67b163713c6c78dfeb693da0978ae934e5cd8210.patch
https://metacpan.org/release/RURBAN/GD-2.86/changes
--
Paul Johnson - xxxxxx@pjcj.net