Tips for using socat in secured environments: * Configure socat to only enable the required features, e.g. to protect your filesystem from any accesses through socat: make distclean ./configure --disable-file --disable-creat --disable-gopen \ --disable-pipe --disable-unix --disable-exec --disable-system use "socat -V" to see what features are still enabled; see ./configure --help for more options to disable * Do NOT install socat SUID root or so when you have untrusted users or unprivileged daemons on your machine, because the full install of socat can override arbitrary files and execute arbitrary programs! * Set logging to "-d -d" (in special cases even higher) * With files, protect against symlink attacks with nofollow (Linux), and avoid accessing files in world-writable directories like /tmp * When listening, use bind option (except UNIX domain sockets) * When listening, use range option (currently only for IP4 sockets) * When using socat with system, exec, or in a shell script, know what you do * With system and exec, use absolute pathes or set the path option * When starting programs with socat, consider using the chroot option (this requires root, so use the substuser option too). * Start socat as root only if required; if so, use substuser option Note: starting a SUID program after applying substuser or setuid gives the process the SUID owner, which might give root privileges again. * Socat, like netcat, is what intruders like to have on their victims machine: once they have gained a toehold they try to establish a versatile connection back to their attack base, and they want to attack other systems. For both purposes, socat could be helpful. Therefore, it might be useful to install socat with owner/permissions root:socatgrp/750, and to make all trusted users members of group socatgrp.