Quão seguro é capturar um arquivo arbitrário?

Quão seguro é capturar um arquivo arbitrário?

Às vezes, quando eu coloco catum arquivo binário por engano, meu terminal fica distorcido. Nada que um rápido resetnão possa consertar, mas um invasor não poderia, teoricamente, criar um arquivo que, quando exibido em um terminal, executaria algum código arbitrário? Através de uma exploração no emulador de terminal ou de outra forma.

Responder1

Se tal saída pode ser explorada depende do programa do terminal e do que esse terminal faz dependendo dos códigos de escape que estão sendo enviados. Não tenho conhecimento de programas de terminal com tais recursos exploráveis, e o único problema agora seria se houvesse um buffer overflow desconhecido ou algo parecido, que pudesse ser explorado.

Com alguns hardwareterminais mais antigos, isso pode ser um problema, pois você programou, por exemplo, teclas de função com esse tipo de sequência de escape, armazenando uma sequência de comando para essa chave no hardware. Você ainda precisaria pressionar uma tecla física para ativar isso.

Mas sempre há (como Hauke ​​tão acertadamente marcou como 'morto cerebral') pessoas dispostas a adicionar tal recurso se isso resolver um problema para elas, sem entender a lacuna que eles criam. Na minha experiência com software de código aberto, devido aos muitos olhos que olham para o código, é menos provável que isso aconteça como com código fechado. (Lembro que no programa de email do Irix da Silicon Graphics, em meados dos anos noventa, você poderia incluir comandos a serem executados na máquina receptora, caminhos reais para executáveis, ....)

Responder2

A maioria dos emuladores de terminal enviará de volta alguma resposta, se receberem certas sequências de escape (dê uma olhada nodocumentação de sequências de controle xterm). Por exemplo, você pode enviar \e[0cpara um emulador do tipo VT100 e ele enviará de volta os atributos do dispositivo, algo como \e[?1;2c (Isso é provavelmente o que Keith observou.) Mas essas respostas não são strings arbitrárias. Ainda assim, ter um executável nomeado 2cem algum lugar do sistema que faça algo fatal é uma má ideia.

Atualização: Os riscos são de fato maiores do que eu pensava, devido à possibilidade de definir o título de uma janela do xterme enviar de volta o títulousando sequências de escape apropriadas (http://www.securityfocus.com/bid/6940/). Em contraste com o exemplo acima, o título pode ser uma sequência quase arbitrária.

Responder3

Isso altera o título do terminal no Terminal GNOME 3.6.1, a menos que seja substituído por algo comoPS1:

printf "\033]2;Script Kiddie was here\007"

Agora abra uma nova janela do Terminal GNOME para testar a catversão:

printf "\033]2;Script Kiddie was here\007" > test.bin
cat test.bin

Sim, isso também define o título do terminal.

Costumava haver um problema de segurança comum código de escape resultando na impressão do título na linha de comando, para que você possa criar efetivamente um arquivo que, quando cated, imprimiria (não tenho certeza se você poderia colocar uma nova linha nele) comandos arbitrários. Ai!

Responder4

Definitivamente, experimentei xterminserir caracteres arbitrários em si mesmo, como se os tivesse digitado. E, ocasionalmente, isso aparentemente incluía caracteres de nova linha, então recebi ngwerm:0riu: command not founduma resposta. Não vejo razão para que alguém não possa criar um arquivo que envie comandos específicos e prejudiciais. Então sim, pelo menos alguns terminais são suscetíveis a ataques com impacto arbitrário.

informação relacionada