sexta-feira, março 04, 2011

Ruminações sobre o Malware "Android Dream"

Uma das diferenças entre o Android e o iOS é a política quanto à distribuição de aplicações. Enquanto a Apple é totalmente controladora, exigindo o uso da sua loja de aplicativos e impondo um processo de aprovação, a Google permite a carga de aplicações de diferentes fontes e possui requisitos mínimos para a publicação de aplicações na sua loja.

Eu certamente prefiro o modelo Android, prefiro eu decidir o que rodar no meu aparelho e quero poder fazer aplicações para mim e que possam ser compartilhadas com outros sem precisar da benção de terceiros. Mas é claro que com poder vem a responsabilidade.

Um dos motivos que a Apple aponta para o seu controle é evitar a propagação de malware. Não creio que o processo da App Store evite as pragas eletrônicas. Afinal, a Apple não recebe os fontes para examinar e já vimos casos da aprovação de aplicações serem revogadas quando determinadas funcionalidades foram descobertas após a aprovação.

É claro que no caso do Android é bem mais fácil distribuir malwares. No caso do "Android Dream", os criminosos pegaram aplicações já existentes, as empacotaram junto com os componentes maliciosos e colocaram de volta no Android Market.

O Android possui alguns níveis de defesa contra ameaças. A maioria da aplicações roda dentro de uma máquina virtual e operações perigosas exigem (em princípio) permissões expressas durante a instalação do aplicativo.

E não custa lembrar que o Android é um software aberto e baseado no Linux, o que algumas pessoas associam a invulnerabilidade. Estas pessoas vão se assustar ao saber que o Droid Dream usa uma conhecida vulnerabilidade do Linux (mais especificamente do udev) para fazer a "elevação de privilégio" que dá ao malware as permissões de super-usuário.

Esta vulnerabilidade foi inicialmente reportada em 2009 e afetava as principais distribuições de Linux (e continua afetando que não tiver atualizado o Linux ou aplicado os devidos patches). Do ponto de vista técnico a vulnerabilidade não está no kernel do Linux (ou do Android), mas sim em um componente externo. No Linux este componente é o udv, no Android o código em questão foi movido (com falha e tudo) para o init. A correção da falha, entretanto, envolve uma alteração no kernel (detalhes no link anterior).

O que nos leva a uma outra questão: a atualização do Android. Outra vantagem do iOS é que todos os equipamentos que o utilizam são do mesmo fabricante e a atualização de versão fica centralizada. Já no Android temos a conhecida fragmentação e a atualização de cada equipamento depende do respectivo fabricante (e a maioria deles não tem um histórico muito animador quanto à disponibilização de atualizações). A Microsoft está tentando evitar isto no Windows Phone 7, mas infelizmente a primeira experiência não foi totalmente positiva.

E ficamos com o conselho de "Mad-Eye" Moody: vigilância constante!

Fonte: Naked Security

Nenhum comentário: