Leve o sandbox do userspace do sistema de arquivos

1

Eu gostaria de enganar um processo não mal-intencionado para pensar que ele está gravando no diretório $HOME/abc/def/ enquanto ele escreve de fato em $HOME/xyz/def (o caminho anterior é codificado e não funciona para o meu por vários motivos) . O diretório $HOME/abc/def/ não deve existir. Pensei em usar namespace de usuário + espaço de nome de sistema de arquivos para montar um sistema de arquivos aufs sobre ele, mas falhei (a montagem terminou informando privilégios insuficientes).

É possível usar namespaces user + filesystem? Se não há algum risco criando um programa suid que cria tal namespace de sistema de arquivos para um único programa (a configuração é atualmente de baixa segurança, mas eu prefiro ser consciente de segurança)? Ou talvez exista uma solução para isso?

    
por Maciej Piechotka 05.07.2013 / 21:57

1 resposta

1

O uso de um link simbólico não é suficiente? Exemplo:

[root@talara ~]# ls -la /tmp/home/
total 12
drwxr-xr-x  3 root root 4096 Jul  5 16:01 .
drwxrwxrwt. 9 root root 4096 Jul  5 16:01 ..
drwxr-xr-x  2 root root 4096 Jul  5 16:01 123
lrwxrwxrwx  1 root root   13 Jul  5 16:01 321 -> /tmp/home/123
[root@talara ~]# touch /tmp/home/321/ACTIVITY_TEST
[root@talara ~]# ls -la /tmp/home/123/
total 8
drwxr-xr-x 2 root root 4096 Jul  5 16:02 .
drwxr-xr-x 3 root root 4096 Jul  5 16:01 ..
-rw-r--r-- 1 root root    0 Jul  5 16:02 ACTIVITY_TEST
[root@talara ~]#

Isso deve ser suficiente para enganar um script ou programa codificado.

    
por 05.07.2013 / 22:03