APIs e Microsserviços

28 set, 2015

Como evitar ataques como o sofrido pelo Snapchat

Publicidade

O fantasminha chamado Snapchat

O mercado de redes sociais e novas formas de comunicação por meio de apps e plataformas é extremamente aquecido. Facebook parece até um tiozão no meio de projetos novos e populares como o Snapchat ou o Periscope.

Se você não conhece, o Snapchat é um aplicativo móvel para troca de fotos e vídeos curtos, muito popular entre adolescentes com mais de 30 milhões de usuários no mundo todo.

Assim como fez com o WhatsApp, o Facebook tentou comprar a empresa em Novembro do ano passado por 3 bilhões de dólares, sem sucesso. Isso que é bala na agulha hein!

Nem tudo são flores

A despeito do sucesso com os usuários, uma empresa australiana relatou que através da engenharia reversa do app para Android do Snapchat é possível descobrir as APIs e implementar programas maliciosos que se passem pelo app oficial se comunicando com o backend.

Esse tipo de engenharia reversa que “expõe” a API na marra não é tão incomum assim.

Por exemplo, quando foi lançado, o Google Maps não possuía uma API aberta. As APIs internas do produto foram descobertas e começaram a ser usadas de forma positiva, com a criação de aplicações que ajudaram a popularizar o serviço do Google.

Alguns anos depois, a API foi aberta pelo Google, o que definitivamente melhorou o suporte, documentação, funcionalidades e, é claro, a segurança da API.

No caso do Maps, existe informação sensível na forma de fotos de pessoas em certos lugares e posicionamento de casas e outros imóveis. Hoje em dia, qualquer pessoa pode pedir para ter suas fotos censuradas no site, caso sinta que sua privacidade foi prejudicada.

Apesar disso, essa informação não tem um potencial tão grande de invadir diretamente a privacidade das pessoas, como é o caso do Snapchat,  que tem bases de dados com nome, telefone e fotos tiradas pelos próprios usuários – algumas com cunho íntimo.

Quando a API do Snapchat foi descoberta, a empresa não deu muita bola, e um grupo de hackers explorou essa brecha, divulgando dados – nome e telefone – de mais de 4,6 milhões de usuários dos EUA e Canadá (mais informações sobre o incidente aqui).

Por que isso realmente aconteceu?

O erro parece bem bobo por parte do Snapchat, não é? Afinal de contas, esses dados são estritamente pessoais. Imagino que você não queira que um grupo de hackers aleatórios acessem seu telefone e fotos que você mandou para amigos, não é? Tenho certeza que nem os próprios desenvolvedores do Snapchat queriam isso.

Porém, ao decidir por usar as APIs apenas internamente, mas não garantir uma barreira para a engenharia reversa, o Snapchat foi negligente. Segurança baseada em “obscuridade” não é, digamos, segura.

Algumas boas práticas de design e uma ferramenta de gerenciamento de APIs poderiam ter evitado ou minimizado o dano.

Se você quiser conhecer os 10 mandamentos para exposição de APIs e garantir que sua API está prontinha para o mundo, confira esse post.

Aqui, vamos ser mais específicos e ver as boas práticas que poderiam ter evitado essa situação:

Gestão de tráfego

Soluções de API Gateway permitem que a empresa configure políticas de “rate limiting” que podem evitar que clientes externos bombardeiem a API com chamadas repetidas, bloqueando seu acesso.

Outros recursos como “IP filtering” e regras baseadas em tokens de usuários também poderiam ter ajudado.

API pública vs API privada

A brecha que foi explorada é parte da API privada do Snapchat. Quando a API é pública, o risco de usuários desavisados ou mal-intencionados agirem é maior.

Então, sendo privada, essa API poderia estar melhor protegida se amarrasse as invocações a dados específicos do dispositivo sendo usado.

Monitoramento real-time

Se a API é monitorada, situações que possam caracterizar um ataque não são difíceis de serem identificadas.

Uma ferramenta que controlasse acessos (e reagisse automaticamente) é essencial. Limitar apps abusadas, que simplesmente tenham sido programadas errado, ou que sejam realmente maliciosas, deve ser feito rápida e imediatamente.

Afinal de contas, imagino que você não queira que sua API caia para todos os seus bons clientes/parceiros por causa de uma pessoa com más intenções, certo?

Alertas

Um usuário passar uma lista de 100 mil números de telefone para a API “Find_Friends” é, no mínimo, um uso totalmente incomum.

Soluções de Gateway são também capazes de gerar alertas quando situações inusitadas começam a acontecer. Com o processo correto de análise desses alertas, esse usuários poderia ser rapidamente bloqueado.

Reflita!

Pense bem: o aplicativo móvel da sua empresa, que pode estar manipulando dados sigilosos dos usuários, possui algum tipo de proteção contra a de-compilação de seu código e uso inadequado dos serviços de backend expostos através da API privada?

E mais: A sua API é realmente privada ou somente “ligeiramente escondida”?