Os aplicativos para dispositivos móveis lidam com informações muito valiosas dos usuários: fotos e vídeos, cartões de crédito, logins bancários, documentos pessoais, comerciais e muito mais. Para os desenvolvedores, a missão é criar aplicativos que cumpram seu propósito sem colocar os usuários em risco. Portanto, confira algumas dicas que todos os programadores de aplicativos para iOS devem ter em conta.
#1 Não perca tempo com mecanismos para detectar jailbreaking
Em um cenário real, os cibercriminosos não medem esforços para tentar evitar os algoritmos de detecção de jailbreaking que tenham sido definidos e, eventualmente, poderão burlar esses controles. Você pode incluir essa camada como uma forma de dificultar o trabalho dos criminosos, mas tenha certeza de que um invasor com experiência suficiente encontrará a solução, mais cedo ou mais tarde - normalmente, em 48 horas. O mesmo se aplica às diferentes técnicas de ofuscação binária ou DRM.
#2 Exclua os arquivos confidenciais de forma correta
Ao administrar informações confidenciais, lembre-se de que esses dados podem permanecer no sistema de diferentes formas. Exclua qualquer informação que possa ter sido armazenada em cache. Pense que, se você compartilhar informações com outros aplicativos, poderá perder o controle e as informações podem ficar armazenada indefinidamente. Por exemplo, se um aplicativo tentar abrir um arquivo (que não pode ser aberto pelo app), o mesmo será enviado para um aplicativo de terceiros e armazenado na pasta Documents/Inbox, onde permanecerá até que outro aplicativo decida excluí-lo.
#3 Trate os avisos do Xcode como erros
Enquanto estiver trabalhando em seu ambiente de desenvolvimento, aumente a importância dos avisos nas configurações do ambiente e trate-os como erros. A maioria dos avisos gerados pelo Clang, o analisador estático do Xcode, podem evitar grandes dores de cabeça se forem resolvidos de forma rápida. Além de reduzir a complexidade do código e garantir a sintaxe correta, eles também ajudam a identificar erros que são frequentemente difíceis de detectar, como formatos incorretos ou erros de assinaturas (signed ou unsigned), que podem levar a vulnerabilidades de gerenciamento de memória. Além disso, é recomendável habilitar todas as verificações estáticas do Clang para identificar o uso de APIs perigosos ou o processamento inseguro de dados de entrada.
# 4 - Confie no Cocoa ao invés de parchear
Tanto o Objective-C quanto o Cocoa são de alto nível e evitam muitos dos erros clássicos de segurança comumente encontrados no C. É claro que ainda existem maneiras de introduzir falhas no gerenciamento de memória ou manipulação de objetos, mas eles não devem produzir mais de uma negação de serviço. Portanto, use o Cocoa sempre que possível e evite adicionar código em C ou C ++.
#5 Aproveite ao máximo o ASLR
O ASLR (Address Space Layout Randomization) garante que a estrutura do programa e seus dados sejam carregados na memória em áreas menos previsíveis do espaço de endereço virtual. Isso inclui o executável principal, as bibliotecas, o heap e a stack e qualquer outro arquivo que precise ser mapeado. Esse mecanismo dificulta a execução de explorações de execução de código e está presente no iOS 4.3.
No entanto, para que isso seja eficaz, você deve criar seu aplicativo como PIE (Position Independent Executable). Isto irá dizer ao compilador para criar código de máquina capaz de ser executado em qualquer parte da memória. Para isso, sua Deployment Target deve ser pelo menos iOS 4.3 e, nas Build Settings, você deve indicar "Não" para “Generate Position-Dependent Code” e também para “Don’t Create Position Independent Executable”.
#6 Realize auditoria do código de terceiros
Realizar testes de penetração do código em si não será suficiente para garantir que o resultado final esteja livre de falhas de segurança. Quando você inclui um código de terceiros em seu projeto, certifique-se de que ele não introduza vulnerabilidades em seu aplicativo final. Verifique a administração de conexões TLS, a verificação de entradas externas, o armazenamento de dados confidenciais, o uso de categorias e qualquer outra fonte de falhas que você verificaria em seu código base.
Saiba mais sobre o assunto
Aqui concluimos a primeira parte do desenvolvimento seguro de aplicativos para iOS. Confira também os guias de segurança no IOS da Apple, fóruns de desenvolvedores ou o guia de introdução ao desenvolvimento seguro. Em breve, publicaremos mais dicas para criar seus aplicativos para dispositivos móveis da Apple.
Fique ligado no WeLiveSecurity!