Allwinner e seu código de debug

Sabe aqueles códigos que inserimos nos projetos apenas para debug? Aqueles que você coloca temporariamente para ficar mais fácil testar algumas funções, para conseguir fazer algumas coisas de maneira mais rápida e testar. Pois então, o grande problema é quando esquecemos de apagar esses códigos e eles vão para produção.

Isso pode acontecer com todo mundo, apesar de ser nada legal. Veja o que o pessoal do desenvolvimento do kernel da Allwinner, fabicante chinesa de processadores, fez.

if(!strncmp("rootmydevice",(char*)buf,12)){
	cred = (struct cred *)__task_cred(current);
	cred->uid = 0;
	cred->gid = 0;
	cred->suid = 0;
	cred->euid = 0;
	cred->euid = 0;
	cred->egid = 0;
	cred->fsuid = 0;
	cred->fsgid = 0;
	printk("now you are root\n");
}

Isso permite que qualquer usuário em qualquer processo se torne root do dispositivo.

Os processadores da Allwinner estão presentes em TVs, e-readers, tablets, e nos famosos Banana Pi e Orange Pi.

Segundo algumas notícias 1 e 2, para acessar esse “backdoor” e se tranformar em super root simplesmente digite:

echo "rootmydevice" > /proc/sunxi_debug/sunxi_debug

Tchãran. “now you are root\n”

Como não tenho nenhum dispositivo com allwinner não consegui testar =(.

IMHO, não creio que este é um backdoor ou algo que foi colocado propositalmente. Pois não é algo escondido no código. pelo contrário, está muito visível. E só funciona em algumas versões dos processadores (H3, A83T ou H8) e ainda apenas na versão de kernel 3.4.

Acredito que este problema ocorreu devido a falta de atenção dos desenvolvedores. É uma prática normal inserir estes tipos de códigos durante o desenvolvimento, mas não é normal deixá-los nas versões de liberação, pelo menos não de maneira tão explicita.

Correções estão surgindo para resolver este problema. Afinal, isso é extremamente necessário! Caso contrário, o dispositivo é altamente vulnerável.

Comments