[ advisories | exploits | discussions | news | conventions | security tools | texts & papers ]
 main menu
- feedback
- advertising
- privacy
- FightAIDS
- newsletter
- news
 
 discussions
- read forum
- new topic
- search
 

 meetings
- meetings list
- recent additions
- add your info
 
 top 100 sites
- visit top sites
- sign up now
- members
 
 webmasters

- add your url
- add domain
- search box
- link to us

 
 projects
- our projects
- free email
 
 m4d network
- security software
- secureroot
- m4d.com
Home : Advisories : GNU Groff utilities read untrusted commands from current working directory

Title: GNU Groff utilities read untrusted commands from current working directory
Released by: ISS
Date: 4th October 2000
Printable version: Click here
-----BEGIN PGP SIGNED MESSAGE-----



Internet Security Systems Security Advisory

October 4, 2000



GNU Groff utilities read untrusted commands from current working

directory



Synopsis:



Internet Security Systems (ISS) has identified vulnerabilities in several

utilities that ship as part of the Groff document formatting system package.



By default, the "troff" program reads its "troffrc" initialization file from

the current working directory.  From a security standpoint, it would be

desirable to restrict the searchable path for this file to the invoker's

home directory and/or a trusted system. Unfortunately, this could present

problems for programs that depend on the current behavior.



The "groff" program, a front-end for troff, has a similar problem.  It looks

for the appropriate device description file (as given by the -T parameter, or

"ps" by default) using devname/DESC in the current working directory.  The

device description file may contain an optional "postpro" directive, which

defines a command to be run after normal processing. A malicious user could

place a trojan device description file in a world-writable directory

(i.e. /tmp), after which any invocations of groff from that directory are

unsafe.



Impact:



Unsuspecting users, including root, could be coerced into running arbitrary

commands on the system.



The vulnerability is particularly dangerous in Linux distributions that have

the "lesspipe" feature.  By default, a "LESSOPEN" environment variable is set

which points to a wrapper script for the "less" pager program named

"/usr/bin/lesspipe.sh".  If less is passed a filename with any of the

extensions ".1" through ".9", ".n", or ".man", it automatically calls groff

to handle the file.



Description:



Troff is a document processor that ships with most Unix systems.  Among other

functions, it formats system manual pages into human-readable form.  The GNU

Groff package includes "troff", the main processing program, and "groff", a

front-end for troff.  Typically, troff is invoked by groff.



Troff supports a set of potentially dangerous macros: "open", "opena", "pso",

"sy", and "pi", which provide the means to write to files and execute

external commands.  For example, "opena" opens a file for writing in append

mode and "sy" performs a C system() call with the specified argument.



The default in groff is that these dangerous macros are disabled.  This is

accomplished by another macro defined in the file "tmac.safer".  Unless

overridden by the -U (unsafe) flag, the groff program passes troff the

flag "-msafer", which instructs troff to process the tmac.safer macro

before the input file.  However, before troff processes the tmac.safer macro,

it first looks for a "troffrc" initialization file.  If one is found, it

executes the commands found therein first, bypassing the dangerous macro

protection.  As mentioned above, troff looks for this initialization file in

the current directory, creating a potentially dangerous situation.



Groff (speaking of the actual program now, not the package as a whole) is

a front-end for troff.  It supports a variety of devices. For example, the

PostScript device is named "ps" and allows groff to generate output that

is fit to print on PostScript printers. There is a device for HTML, and one

called "ascii" that's used to pretty-print text on typewriter-like devices.



Each device supported by groff has a corresponding directory of the name

"dev", where  is "ps", "ascii", etc.  These directories are

typically installed under some trusted path on the system, i.e., /usr/lib.

The device description file is named "dev/DESC".  Since groff blindly

trusts "DESC" files contained under the current directory hierarchy, an

attacker may be able to fool another user into running any arbitrary

command using the "postpro" directive.



Solar Designer  points out that the aforementioned files

are not alone in the set that may be accessed from the current directory.

