Dica rápida: Controle de fluxo no terminal e uma brincadeira perigosa e de mau gosto

Existem dois tipos de controle de fluxo. O via hardware e o via software. Mas o que nos interessa neste texto é o via software, pois o meu objetivo aqui é alertar sobre uma perigosa brincadeira que pode ser feita com este recurso. Acompanhe o texto para entender sobre o assunto.

Desde os remotos tempos do computador, existe um recurso nos terminais chamado controle de fluxo e que é usado para controlar a conexão entre equipamentos. Especialmente aqueles mais lentos que usam a velha, porém ainda útil, porta serial (RS232).

Basicamente o que isso faz é permitir que a transferência de dados de um dispositivo para outro tenha uma pausa quando é recebido o carácter ASC 19 (XOFF) para que o equipamento mais lento possa terminar de processar o que já recebeu, e quando ele termina um novo carácter é enviado, mas dessa vez é o ASC 17 (XON).

Parece complicado, mas não é. Estes caracteres estão ao alcance de um CTRL-S (XOFF) e CTRL-Q (XON), no seu teclado.

Experimente o exemplo a seguir no seu terminal (não se preocupe é seguro).

Abra um terminal e digite qualquer comando só para certificar que esta tudo OK.

Agora pressione CTRL-S para enviar o XOFF e bloquear o terminal. Você verá que a partir deste momento qualquer coisa que for digitada não aparece mais no seu terminal, dando a impressão de que esta tudo travado.

Para liberar o seu terminal, basta enviar um XON (CTRL-Q). O seu terminal será desbloqueado e tudo que você havia digitado enquanto o terminal estava bloqueado é enviado para tela, e comandos serão executados.

E é justamente aqui que está o perigo deste recurso. NÃO EXECUTE O TESTE A SEGUIR APENAS IMAGINE O ESTRAGO QUE ELE PODERÁ FAZER:

Por qualquer motivo você deixa seu terminal aberto e sai da frente dele.

Um falso amigo vai na sua máquina, trava seu terminal (CTRL-S) e então digita um comando destrutivo como um “rm -rf ~ [ENTER]” (NÃO FAÇA ESTE TESTE EM SUA MÁQUINA DE PRODUÇÃO).

Quando você volta percebe que o terminal está bloqueado e o destrava com CTRL-Q. Imediatamente o comando destrutivo é descarregado no terminal e sem tempo de você fazer nada todo o seu home começa a ser destruído.

Este é um exemplo simples, mas poder-se-ia colocar ali um “&&” para o comando rodar em background, seguido de um “clear” para limpar a tela e você nem perceber o que está correndo em segundo plano. Ou ainda algo muito pior.

A dica que fica então é:

Vai sair de frente da máquina? Bloqueie o acesso a ela com senha. Esqueceu de fazer isso e ao voltar seu terminal está suspenso? Não o desbloqueie, feche a janela do terminal sem digitar nada.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.