Desenvolvimento seguro

sábado, 09 de março de 2013

De acordo com um comunicado emitido pela Apple no último dia 7 de janeiro, desde o surgimento da App Store foram baixados 40 bilhões de apps, sendo que quase 20 bilhões só em 2012. A loja possui mais de 500 milhões de contas ativas e mais de 775 mil apps desenvolvidos para iPads e iPhones/iPods touch. Com o sistema de comissionamento 70/30, no qual a Apple repassa 70% do valor bruto aos desenvolvedores, ela já pagou mais de US$7 bilhões.

Com esses números a Apple abriu oportunidades para que pessoas comuns, desenvolvedores independentes, pequenas empresas e grandes empresas compartilhassem desse sucesso, o que criou uma corrida por busca de conhecimento na área de programação para dispositivos Apple.

A linguagem de programação utilizada no desenvolvimento de aplicativos para os sistemas da Apple, seja iOS ou OS X, é a linguagem orientada a objetos chamada Objective-C. Criada no início dos anos 1980, foi a linguagem adotada pela NeXT — empresa fundada por Steve Jobs após a saída da Apple.

A popularização da linguagem aconteceu após a abertura da App Store; de acordo com a TIOBE, a linguagem pulou da 45ª posição, em 2008, para o topo da lista. Atualmente existem inúmeros livros, cursos presenciais e online que ensinam Objective-C. No site developer.apple.com a Apple mantém inúmeros vídeos e documentos auxiliando programadores no aprendizado da linguagem — do básico ao avançado. Caso você tenha interesse em desenvolver para iOS e está começando agora, a Apple disponibiliza um assistente para guiá-lo no aprendizado.

Embora os números e o crescimento de profissionais que dominam a linguagem seja algo positivo, infelizmente a grande maioria dos desenvolvedores para iOS não possui conceitos básicos de segurança e acaba expondo seus apps e web services. Atribuo grande parte deste problema a empresas que não possuem um profissional de segurança para validar as aplicações e serviços que são publicados.

Recentemente fiz um levantamento na App Store brasileira, analisando 50 apps tupiniquins que estão em destaque por liderarem o ranking das categorias ou por proverem serviços que podem chamar a atenção de hackers. O resultado foi alarmante: dos 50 apps analisados, 42 apresentaram algum tipo de falha de segurança e 35 apresentaram falhas de segurança críticas que comprometiam o aplicativo ou o servidor remoto. Dentre os apps analisados que continham algum tipo de vulnerabilidade estão títulos desenvolvidos por grandes software houses especializadas no mundo mobile, equipes de desenvolvimento do setor público, instituições financeiras e de crédito, revistas de circulação nacional e desenvolvedores independentes.

Dos problemas encontrados, foram constatados:

  • Informações críticas de debug sendo impressa na console do sistema — comente todas as saídas do NSLog;
  • Informações críticas e de controle do app sendo salvas em texto plano em arquivos e bancos SQLite dentro da área do aplicativo — ao salvar uma informação crítica, criptografe-a ou armazene dentro da Keychain do sistema;
  • Apps se comunicando com servidores remotos e trafegando informações privadas do usuário em texto plano — utilize SSL para comunicações seguras;
  • Apps expondo informações de autenticação, leitura e gravação em servidores remotos — de acordo com a arquitetura, existem procedimentos de segurança a serem adotados;
  • Servidores de conteúdo vulneráveis a downloads gratuitos enganando o sistema de controle e pagamento do app — de acordo com a arquitetura, existem procedimentos de segurança a serem adotados;
  • Dados manipulados diretamente na memória do dispositivo e sem validação do aplicativo — valide todos os dados na etapa final de processamento;
  • Chaves de criptografia simétrica salvas em formato string dentro da aplicação — monte uma sequência de valores e cálculos que resultam na chave que será utilizada;
  • Spoofing de DNS ocasionando o redirecionamento da comunicação para servidores falsificados e a captura de informações de conexão — utilize certificados digitais empacotados no app para validar a conexão com um servidor remoto;
  • Servidores remotos vulneráveis a leituras e gravação por um cliente falsificado — valide por meios dinâmicos a aplicação que está se comunicando com o serviço;
  • Manipulação de informações sigilosas sendo feitas por classes/objetos em memória — a linguagem Objective-C é runtime, todos os objetivos em uso ficam alocados em memória e podem ser acessados diretamente por um usuário privilégiado através do sistema operacional, manipule dados críticos utilizando funções em C e destrua ponteiros e objetos quando não estiverem em uso.

Os problemas aqui apresentados são sérios e afetam grande parte dos apps disponíveis na loja da Apple. Como o iOS possui uma camada de segurança chamada sandbox, tais vulnerabilidades ficam restritas ao app e cabe ao desenvolvedor cuidar da segurança do seu sistema.

Por uma questão de ética, não irei expor aqui o nome de nenhum app analisado.

Publicado em: https://macmagazine.uol.com.br/post/2013/03/09/seguranca-no-mundo-apple-desenvolvimento-seguro/

Conteúdos recentes

Inovação, acessibilidade e discriminação

Não é preciso explicar muito para mostrar que deficientes, negros, mulheres, idosos, dentre outros, não são prioridade. Sou empreendedor na área de TI e não é difícil perceber que temos poucos negros no segmento. Qual é o impacto da discriminação para o empreendedor no Brasil?

ler mais

A infodemia é o mal do século 21

Hoje, tudo é muito rápido, dinâmico e grandioso, a tecnologia nos permite receber e enviar informações, interagindo a todo momento com todos. Conseguimos ser atores e telespectadores simultaneamente, em situações e assuntos diversos.

ler mais

Desenvolvimento seguro

por Renato Ribeiro Tempo para ler: 4 min
Share This