[Bill Allombert] > #include <unistd.h> > #include <sys/types.h> > #include <stdio.h> > #include <errno.h> > #include <stdlib.h> > #include <string.h> > #define CHROOT_PATH "/sid/"
I'd encase this in #ifndef CHROOT_PATH, so you can change it on the compile line and thus quickly build multiple binaries. > #define LEN_CHROOT_PATH strlen(CHROOT_PATH) Not used. > char *shell; > if (chroot(CHROOT_PATH)) die("chroot"); > if (seteuid(getuid())) die("seteuid"); > /*Now most security problem are ended.*/ FYI, chroot() does not imply chdir(). so your current directory isn't inside the chroot yet, and so long as this is true, a user can use relative paths (including ../../../../) to navigate arbitrarily. This isn't a security problem in *your* application, but it probably *is* unexpected behavior. I suggest saving the cwd in a char[] before the chroot, then doing chdir("/") followed by chdir(old_cwd).
signature.asc
Description: Digital signature