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

14

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

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

Por que eles são graváveis ​​no mundo? Isso representa um risco à segurança?

Abdennour TOUMI
fonte

Respostas:

16

Os únicos diretórios mandatados pela ESF que geralmente são graváveis ​​no mundo são /tmpe /var/tmp. Nos dois casos, é porque eles se destinam ao armazenamento de arquivos temporários que podem ser criados por qualquer pessoa.

Também é comum /dev/shm, como um tmpfs (sistema de arquivos suportado pela RAM), o acesso rápido a dados de tamanho médio compartilhados entre processos ou apenas a criação de arquivos que são garantidos para serem destruídos na reinicialização.

Também pode haver um /var/mailou /var/spool/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 ​​no mundo, dependendo das ferramentas em uso. Quando estão, é porque os arquivos podem ser criados lá por ferramentas do usuário para processamento por daemons.

Todos esses diretórios geralmente têm o conjunto de bitst fixos ( ), o que significa que somente o proprietário de um arquivo ou do diretório pode mover ou excluir os arquivos nele.

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á nenhum problema geral de segurança em particular além de alguém potencialmente encher o sistema de arquivos, mas há muito espaço para um programa cometer erros.

Houve alguns movimentos em direção a /tmpdiretórios específicos de serviço . Isso evita alguns dos possíveis erros que podem surgir, portanto, não é tão vital que o programa esteja livre de erros na maneira como usa o diretório.


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

find / -maxdepth 3 -type d -perm -777
Michael Homer
fonte
8

/tmp, /var/tmpE /var/locksão mundialmente gravável por padrão. Pode haver links simbólicos, como /usr/tmp/var/tmp, fornecidos para compatibilidade com aplicativos mais antigos.

/tmpe /var/tmpgravável em todo o mundo, porque eles devem ser usados ​​por qualquer usuário para qualquer armazenamento temporário. /var/locké gravável em todo o 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 principal 1sendo o bit persistente . Isso significa que, embora qualquer pessoa possa criar um arquivo nesses diretórios graváveis ​​em todo o mundo, apenas o proprietário pode excluir seus próprios arquivos (e, é claro, o usuário root também).

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

200_success
fonte
1
Nos sistemas modernos, um desses links simbólicos de compatibilidade é /var/lock/run/lock
CAMH
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. http://blog.steve.org.uk/sometimes_reading_code_makes_you_scream_.html

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

Se você (o invasor) substituir / tmp / shadow antes da segunda linha, poderá substituir a senha de todos. (Acho que o ataque exige que você crie o arquivo antes da primeira linha e torne o arquivo gravável no mundo).

O Systemd no linux permite mitigar essas vulnerabilidades isolando / tmp para muitos serviços do sistema. (Exceto aqueles que "usam / tmp incorretamente como local para soquetes IPC e outros primitivos de comunicação").

No Fedora Linux - http://fedoraproject.org/wiki/Features/ServicesPrivateTmp

Explicação do Systemd - http://0pointer.de/blog/projects/security.html

sourcejedi
fonte
"Acho que o ataque exige que você crie o arquivo antes da primeira linha" - De fato. Se o arquivo ainda não existir, a primeira linha o criará como usuário em execução (presumivelmente root) e um usuário mal-intencionado diferente não terá permissão para substituí-lo antes da segunda linha. Se o arquivo já existir, fopensubstitua-o, mas não redefina as permissões, para que o usuário mal-intencionado ainda possa fazer alterações. Além disso, um usuário mal-intencionado poderia ter feito algo como ln -s /bin/bash /tmp/shadowantes da primeira linha, para que um binário essencial do sistema fosse substituído.
hvd 29/06
2

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

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

Para arquivos, altere o tipo para f

Para links simbólicos, digite l

Para definir um bit adesivo:

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print0| xargs -0 chmod +t
jithinsha
fonte