public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] [Fwd: [rock-linux] [papowell@astart.com: LPRng: SECURITY BULLETIN - GhostScript -dSAFER does not prevent file access]]
@ 2001-09-19  0:09 slik
  0 siblings, 0 replies; only message in thread
From: slik @ 2001-09-19  0:09 UTC (permalink / raw
  To: gentoo-dev

Nikolaus Filus wrote:
> 
> Hi everybody,
> 
> I just got the following mail on th LPRng mailinglist. Maybe it's important
> to all of us, even not running LPRng, but ghostscript.
> 
> Nikolaus
> 
> ----- Forwarded message from User Papowell <papowell@astart.com> -----
> 
> Date: Tue, 18 Sep 2001 08:06:34 -0700 (PDT)
> From: User Papowell <papowell@astart.com>
> To: lprng@lprng.com
> Subject: LPRng: SECURITY BULLETIN - GhostScript -dSAFER does not prevent file access
> 
> Summary:   Printing a file can cause a system compromise
> 
> Reason:    GhostScript can open and read files on system
>    (-dSAFER may not disable file open)
> 
> Systems Impacted:  just about everything that uses GhostScript (or
> some other PostScript interpreters) for PostScript document
> conversion. This includes the various MagicFilters, Transcript,
> LPRng's ifhp, RedHats rh-printfilter.  These are running on Linux,
> BSD, System V, possibly Sun Microsystems, HP, etc., etc., etc.
> Note: it is possible that the same problem exists on Microsoft
> systems as well if they are performing PostScript to conversions.
> 
> Detailed Explanation:
> 
> GhostScript is used to convert PostScript files to formats compatible
> with printers and other devices.  It is used as a utility by a
> large number of 'print filters', including MagicFilters, format
> converters, LPRng's IFHP filter, RedHat's rh-printfilter, Transcript,
> etc., etc.
> 
> The PostScript 'file' operator opens a file which can then be
> read and printed.  Here is a sample of how this could be done:
> 
> Save these lines to 'testpr':
> 
> %!
> % Code extracts from PostScript Language Tutorial and Cookbook
> %  Copyright 1986, Adobe Systems.
> 
> % set up printing
> /finr /Helvetica findfont 10 scalefont def
> /shwr {moveto finr setfont show} def
> % do the dirty work here
> (/etc/passwd) (r) file
> % read a single line
> 100 string readline pop 45 292 shwr showpage
> 
> Now run this using GhostScript:
> 
> #> gs testpr
> 
> If you see the first line of the /etc/passwd file displayed then
> you have a possible compromise.  If GhostScript is used to convert
> PostScript to PCL or some other non-PostScript format then you can
> print copies of the various files of interest.
> 
> Now try this with -dSAFER
> 
> #> gs -dSAFER testpr
> 
> If you see the same output,  then the -dSAFER is not preventing
> file access.
> 
> MORE BAD NEWS:
> 
> Now, you might think this is the worst that can happen...
> Nope.  I just discovered the following:
> 
> a)  GhostScript can open files for writing as well as reading.
> b)  Some vendors run their print filters as ROOT.
> c)  Some do not have -dSAFER enabled.
> 
> You might want to think about:
> 
>   (/etc/shadow) (w) file (root:::::) writeline
> 
> There... did your blood run cold?  Or are you rushing out to
> try this on your local system to see if the Sysadmin has fixed
> this?  (Note for sysadmin: there is no 'writeline' primitive,
> but they will whip one up REAL SOON NOW, so get moving.)
> 
> AND A POSSIBLE ADDITIONAL EXPLOIT:
> 
> In addition to the 'file' command,  there is also the 'run' command
> that will open a file and execute its contents.  I can't think of
> any use for this, but better to be safe than sorry.  Since most
> students^H^H^H^H^H^H users are smarter than me,  they will most
> likely think of one.
> 
> IMMEDIATE STEPS TO TAKE:
> 
> Step 1:  TURN OFF PRINTING NOW!  Kill the LPD print spooler
>    server or the lpsched print spooling server:
> 
>     pkill lpd
>       OR
>     killall lpd
>       OR
>     ps -e |grep lpd;   find the PID of the lpd process
>                        and do:  kill PID
> 
>     ps -e |grep lpsched;   find the PID of the lpsched process
>        and do:  kill PID
> 
> Step 2: Update to the latest version of GhostScript that has
>    -dSAFER implemented.
> 
> Step 3: Modify the gs_init.ps file.  It is usually in:
> 
> /usr/share/ghostscript/XXX/lib/gs_init.ps
> 
> where XXX is the version of GhostScript.
> 
> The following changes will disable 'file' and 'run' when
> when gs is executed with -dSAFER.
> 
> 1. open the gs_init.ps file.
> 2. Look for the following lines and add the lines
>    with - in front of them.
> 
>   % If we want a "safer" system, disable some obvious ways to cause havoc.
>   SAFER not { (%END SAFER) .skipeof } if
>   /file
>    { dup (r) eq 2 index (%pipe*) .stringmatch not and
>      2 index (%std*) .stringmatch or
>       { file }
>       { /invalidfileaccess signalerror }
>      ifelse
>    } .bind odef
> - /file { /invalidfileaccess signalerror } odef
> - /run { /invalidfileaccess signalerror } odef
>   /renamefile { /invalidfileaccess signalerror } odef
>   /deletefile { /invalidfileaccess signalerror } odef
>   /putdeviceprops
> 
> Step 4: make sure that all the conversion scripts use gs -dSAFER
> 
> Step 5: (for the VERY VERY paranoid sysamin)
>    Comment out the 'SAFER not ...' line; this will
>    ALWAYS run GhostScript in SAFER mode.
> 
> Step 6:
>    save the modified gs_init.ps file.
> 
> Step 7:
>    Try executing the 'testpr' file again.  It should fail.
> 
> Step 8:
>    Renable printing and try printing the 'testpr' file
>    to a printer that requires raster conversion.
>    Your job should fail with a GhostScript error.
> 
> Note:  there are also other functions in the gs_init file that
> seem to allow opening and reading of files.  I am not an expert
> on PostScript,  so I am not in a position to comment on them.
> 
> Patrick Powell                 Astart Technologies,
> papowell@astart.com            9475 Chesapeake Drive, Suite D,
> Network and System             San Diego, CA 92123
>   Consulting                   858-874-6543 FAX 858-279-8424
> LPRng - Print Spooler (http://www.lprng.com)
> 
> -----------------------------------------------------------------------------
> YOU MUST BE A LIST MEMBER IN ORDER TO POST TO THE LPRNG MAILING LIST
> The address you post from MUST be your subscription address
> 
> If you need help, send email to majordomo@lprng.com (or lprng-requests
> or lprng-digest-requests) with the word 'help' in the body.  For the impatient,
> to subscribe to a list with name LIST,  send mail to majordomo@lprng.com
> with:                           | example:
> subscribe LIST <mailaddr>       |  subscribe lprng-digest myname@host.org
> unsubscribe LIST <mailaddr>     |  unsubscribe lprng myname@host.org
> 
> If you have major problems,  send email to papowell@astart.com with the word
> LPRNGLIST in the SUBJECT line.
> -----------------------------------------------------------------------------
> 
> ----- End forwarded message -----
> 
> --
> To unsubscribe from this list: send a mail with the subject "unsubscribe
> rock-linux" to <minimalist@rocklinux.org>. For more information about ROCK
> Linux have a look at <http://www.rocklinux.org/>.



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2001-09-19  6:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-09-19  0:09 [gentoo-dev] [Fwd: [rock-linux] [papowell@astart.com: LPRng: SECURITY BULLETIN - GhostScript -dSAFER does not prevent file access]] slik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox