CUPS HPGL Buffer Overflow in ParseCommand() Lets Remote Users Execute Arbitrary Code
SecurityTracker Alert ID: 1012566|
SecurityTracker URL: http://securitytracker.com/id/1012566
(Links to External Site)
Updated: Dec 23 2004|
Original Entry Date: Dec 16 2004
Execution of arbitrary code via network, User access via network|
Exploit Included: Yes |
A vulnerability was reported in CUPS in the processing of HPGL files. A remote user can cause arbitrary code to be executed by the target user.|
D. J. Bernstein reported that a remote user can create a specially crafted HPGL file that, when printed by the target user with CUPS, will execute arbitrary code on the target user's system. The code will run with the privileges of the 'lp' user.
The buffer overflow resides in the ParseCommand() function in 'hpgl-input.c'.
Ariel Berkman is credited with discovering this flaw.
A remote user can cause arbitrary code to be executed on the target system with 'lp' user privileges.|
No solution was available at the time of this entry.|
Vendor URL: www.cups.org/ (Links to External Site)
|Underlying OS: Linux (Any), UNIX (Any)|
This archive entry has one or more follow-up message(s) listed below.|
Source Message Contents
Date: 15 Dec 2004 08:20:11 -0000|
Subject: [remote] [control] CUPS 1.1.22 hpgltops ParseCommand overflows buf
Content-Type: text/plain; charset=us-ascii
Ariel Berkman, a student in my Fall 2004 UNIX Security Holes course, has
discovered a remotely exploitable security hole in CUPS. I'm publishing
this notice, but all the discovery credits should be assigned to
A CUPS installation is at risk whenever it prints an HPGL file obtained
from email (or a web page or any other source that could be controlled
by an attacker). You are at risk if you print data through a CUPS
installation at risk. The source of the HPGL file has complete control
over the CUPS ``lp'' account; in particular, he can read and modify the
files you are printing.
Proof of concept: On an x86 computer running FreeBSD 4.10, as root, type
to download and compile the CUPS package, version 1.1.22 (current).
Then, as any user, save the file 21.hpgl.gz attached to this message,
15 $USER test-title 1 none 21.hpgl > 21.ps
with the unauthorized result that a file named x is removed from the
current directory. (I tested this with a 541-byte environment, as
reported by printenv | wc -c.)
Here's the bug: In hpgl-input.c, ParseCommand() reads any number of
bytes into a 262144-byte buf array.
---D. J. Bernstein, Associate Professor, Department of Mathematics,
Statistics, and Computer Science, University of Illinois at Chicago
Content-Disposition: attachment; filename="21.hpgl.gz"