Defesas iOS Anti-Reversão¶
Visão Geral¶
Este capítulo aborda medidas de defesa em profundidade recomendadas para aplicativos que processam ou dão acesso a dados ou funcionalidades sensíveis. Pesquisas mostram que muitos aplicativos da App Store frequentemente incluem essas medidas.
Essas medidas devem ser aplicadas conforme necessário, com base em uma avaliação dos riscos causados por manipulação não autorizada do aplicativo e/ou engenharia reversa do código.
- Aplicativos nunca devem usar essas medidas como substituto para controles de segurança, sendo esperado que cumpram outras medidas de segurança básicas, como o restante dos controles de segurança do MASVS.
- Aplicativos devem combinar essas medidas de forma inteligente em vez de usá-las individualmente. O objetivo é desencorajar engenheiros reversos de realizar análises adicionais.
- Integrar alguns dos controles em seu aplicativo pode aumentar a complexidade do mesmo e até mesmo ter impacto em seu desempenho.
Você pode aprender mais sobre princípios e riscos técnicos de engenharia reversa e modificação de código nestes documentos da OWASP:
- Princípios Arquiteturais da OWASP que Previnem Modificação de Código ou Engenharia Reversa
- Riscos Técnicos da OWASP de Engenharia Reversa e Modificação Não Autorizada de Código
Aviso Geral:
A falta de qualquer uma dessas medidas não causa uma vulnerabilidade - em vez disso, elas destinam-se a aumentar a resiliência do aplicativo contra engenharia reversa e ataques específicos do lado do cliente.
Nenhuma dessas medidas pode garantir 100% de eficácia, pois o engenheiro reverso sempre terá acesso total ao dispositivo e, portanto, sempre vencerá (dado tempo e recursos suficientes)!
Por exemplo, prevenir depuração é virtualmente impossível. Se o aplicativo está publicamente disponível, ele pode ser executado em um dispositivo não confiável que está sob controle total do atacante. Um atacante muito determinado eventualmente conseguirá contornar todos os controles anti-depuração do aplicativo através de patch no binário do aplicativo ou modificando dinamicamente o comportamento do aplicativo em tempo de execução com ferramentas como Frida.
As técnicas discutidas abaixo permitirão que você detecte várias maneiras pelas quais um atacante pode direcionar seu aplicativo. Como essas técnicas são documentadas publicamente, geralmente são fáceis de contornar. Usar técnicas de detecção de código aberto é um bom primeiro passo para melhorar a resiliência do seu aplicativo, mas ferramentas padrão de anti-detecção podem contorná-las facilmente. Produtos comerciais normalmente oferecem maior resiliência, pois combinam várias técnicas, como:
- Usar técnicas de detecção não documentadas
- Implementar as mesmas técnicas de várias maneiras
- Acionar a lógica de detecção em diferentes cenários
- Fornecer combinações de detecção únicas por build
- Trabalhar em conjunto com um componente backend para verificação adicional e criptografia de payload HTTP
- Comunicar o status de detecção para o backend
- Ofuscação estática avançada
Knowledge Articles¶
| ID | Name | Platform |
|---|---|---|
| MASTG-KNOW-0089 | Ofuscação. | |
| MASTG-KNOW-0086 | Verificações de Integridade de Arquivos | |
| MASTG-KNOW-0084 | Detecção de Jailbreak | |
| MASTG-KNOW-0087 | Detecção de Ferramentas de Engenharia Reversa | |
| MASTG-KNOW-0090 | Vinculação de Dispositivo | |
| MASTG-KNOW-0085 | Detecção de Anti-Debugging | |
| MASTG-KNOW-0088 | Detecção de Emulador |