Como entender o modo privilegiado do Bash?

3

Eu li a seção em man bash explicando o set construído em -p bandeira, e isso me diz alguns dos efeitos que o modo privilegiado tem sobre o comportamento do Bash, mas não explica em profundidade suficiente (ou eu simplesmente não tenho contexto / experiência suficientes) para eu entender o propósito que ele serve, ou seja, em quais situações você o usaria.

Parte da minha confusão vem do fato de que tudo o que eu li sobre o modo privilegiado faz parecer que "sub-privilegiado" seria um nome mais apropriado. Isso por si só é provavelmente um indicador de que estou entendendo mal algo sobre isso.

Eu também não tenho certeza se entendi setuid. Estou familiarizado com o ID do usuário e com o ID do usuário real, pois ele está relacionado a sudo , mas parece que o setuid é um conceito mais amplo, então talvez eu esteja perdendo alguma coisa.

    
por ivan 21.04.2018 / 03:39

1 resposta

4

O modo privilegiado existe para tentar aumentar a segurança (restringindo ações potencialmente perigosas) quando o shell é executado sob privilégios aumentados, como invocado por um programa setuid.

Sim, você está correto no fato de parecer "desprivilegiado", a opção -p está restringindo ações que poderiam permitir um ataque, talvez enganando o shell para executar comandos em um usuário mais privilegiado. Por exemplo, é por isso que restringe os scripts de inicialização, pois eles podem não pertencer ou ser controlados pelo usuário privilegiado nessa situação. Além disso, herdar funções do ambiente também pode ser perigoso, pois é possível exportar uma função como cd ou ls que pode ser usada durante o shell privilegiado e, em seguida, acionar uma ação que pode ser usada em um ataque.

Você também perguntou sobre "setuid". Neste contexto, "setuid" geralmente se refere às permissões de binários que incluem o 04000 bit, por exemplo, permissão 04711 (ou -rws--x--x in ls output.) Ativar o bit "setuid" em um binário faz ele sempre é executado sob o uid efetivo do proprietário desse binário. Portanto, um binário setuid de propriedade do root será executado como root sempre que qualquer usuário o executar. O uid real será o do usuário que o invoca, é por isso que a verificação effective uid != real uid é comum nessa situação. (BTW, o mesmo existe para o bit "setgid", que é 02000 nas permissões de arquivo.)

Portanto, um cenário provável em que bash -p pode ser usado é um binário setuid que é executado como um usuário privilegiado (root ou outro) e quer gerar um shell, eles podem usar bash -p para esse cenário, desde então tente para ficar mais seguro (ignorando scripts e funções de inicialização do ambiente, o que pode ser perigoso) e manterá as permissões do uid efetivo durante a execução. Invocá-lo sem a opção -p significa que o bash simplesmente ignorará o uid efetivo (redefinindo o uid real) e se comportará como se nada tivesse acontecido ...

Ainda há muitas armadilhas de segurança aqui ... Então, usar um bash privilegiado ainda requer muita reflexão sobre como a segurança pode ser afetada. As medidas tomadas por -p podem ajudar, mas precisam ser consideradas em todo o contexto de possíveis cenários de ataque.

    
por 21.04.2018 / 05:56