Other hard-coded filenames, such as "troffrc-end", could fall within the `.'

search path as well (troffrc-end is loaded after the -msafer macros, though).

In fact, the macro files themselves reference other files that could reside

in the current directory.



Recommendations:



Both administrators and users should exercise caution and not run "groff",

"troff", or even the "man" command from untrusted directories.



Internet Security Systems has not received a response from the current GNU

Groff maintainer. In the interest of accelerating the elimination of these

vulnerabilities, this advisory is being disseminated to the open source

community for public discussion.



Internet Security Systems recognizes that reading from the current directory

is traditional groff/troff behavior, and that in many document-creating

scenarios it is actually a useful `feature'. One possibility could be to not

trust the current directory at all by default, perhaps requiring a special

command line option to revert to the old behavior. At any rate, the fix is

not obvious, as per Solar Designer's analysis.



Note that troff's -R option ("Don't load troffrc") does not eliminate the

problem.



Additional Information:



The dangerous Troff macros were discussed on the BUGTRAQ mailing list in

July, 1999 on a thread under the subject heading of "Troff dangerous".  A

searchable archive of the BUGTRAQ list is at: http://www.securityfocus.com.



The Groff package can be found at the following FTP location:



http://ftp.gnu.org/pub/gnu/groff



The Common Vulnerabilities and Exposures (CVE) project has assigned the name

CAN-2000-0803 to this issue.  This is a candidate for inclusion in the CVE

list (http://cve.mitre.org), which standardizes names for security problems.





Credits:



This vulnerability was discovered and researched by Aaron Campbell and

Allen Wilson of the ISS X-Force. Internet Security Systems would like to

acknowledge Solar Designer for his analysis of this problem.



_______



About Internet Security Systems (ISS)

Internet Security Systems (ISS) is a leading global provider of security

management solutions for the Internet. By providing industry-leading

SAFEsuite security software, remote managed security services, and

strategic consulting and education offerings, ISS is a trusted security

provider to its customers, protecting digital assets and ensuring safe

and uninterrupted e-business. ISS' security management solutions protect

more than 5,500 customers worldwide including 21 of the 25 largest U.S.

commercial banks, 10 of the largest telecommunications companies and

over 35 government agencies. Founded in 1994, ISS is headquartered in

Atlanta, GA, with additional offices throughout North America and

international operations in Asia, Australia, Europe, Latin America and

the Middle East. For more information, visit the Internet Security

Systems web site at www.iss.net or call 888-901-7477.



Copyright (c) 2000 by Internet Security Systems, Inc.



Permission is hereby granted for the redistribution of this Alert

electronically. It is not to be edited in any way without express

consent of the X-Force. If you wish to reprint the whole or any part of

this Alert in any other medium excluding electronic medium, please

e-mail xforce@iss.net for permission.



Disclaimer



The information within this paper may change without notice. Use of this

information constitutes acceptance for use in an AS IS condition. There

are NO warranties with regard to this information. In no event shall the

author be liable for any damages whatsoever arising out of or in

connection with the use or spread of this information. Any use of this

information is at the user's own risk.



X-Force PGP Key available at: http://xforce.iss.net/sensitive.php as well

as on MIT's PGP key server and PGP.com's key server.



Please send suggestions, updates, and comments to: X-Force

xforce@iss.net of Internet Security Systems, Inc.





-----BEGIN PGP SIGNATURE-----

Version: 2.6.3a

Charset: noconv



iQCVAwUBOdtMgDRfJiV99eG9AQEqXAP8CH24N8b+q0Die6b44NRGEsHe1byU+OKt

VfTRPZMo/Ag8gv/ENSFuXt6B2TFKLEvM7uZlJuKnmAnKtIQIpaFh6J6TXPWki2V3

UghnlMQaIftSBNI/dKaxjMvzjHngNrR8dgrUdJj/I8lRK6UlRJy5U9jeFBXcVuJ6

HwJU3t9ySIo=

=FxuE

-----END PGP SIGNATURE-----








(C) 1999-2000 All rights reserved.