Buffer Overflow In Sun Solaris in.lpd Print Daemon
Last revised: August 31, 2001
A complete revision history can be found at the end of this file.
- Solaris 2.6 for SPARC
- Solaris 2.6 x86
- Solaris 7 for SPARC
- Solaris 7 x86
- Solaris 8 for SPARC
- Solaris 8 x86
A buffer overflow exists in the Solaris BSD-style line printer daemon, in.lpd, that may allow a remote intruder to execute arbitrary code with the privileges of the running daemon. This daemon runs with root privileges on all default installations of vulnerable Solaris systems listed above.
The Solaris in.lpd provides BSD-style services for remote users to interact with a local printer, listening for remote requests on port 515/tcp (printer). There is an unchecked buffer in the part of the code responsible for transferring print jobs from one machine to another. If given too many jobs to work on at once, the printer daemon may crash or allow arbitrary code to be executed with elevated privileges on the victim system.
This problem was discovered by the ISS X-Force who have released an advisory:
Although the CERT/CC has not received any reports of this vulnerability being successfully exploited, we do strongly encourage all affected system adminsitrators to take one or more of the recommended actions in III. Solution. Such actions have proven effective at minimizing the likelihood of being successfully attacked using vulnerabilities similar to this one.
A remote intruder may be able to execute arbitrary code with the privileges in the running daemon (typically root). In addition, a remote intruder may be able to crash vulnerable printer daemons.
Apply patches as soon as possible
Patches have been released by Sun. They are part of a jumbo lp patch set identified by the following ids, per Sun Security Bulletin #206:
The following patches are available in relation to the above problem. OS Version Patch ID __________ _________ SunOS 5.8 109320-04 SunOS 5.8_x86 109321-04 SunOS 5.7 107115-09 SunOS 5.7_x86 107116-09 SunOS 5.6 106235-09 SunOS 5.6_x86 106236-09Patches listed here are available at:
The in.lpd daemon was not available prior to Solaris 2.6.
These patches resolve Sun problem report 4446925 *in.lpd* contains a remote exploitable overflow.
The complete signed text of Sun Security Bulletin #206 may be found at:
Implement a workaround
A number of different workaround strategies have been suggested for dealing with this problem until patches can be applied:
- Disable the print service in /etc/inetd.conf if remote print job handling is unnecessary; see the ISS X-Force advisory for step-by-step details if needed
- Enable the noexec_user_stack tunable (although this does not provide 100 percent protection against exploitation of this vulnerability, it makes the likelihood of a successful exploit much smaller). Add the following lines to the
/etc/system file and reboot:
set noexec_user_stack = 1 set noexec_user_stack_log = 1
- Block access to network port 515/tcp (printer) at all appropriate network perimeters
- Deploy tcpwrappers, also available in the tcpd-7.6 package at:
- CVE Name: CAN-2001-0353
- Sun Security Bulletin Archive
The CERT Coordination Center thanks Sun Microsystems for contributing to the creation of this advisory.
This document was written by Jeffrey S. Havrilla. If you have feedback concerning this document, please send email to:
Copyright 2001 Carnegie Mellon University.
Jun 29, 2001: Initial release Jul 02, 2001: Fixed broken link to vulnerability note Aug 31, 2001: Updated with patch information from Sun Security Bulletin #206