MASTG-TEST-0230: Contagem Automática de Referências (ARC) não ativada
Visão Geral¶
Este caso de teste verifica se o ARC (Automatic Reference Counting))) está habilitado em aplicativos iOS. ARC é um recurso do compilador em Objective-C e Swift que automatiza o gerenciamento de memória, reduzindo a probabilidade de vazamentos de memória e outros problemas relacionados. Habilitar o ARC é crucial para manter a segurança e a estabilidade de aplicações iOS.
- Código Objective-C: O ARC pode ser habilitado compilando com a flag
-fobjc-arcno Clang. - Código Swift: O ARC é habilitado por padrão.
- Código C/C++: O ARC não é aplicável, pois é específico para Objective-C e Swift.
Quando o ARC está habilitado, os binários incluirão símbolos como objc_autorelease ou objc_retainAutorelease.
Passos¶
- Extraia a aplicação e identifique o binário principal ( Obtenção e Extração de Apps).
- Identifique todas as bibliotecas compartilhadas ( Obter Bibliotecas Compartilhadas).
- Execute Obtenção de Recursos de Segurança Fornecidos pelo Compilador no binário principal e em cada biblioteca compartilhada procurando por símbolos do ARC, como
objc_autoreleaseouobjc_retainAutorelease.
Observação¶
A saída deve conter uma lista de símbolos do binário principal e de cada biblioteca compartilhada.
Avaliação¶
O teste falha se qualquer binário ou biblioteca que contenha código Objective-C ou Swift estiver faltando símbolos relacionados ao ARC. A presença de símbolos como _objc_msgSend (Objective-C) ou _swift_allocObject (Swift) sem os símbolos correspondentes do ARC indica que o ARC pode não estar habilitado.
Observação: Verificar a presença desses símbolos apenas indica que o ARC está habilitado em alguma parte do aplicativo. Embora o ARC normalmente seja habilitado ou desabilitado para o binário inteiro, podem existir casos específicos em que apenas partes da aplicação ou bibliotecas estejam protegidas. Por exemplo, se o desenvolvedor do aplicativo vincular estaticamente uma biblioteca que tenha o ARC habilitado, mas desabilitá-lo para a aplicação como um todo.
Se você quiser ter certeza de que métodos específicos críticos para segurança estão adequadamente protegidos, será necessário fazer a engenharia reversa de cada um deles e verificar manualmente a presença do ARC, ou solicitar o código-fonte ao desenvolvedor.