Quais são os diretórios graváveis do mundo por padrão?

14

Em um sistema de arquivos padrão do Linux, quais desses diretórios comuns são graváveis por mundo por padrão ?

 /tmp 
 /etc
 /var 
 /proc 
 /bin 
 /boot
 /....
 ....

Por que eles são mundialmente graváveis? Isso representa um risco de segurança?

    
por Abdennour TOUMI 29.06.2014 / 10:54

4 respostas

14

Os únicos diretórios obrigatórios da FHS que são comumente graváveis pelo mundo são /tmp e %código%. Em ambos os casos, isso ocorre porque eles são destinados ao armazenamento de arquivos temporários que podem ser feitos por qualquer pessoa.

Também é comum o /var/tmp , como um tmpfs (sistema de arquivos suportado pela RAM ), para acesso rápido a dados de tamanho médio compartilhados entre processos, ou apenas criando arquivos com garantia de serem destruídos na reinicialização.

Também pode haver um /dev/shm ou /var/mail e, às vezes, outros diretórios de spooler. Esses são usados para reter mensagens temporariamente antes de serem processadas. Eles nem sempre são graváveis pelo mundo, dependendo das ferramentas em uso. Quando estão, é porque os arquivos podem ser criados por ferramentas de usuário para processamento por daemons.

Todos esses diretórios geralmente têm o bit pegajoso ( /var/spool/mail ) set, significando que somente o dono de um arquivo ou diretório pode mover ou deletar os arquivos nele contidos.

Qualquer programa em execução como qualquer usuário pode criar arquivos nesses diretórios, e cabe ao programa de criação fazer a coisa certa no que diz respeito à segurança de seus dados específicos. Não há um problema geral de segurança que não seja o preenchimento potencial do sistema de arquivos, mas o escopo de um programa é muito errado.

Houve algumas mudanças em relação aos diretórios t específicos do serviço. Isso evita alguns dos possíveis bugs que podem surgir, então não é tão vital para o programa ficar livre de bugs em como ele usa o diretório.

Você pode encontrar os diretórios graváveis do mundo em seu sistema com:

find / -maxdepth 3 -type d -perm -777
    
por 29.06.2014 / 11:27
7

/tmp , /var/tmp e /var/lock são graváveis por padrão. Pode haver links simbólicos, como /usr/tmp/var/tmp , fornecidos para compatibilidade com aplicativos mais antigos.

/tmp e /var/tmp world-writable porque eles devem ser usados por qualquer usuário para qualquer armazenamento temporário. /var/lock é gravável pelo mundo para que qualquer processo, executado como qualquer usuário, possa criar arquivos de bloqueio em um local central.

Existe um risco de segurança? Não, mas sim.

As permissões para todos esses diretórios são 1777 , com o primeiro 1 sendo o bit adesivo . Isso significa que, enquanto qualquer pessoa pode criar um arquivo nesses diretórios graváveis pelo mundo, somente o proprietário pode excluir seus próprios arquivos (e, é claro, o usuário root também pode).

O possível risco de segurança pode surgir da criação de arquivos temporários inseguros. Como esses diretórios são gratuitos, os usuários precisam tomar precauções para garantir que os arquivos criados por eles sejam realmente novos, em vez de abrir um arquivo ou link simbólico existente que possa ter sido implantado por um usuário mal-intencionado. Se os arquivos forem criados usando técnicas adequadas, como open(…, O_EXCL) ou mkstemp(3) , então tal risco é evitado.

    
por 29.06.2014 / 11:32
2

/tmp

É arriscado, porque você precisa adicionar código extra para usá-lo com segurança. Obviamente isso é esquecido.

Um exemplo recente é dado por Steve Kemp. link

./mgmt/tools/SysAPI.cc:  tmp = fopen("/tmp/shadow", "w");
./mgmt/tools/SysAPI.cc:    system("/bin/mv -f /tmp/shadow /etc/shadow");

Se você (o atacante) substituir / tmp / shadow antes da segunda linha, você substituirá a senha de todos. (Eu acho que o ataque requer que você crie o arquivo antes da primeira linha, e torne o arquivo mundial gravável).

O Systemd no linux permite mitigar essas vulnerabilidades isolando / tmp para muitos serviços do sistema. (Exceto aqueles que "usam indevidamente / tmp como um local para sockets IPC e outras primitivas de comunicação").

No Fedora Linux - link

Explicação do sistema - link

    
por 29.06.2014 / 11:41
2

Para encontrar diretórios graváveis do mundo, você pode usar

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Para arquivos, altere o tipo para f

Para o tipo de links simbólicos para l

Para definir um bit pegajoso:

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print0| xargs -0 chmod +t
    
por 27.05.2016 / 07:02