CVE-2023-36664 Ghostscript pipe device command injection
719d22a6-fcda-4a7e-9637-08c80509fa2c
Ghostscript <= 10.01.1 allows OS command execution when processing filenames prefixed with %pipe% or |. The pipe IODevice routes such filenames to popen(), but path validation reuses the ordinary gs_permit_file_writing allowlist with literal glob matching — there is no dedicated permission class for pipe/exec. Compounding factors: (a) gs_add_outputfile_control_path auto-adds -sOutputFile= argument verbatim to permit_file_writing so -sOutputFile=%pipe%cmd self-permits popen("cmd"); (b) zfile.c check_file_permissions_reduced returns 0 (allow) whenever iodev != iodev_default, bypassing Postscript-level PermitFileWriting for the pipe device; (c) under SAFER, any wildcard in permit-file-write that happens to match the literal "%pipe%cmd" or "|cmd" string is enough to authorise execution. A malicious PS/EPS/PDF can use (%pipe%id) (w) file or setpagedevice with crafted OutputFile to reach popen() and execute attacker-controlled commands.