Browsers modernos com suporte a uma infinidade de plugins e extensões que comprometem a segurança do usuário, seria um bom momento para uma API genérica para podermos ter mais controle sobre esses terceiros rodando junto do nosso web app?

Não é de hoje que os Browsers dão suporte a uma infinidade de plugins e extensões. Em dado momento, os browsers começaram a se integrar com softwares de terceiros, para dar suporte as tecnologias não nativas no DOM, tínhamos os Java Applets, Shockwave, logo veio o Flash e com o passar do tempo, surgiram novas possibilidades, barras customizadas, botões, plugins que liam o DOM e alteravam em tempo real para personalizar sites e permitir funcionalidades como integração com gerenciadores de download que permitiam continuar o download mesmo caso este fosse interrompido.

Com tanta novidade boa, também surgiram as ruins. Sites que instalavam seus plugins sem pedir permissão para usuário, plugins que vinham com programas terceiros que mudavam a forma como o browser funcionava e a coisa foi piorando, virus, trojans, worms e todo tipo de malware.

O Google Chrome quando saiu, não tinha suporte a plugins e extensões, queriam HTML5 puro, mas isso não deu muito certo, logo tiveram que adicionar suporte a Flash, Java Applets e todos outros, tentaram melhorar o Flash embutindo-o de forma gerenciar via sandbox para contornar possíveis falhas, não foram soluções práticas, acabaram adicionando API’s para que desenvolvedores pudessem adicionar e remover plugins, como já existia no Firefox e no Internet Explorer, porém tentaram fornecer o máximo de segurança, e nessa corrida de gato e rato, as melhores soluções não costumam durar muito tempo sem que brechas sejam encontradas e exploradas.

Inovando novamente o Chrome colocou extensões de código aberto dos desenvolvedores em “sandbox” com recursos limitados que em teoria não poderiam afetar o usuário, mas isso não é uma verdade absoluta apesar dos esforços, contanto com melhorias na segurança que o artificio trouxe pro Chrome, o Firefox seguiu o mesmo caminho e ainda hoje em ambos você pode vir instalar extensões que vão encher suas páginas de propagandas de terceiros e monitorar sua navegação sem você ser avisado.

Fazendo uma busca rápida sobre “falha de segurança java”, ou mesmo flash, serão páginas e mais páginas de notícias dizendo que você está em risco. Vão lhe ensinar a desativar o Java, ou Flash do seu browser e se você usa algum site de banco brasileiro, vai precisar do Java ativo para poder acessar.

Não espero que os bancos desativem a necessidade do Java no browser, pessoalmente acho uma péssima solução usá-lo, mas parece que para bancos a internet ainda é um campo muito obscuro, cheio de obstáculos e periculosidades pouco compreendidas por seus analistas e engenheiros de sistema. E ai eles utilizam o recurso que te coloca em risco, para te assegurar de que ninguém vai roubar sua senha ou manipular o site deles de forma invisível ao usuário.

A W3C e as restrições no Javascript tentam lhe proteger ao máximo, não permitindo que sites de diferentes domínios sejam manipulados, criando restrições no carregamento de scripts e outras tarefas. É possível até se listar os plugins disponíveis no browser usando API “navigator.plugins” disponível nos browsers modernos.

Mas já está na hora de podermos fazer mais que listar plugins, deveriam colocar na mão dos desenvolvedores a possibilidade de bloquear/desativar plugins. Afinal, no meu site eu não uso flash, java ou plugins de vídeo que não sejam h264 ou webm, então se algum desses plugins estiver ativo no meu site em quanto o usuário navega, isso é uma anomalia. Para dar mais segurança ao meu usuário, eu gostaria de poder desativa-los.

E eu disse que você não pode de um domínio manipular em um frame ou window código de outro site, mas se for uma extensão no seu browser, ai pode sim. E isso é um problema, pois as extensões são permissivas o suficiente pra se esconder parte delas em códigos externos (sites) que podem conter malwares onde na validação feita pelas empresas na hora de colocar essas extensões disponíveis como seguras em seus sites (Mozilla plugins, Chrome Store, etc) passam como seguras, porém o desenvolvedor pode torna-las inseguras a qualquer momento.

Hoje o seu browser já pede permissão para que o site possa deixar a tela em fullscreen, ainda é um rascunho da API do HTML5, mas uma boa maneira de proteger o usuário de sites maliciosos. Que tal pedir permissão para usar certos plugins e extensões caso o site tenha um “black list” que gostaria de impedir acesso dos mesmos, deixando claro pro usuário o risco que ele está correndo ao usar esses recursos.

Uma janela dizendo “Este site solicita sua permissão para desativar os seguintes recursos: (uma lista com os plugins e extensões)”, lista contendo todos plugins e extensões que foram registrados como desnecessários ou nocivos ao site pelo próprio desenvolvedor.

Desta maneira, se o usuário estiver com seu Java Applet infectado, ou uma extensão do browser já conhecida como problemática pelo site, estas serão informadas ao usuário na hora do acesso, podendo seletivamente para o site serem desativadas na sessão ou permanentemente. Tornando a navegação do usuário mais segura e possivelmente mais agradável no site.

Quanto a ativação e uso dos plugins, acho interessante a maneira que os browsers já fazem, com questão de permitir que o usuário escolha a forma com que esses plugins poderão ser requisitadas pelo site. O que falta realmente é uma API para bloquear plugins e extensões indesejáveis.

Será que poderíamos ajudar a proteger nossos visitantes leigos, que não sabem sequer o que é ou que faz os Java Applets e o Flash?

Espero que essa ideia seja transmitida adiante, lapidada e quem sabe um dia nos desenvolvedores possamos ter mais autonomia na hora de proteger nossos visitantes.

Pra finalizar, lembro que anti-virus também usam de plugins e extensões de forma extremamente intrusiva para proteger seus usuários, até onde uma API com tal controle em mãos do usuário tornaria outras ferramentas de proteção ineficazes? Como usuário de Linux, não vejo isso como um obstáculo, mas acho que pra quem usa Windows pode se tornar quem sabe mais um problema.

Notícias relacionadas

19/02/2013 - Extensão para Chrome rouba “Likes” do Facebook para cibercriminosos

20/02/2013 - Este site inocente causou os ataques à Apple e ao Facebook

22/02/2013 – Apple também foi hackeada devido a falha no Java