O quão seguro é o #Mega ?

Information Security Wordle: RFC2196 - Site Se...
Crédito: purpleslog
O Torrent Freak traz uma questão importante, levantada por um desenvolvedor que afirma ter criado um bookmarklet que acessa a "chave master" de criptografia do usuário. O ponto mais interessante é que a discussão revelou os (já conhecidos) problemas da segurança do navegador, em especial do javascript ou qualquer outro código carregado "sob demanda". Traduzi (livre) trechos do artigo, pois considero o texto uma aula de segurança.
Nova ferramenta alega revelar chave mestra de usuários do MEGA 
(...) 
O software, conhecido como MEGApwn é um bookmarklet javascript que é executado em um navegador web. Uma vez que o usuário esteja logado, o software alega revelar a chave mestra do usuário. Koziarski (o desenvolvedor) diz que isso prova que a própria chave mestra não é criptografada e que qualquer pessoa com acesso ao computador de um usuário MEGA pode acessá-la. 
No entanto, esta não é a reivindicação mais polêmica. Koziarski diz que a própria MEGA é capaz de pegar uma chave e usá-la para acessar os arquivos de um usuário.
Koziarski explica que "Seu navegador web confia no que quer que receba do MEGA, o que significa que eles podem pegar sua chave mestra sempre que você visitar o site e, em seguida, usá-la para descriptografar e ler seus arquivos. Você nunca sabe". 
(...) 
As revelações provocaram uma troca de mensagens com o programador Bram Van der Kolk, da MEGA, que questionou como qualquer um teria acesso ao computador de um usuário. 
"Você realmente quer MEGA para proteja os usuários contra isso?", disse.
"Não, eu quero que os usuários entendam o quão facilmente você pode ler todos os seus arquivos se você quiser", respondeu Koziarski.
"Você quer dizer o quão facilimente o próprio usuário pode ler os seus próprios arquivos. Exatamente como um atacante externo pode aproveitar isso?", Der Kolk questiona.
"Então você concorda que o MEGA só é seguro contra invasores externos, que você pode ler meus arquivos, se você quiser?", Koziarski disparou de volta.
"Você está seriamente sugerindo que serviríamos um cavalo de Tróia em javascript ? Instale uma das nossas extensões do navegador e desligue as atualizações automáticas", rebateu Der Kolk. 
Para tentar ter uma idéia mais clara do quão séria (ou não) esta questão é, o TorrentFreak contactou tanto MEGA quanto Koziarski para comentar sobre a nova ferramenta. 
(...) 
"Será que este hack permite invadir o MEGA ? Não, ele simplesmente demonstra um dos muitos problemas graves e insolúveis que enfrentamos ao fazer a criptografia em aplicações web javascript. Existem muitos outros problemas como este e é por isso que muitos especialistas respeitados alertam contra isso há anos", conclui. 
(...) 
Update 2: Comentários de Michael Koziarski 
Eu fiz a ferramenta porque notei que as pessoas caíram em um dos dois campos quando se trata da criptografia do MEGA. Se soubessem das limitações da criptografia javascript, eles entenderiam que a criptografia do MEGA poderia facilmente ser contornada pelo próprio MEGA ou qualquer outra pessoa com acesso a seus servidores web. Mas os usuários que não sabiam nada sobre a criptografia pareciam pensar que havia algo incrivelmente seguro sobre MEGA. 
Por outro lado, se você criptografar os arquivos com PGP antes de enviá-los, não há nada que MEGA ou qualquer outra pessoa pode fazer para recuperá-los. Nós já temos as ferramentas que precisamos [para resolver o problema]. 
Eu liberei MEGApwn para tornar mais fácil mostrar os usuários novatos como facilmente o MEGA (ou o FBI, com um mandado) poderia contornar a criptografia, se quisesse. Todo mundo na indústria de segurança já sabia disso. 
Quanto à forma como ele funciona, é muito, muito simples. Navegadores não têm um local seguro para armazenar dados confidenciais como a sua chave mestra, então o MEGA usa a API de armazenamento local do HTML5. No entanto, esses dados estão disponíveis para qualquer pessoa usando o seu computador, ou qualquer código javaScript executado no domínio mega.co.nz. O MEGApwn simplesmente lê a chave do armazenamento local e mostra para você. 
Fundamentalmente, o problema é que o seu navegador irá fielmente executar qualquer código de mega.co.nz, e seu navegador tem que baixar o código, basicamente, toda vez que você visita o site MEGA. 
O MEGA configurou seus servidores web com SSL e HSTS, e não inseriram nenhum código de terceiros em seu site, por isso é relativamente seguro contra um terceiro tentando injetar código. 
Se quisessem, qualquer funcionário MEGA poderia incluir o código que extrai sua chave secreta e carregá-lo para seus servidores. 
(...) 
A raiz do problema é que a abordagem da MEGA para a criptografia é segura se, e somente se, você confia que o MEGA não vai extrair as chaves. O que não é muito diferente de confiar em qualquer outro provedor de armazenamento em nuvem mais tradicional para não ler seus arquivos. 
(...) 
Update 3: Comentários de Bram Van der Kolk de MEGA 
Gostaríamos de agradecer a um membro da comunidade MEGA por destacar dois dos potenciais riscos de segurança associados com o uso de computadores em geral e criptografia baseada em javascript em particular. Todas estas questões foram abordadas em nosso FAQ, desde o início, mas gostaríamos de aproveitar a oportunidade e reiterá-las aqui, caso você tenha perdido que: 
1. Se você tiver acesso a um computador, você pode quebrar MEGA (e tudo o mais, também) 
Este problema é ilustrado por um bookmarklet específico para o MEGA, que permite que a vítima invada sua própria conta. Uma abordagem mais generalizada é descrita no artigo de Brian Kaplan sobre extrair chaves de criptografia de memória volátil. E, se a vítima instala software de monitoramento remoto (keylogger / screen grabber) em sua máquina, o potencial de falha de segurança torna-se bastante abrangente. 
2. Criptografia javascript é fraca, porque o código é carregado na hora 
Há dois problemas de confiança associados com código carregado on-the-fly: quão seguro é o mecanismo de entrega? O provedor vai me enviar trojan após o recebimento, por exemplo, de uma carta do FBI? 
2.1 Entrega javascript 
A integridade do nosso código javascript depende da integridade de todos os emissores de certificado SSL, que seu navegador confia, mais os provedores entre você e nosso cluster de servidor raiz e/ou os servidores DNS envolvidos. Ou, dito sem rodeios: "Se você pode quebrar SSL, você pode quebrar o MEGA". Claro que, se você pode quebrar SSL, há alvos mais interessantes para você que o MEGA... 
2.2 Entrega intencional de código javascript backdoor por nós para usuários específicos 
Se fôssemos maldosos e estivéssemos coagidos pela legislação, como numa futura revisão das leis de telecomunicações da Nova Zelândia, poderíamos enviar código trojan javascript que envia a sua chave mestra de criptografia para nós. 
2.3 Provedores de armazenamento em nuvem tradicionais vs seguros 
Javascript
A diferença fundamental entre os provedores de armazenamento em nuvem tradicionais (do lado do servidor de criptografia) e seguros (do lado do cliente de criptografia) é que o primeiro pode interceptar todos os dados de todos os usuários sem que as vítimas tenham uma maneira de descobrir, enquanto o este último tem que fazer algo que é detectável no lado do cliente. É verdade que, apesar da detectabilidade teórica, tais ataques provavelmente passariam despercebidos para a grande maioria dos clientes. 
2.4 Soluções 
Se você está preocupado com os riscos descritos acima, você deve usar MEGA de uma forma que não depende de código fornecido on the fly. 
Carregando javascript do MEGA a partir de sua máquina local 
Nós oferecemos uma extensão para o navegador (atualmente disponível para Chrome, logo para o Firefox), com a totalidade do código do MEGA. Se você instalar a versão de alguém que você confia que tem código auditado e desativar as atualizações automáticas, não poderemos enviar backdoor pra você. 
2.4.2 Usando um aplicativo cliente 
Um aplicativo cliente sem atualização automática que foi escrito ou auditado por alguém que você confia é imune contra backdoor dinâmico. 
3. Javascript não confiável carregado a partir de um website ainda é mais seguro do que um executável não confiável carregado a partir do mesmo site 
É um equívoco comum achar que o javascript é inerentemente inseguro e que o código de máquina nativo é uma escolha muito melhor para criptografia. Embora seja verdade que o acesso completo aos recursos da máquina host permite algum grau adicional de segurança (tais como prevenção de teclas sejam enviados para espaço de swap), javascript malicioso executa na sandbox do seu navegador (assumindo, claro, que não há vulnerabilidades conhecidas do navegador - uma suposição reconhecidamente fraca), pelo menos não pode assumir toda a sua conta de usuário ou, se você trabalha como root/administrador, do sistema!
 Fique sabendo das novidades do blog e treinamentos EAD!

RSSE-MailIconIcon
Enhanced by Zemanta

Christian Guerreiro

Professor por vocação, blogueiro e servidor público por opção, amante da tecnologia e viciado em informação.


Ensino a distância em Tecnologia da Informação: Virtualização com VMware, Big Data com Hadoop, Certificação ITIL 2011 Foundations e muito mais.


Suporte o Tecnologia que Interessa!

Você acha que as informações compartilhadas aqui são úteis?
Então me ajude a produzir ainda mais e melhores conteúdos!


É muito fácil. Basta divulgar nossos treinamentos pra alguém que conheça!


E se for de Salvador, podemos estruturar um curso presencial para sua empresa!

Eu vou ficar muito grato (e quem fizer os curso também :)!