xterm log file vulnerability

From: Morten Welinder (terraat_private)
Date: Tue Feb 29 2000 - 08:39:25 PST

  • Next message: Peter Gutmann: "Re: Disk (over)quota in Windows 2000"

    It used to be Well Known that xterm's way of opening a log file
    was insecure.  Well, that was 5+ years ago so I decided to take
    a look at the current state of affairs.  Things have changed,
    but mostly to "different" rather than "better".
    
    Problem: when log files are enabled, they are created in the
    following way (checking in XFree86 3.3.6 source; matches Solaris
    binaries) and are subject to race conditions:
    
    1. File is checked for existance using access.
    2. If file does not exist, it is created in a subprocess using user's
       real uid/gid.  [ok]
    3. File is checked for existance using access.
    4. File is checked for write permission using access.
    5. File is opened O_WRONLY | O_APPEND.  [plonk]
    
    A little symlink magic between 4 and 5 and you have write access to
    any file if your xterm is setuid/setgid.
    
    General attack idea:
    
    ls -lL `which xterm`
    # If not setuid/setgid, you are safe
    touch dummy
    symlink-flipflop link dummy /.rhosts
    xterm -l -lf link -e echo + +
    
    
    Moral: access() is totally useless for security purposes.  Use it
    only as a means of providing better error messages (as it might not
    be easy to get an error message out from a subprocess).
    
    Morten
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 15:38:21 PDT