Linux and world-writable /tmp - workaround

From: Michal Zalewski (lcamtufat_private)
Date: Fri Jul 10 1998 - 01:26:07 PDT

  • Next message: Aleph One: "PPTP Password Theft Vulnerability"

      This message is in MIME format.  The first part should be readable text,
      while the remaining parts are likely unreadable without MIME-aware tools.
      Send mail to mimeat_private for more info.
    
    --8323328-401275207-900058938=:535
    Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
    Content-ID: <Pine.LNX.3.96.980710102541.589C@lcamtuf>
    
    Due to several problems with /tmp directory, which (in typical Linux) must
    be kept for compatibility, but allows DoS attack, race conditions and
    other problems (as described in my previous post), I've tried to write
    something helpful.
    
    Following Linux 2.0/2.1 kernel module is designed to fix problems with
    world-writable /tmp. If you simply remove superfluous privledges from it,
    many of your programs will fail to work properly, because '/tmp' is often
    hard-coded as temporary file storage. RedTmp module can solve problem by
    redirectin requests from '/tmp' to choosen user-owned directory. It's
    location is obtained from environment (I think it gives more flexibility).
    
    Module tries to redirect requests to directory pointed by TMPDIR variable.
    If it isn't set, HOME + '/tmp' is used.
    
    NOTES:
    
    - Only requests to '/tmp', and only from unprivledged processes
      are redirected (and that's the goal). Root and suid programs
      are able to access /tmp directory as-is - there's no reason
      to redirect it, because directory is still root-writable.
    
    - RedTmp won't protect /tmp or any other directory, it will simply
      redirect access. So please chmod your world-writable dirs.
      Usually chmod 755 `find / -perm -2 -type d -user root` is
      sufficient, but if you're paranoid, do it by hand.
    
    - If both TMPDIR and HOME variables are not set, module will
      fail to redirect access (but at least 'HOME' should be set
      and exported automatically).
    
    - Compilation: 'make'. Module should be launched for rc scripts - add
      'insmod /path/to/module/redtmp.o' to /etc/rc.d/rc.sysinit or rc.local.
      You can remove it anytime - 'rmmod redtmp'.
    
    Intercepted system calls:  open, unlink, stat, link, symlink, chdir,
    lstat, readlink, mknod, chmod, chown, utime, access, mkdir, rename, rmdir,
    acct, execve.
    
    Module is based on slightly modified and simplified AFHaRM module. You
    can download it from http://rast.lodz.pdi.net/~lcamtuf/pliki/afhrm.zip.
    
    PS. Code isn't beautiful nor perfect, feel free to report any problems...
    It was written under Linux 2.0, but should work under 2.1 as well.
    
    // zipped source code attached.
    _______________________________________________________________________
    Michal Zalewski [lcamtufat_private] <= finger for pub PGP key
    Iterowac jest rzecza ludzka, wykonywac rekursywnie - boska [P. Deutsch]
    [echo "\$0&\$0">_;chmod +x _;./_] <=------=> [tel +48 (0) 22 813 25 86]
    
    --8323328-401275207-900058938=:535
    Content-Type: APPLICATION/ZIP; name="redtmp.zip"
    Content-Transfer-Encoding: BASE64
    Content-ID: <Pine.LNX.3.96.980710102607.589D@lcamtuf>
    Content-Description: RedTmp module v0.1
    
    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
    TqPjvHi/KwLIR+GGT+/ejFIqt2Wbs/Pmj842rOBgfBhpX3lUf5Lvu6tON7fm
    62g6Hd3MH+T83wzN+/Hl6H42NvNPY3M3vf04HX02k1mYir0yH6bjsbn9YC4/
    jaYfxwM+Nx3ziZgWZ2QjAnjqVn4e/3M+vpmbu/H082Q+B7X3D2Z0dwfio/fX
    Y3M9+gppjv95Ob6bm6+fxjfJLcl/nYCf2XzEFyY35ut0Mp/cfBSCHMSdTj5+
    mptPt9dX46lM6/6E1eVFczeazifjWQI+vkyu+ps6G83A9pn5Opl/ur2ft8xz
    c6ObB/P3yc3VwIwnQmj8z7vpeIb9J6A9+QyOx/hycnN5fX8lg8DvQeHmdg45
    YWfgc34rognPBupgBvSTz+Mp5HczH72fXE+wJCeHP0zmN1hC5otHyvnl/fUI
    m7if3t3OxqzfUIQgAoFPJ7O/m9Es8YL9x/2oJQTpgsbn0c2lHNTBQXK75uH2
    nlED+76+4gNJeICCGpur8Yfx5XzyBceLJ7HM7P7z2Mt7NhcBXV+bm/El+B1N
    H8xsPP0yuaQckun4bjSB+DkjPZ2Syu2N+pa3Qx4etGT8hTpwf3PN3U7H/7jH
    fk5oAmmMPkLbKMzo3JOvEyzOEzo8/IG8gi+6w3+AGt2az6MHHcx+8OoBNtvJ
    7b5WQCk67Ry9v6UM3oOfibAFRigQHtHV6PPo43g2SFolkKX9MPnAzO7GlxP+
    A99D9XDW1yoVWNE/7nmK+MATMSMcJ7dGPfRHRhukrt0EHcHah3Z53q19oH/U
    i+vbGZUNi8xHRjjG3+/HfHo6voG8xJxGl5f3U5gWn+Ab4GZ2D2Ob3MihJNyv
    WPNkehXsSeRsPowm1/fTIx3DyrcQIUmKrrUHEpRsdjEQHTCTD1jq8pM/PdOz
    2gfzCUfxfozHRldfJvQ8uk4CW5hNvExuPQUvR3FsctcU+5PnTwzwc/Z/tONw
    Tvb9VxZxGQdGkpNqnXUuKAAfPtDt3gDy+FjnqMc+Pq4QXvNyhxDtMVE3TRnd
    cvOzej5kPsotEFcnyES0WNa4NgppgufzbiYOLClIZXrDREOhj067SyTK6qQf
    ETQSttd2OJ7UK3FGF0LblnEoIoZ7caEwW9epbzx1AKkd6S3jlilRjCRELl1z
    a+S4fXsbHpYpP+k08RvfaWF/sL0yqvdQdHIQMOHJ7n3nChDeebDWjRzLIA9J
    CQ23kXKKwLvQ8xckf9aCgjOg+sIXr8yulDxIBnJknk822mjrQe44MrpDSH4U
    8i+Up7wf5gYiAbwCZGOfSkkvkIGsDQJ/qiNFqWiBzIb/VWgdXqve70FfCDDy
    C/D5q64quWl0iah32u/aG469M1YE3F0Q0ynK+vTI56nbxt10tuthx3Zi72Ww
    1F2m0OvkYZHrriEmVM77k9IXxxh6eFoAcTvWp2IbTvbUXsoBeMGocJgDHRlB
    UhMCPB1RCPLv2lsYvl0oJd5cpgbDWCfANkkcxmoI9zeE6pkVLUnaS0YvJHNy
    VHKTl7mW81tncT3W6m6Yojcr8jJhPyIRtTI7Wb5jTgtN/xEMlvcP7/YPfuMV
    fl5G4ZwSqwLxWAgrZ+puZZpAb1YSIFtOp1VlAf71CiDwPrxclmupszeh0ZtI
    HQRfGC6SpBRb1Q7x5tk39ZyJDDziOfFETm9R9GZbYTDWT1B9LACqnxTNB3X+
    GVs7Ybt9yz16e4nswd8ZHb2f3V4DbVw/xEj5nWiAP3xT76HO/5Lbqs+vhp0R
    HFp/F2fE8duc61CuB85AKPi7U229KKRg7+Lllq9iRoY6qrLZ75jYSV+rm/IO
    /AkP7dteW8NN295tkl7e+OJ9s9u1tFJ896NbT1rFjlXNPQsa7LFJBxh5mVQU
    ostOJ1nzd5e0Mi/WvrDJtgTJ10tw8E0KGVtbNBCY3brXr+m1JXl2Taad3PaO
    v7814jcrw3i8fiyPWPiPco/XzsNN93b82L+9tdWF0bvbVeKYsufa2yh0gp3N
    ZV6c64px3ZWbs+5mSsAa2TopeDXe6Q3NT34yPeXcxC5HiJCpKXmHaqr3Kx7K
    fbnaFzZYNOPfYt8upPNAHQNiIUQj3uH6xUHoX5Gev2JDTGYEYY1Or/A64ydT
    OPjiLtoiGhb7G7kxn9LlN1uJw/uLjo7wsje0ZL6HpZXFXwfmDXBZleXy20cI
    UPSLAX9Dh8vCna4v0CBfyX3BybZ1Fd8p6moa1J/4fKWakUQ3X9tfMtC21arY
    FaVsylYle9J0NvKrJNqiTBLmweVGJp28RiZpNyonABUyzRWvGFXSXTuHknji
    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
    AAAA
    --8323328-401275207-900058938=:535--
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 14:03:46 PDT