netcat -e: o GAPING_SECURITY_HOLE

5

Por que o BSD versão 1.10 de nc desativa a opção -e encontrada em outras, chamadas distribuições inseguras, quando o mesmo recurso perigoso pode ser trivialmente alcançado da seguinte forma, mesmo com a versão 'segura' de nc :

$ # Machine A
$ mkfifo pipe
$ nc -l 4000 <pipe | bash >pipe

$ # Machine B
$ nc MachineA 4000

Agora, se eu encerrasse o encantamento na Máquina A em um script (que, se passado um argumento '-e', efetivamente faça o acima), eu introduzi essencialmente o 'buraco de segurança' sem ter descer para o Makefile e construir o nível.

Então, por que ir até o limite de #define -ing GAPING_SECURITY_HOME em netcat.c ?

    
por Harry 19.02.2011 / 09:54

3 respostas

2

Embora não tenha uma resposta definitiva, acredito que a falha de segurança esteja presente apenas se o seu nc tiver -e ativado e for setuid root. (Como o nc é frequentemente usado para vincular-se a portas, ele pode ser configurado como setuid root para permitir que todos os usuários se vinculem às portas privilegiadas abaixo de 1024).

Nessa situação, nc -e iria exec do processo dado como root - o que significa que deixaria qualquer usuário executar qualquer processo como root . Tenho certeza de que você reconhecerá que isso é um buraco de segurança. Por outro lado, se você executar seu próprio processo e usar pipes para conectá-lo a nc , esse processo não será executado como raiz, a menos que você tenha outra forma de elevá-lo (como sudo access).

Como garra apontou, da netcat anúncio de lançamento original reclamou que

the commercial vendors would have likely packaged [netcat] setuid root and with -DGAPING_SECURITY_HOLE turned on but not documented.

Isso empresta peso à minha teoria, eu acho. :)

    
por 17.10.2016 / 06:22
1

Eu posso usar "netcat -e" para executar outro aplicativo, por exemplo, imap ou pop3. A seção "#ifdef GAPING_SECURITY_HOLE" pode conter um bug que permite executar um shell, e é por isso que ele é desabilitado por padrão. ifdef wraping seção crítica de segurança.

    
por 19.02.2011 / 10:38
1

do anúncio de lançamento original :

Obligatory vendor-bash: If "nc" had become a standard utility years ago, the commercial vendors would have likely packaged it setuid root and with -DGAPING_SECURITY_HOLE turned on but not documented. It is hoped that netcat will aid people in finding and fixing the no-brainer holes of this sort that keep appearing, by allowing easier experimentation with the "bare metal" of the network layer.

Não que isso torne tudo mais claro ...

    
por 19.02.2011 / 12:35