Skip to content

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-arc no 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

  1. Extraia a aplicação e identifique o binário principal ( Obtenção e Extração de Apps).
  2. Identifique todas as bibliotecas compartilhadas ( Obter Bibliotecas Compartilhadas).
  3. 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_autorelease ou objc_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.