Skip to content

MASTG-KNOW-0061: Mecanismos de Proteção Binária

A detecção da presença de mecanismos de proteção binária depende fortemente da linguagem utilizada para desenvolver o aplicativo.

Embora o Xcode habilite todos os recursos de segurança binária por padrão, pode ser relevante verificar isso em aplicativos antigos ou para verificar configurações incorretas de flags do compilador. Os seguintes recursos são aplicáveis:

Saiba mais:

Testes para detectar a presença desses mecanismos de proteção dependem fortemente da linguagem utilizada para desenvolver o aplicativo. Por exemplo, técnicas existentes para detectar a presença de canários de pilha não funcionam para aplicativos puros em Swift.

Configurações do Projeto no Xcode

Proteção com Canários de Pilha (Stack Canary)

Passos para habilitar a proteção com canários de pilha em um aplicativo iOS:

  1. No Xcode, selecione seu target na seção "Targets", depois clique na aba "Build Settings" para visualizar as configurações do target.
  2. Certifique-se de que a opção "-fstack-protector-all" está selecionada na seção "Other C Flags".
  3. Certifique-se de que o suporte a Executáveis Independentes de Posição (PIE) está habilitado.

Proteção PIE

Passos para compilar um aplicativo iOS como PIE:

  1. No Xcode, selecione seu target na seção "Targets", depois clique na aba "Build Settings" para visualizar as configurações do target.
  2. Defina o iOS Deployment Target para iOS 4.3 ou posterior.
  3. Certifique-se de que "Generate Position-Dependent Code" (seção "Apple Clang - Code Generation") está definido como seu valor padrão ("NO").
  4. Certifique-se de que "Generate Position-Dependent Executable" (seção "Linking") está definido como seu valor padrão ("NO").

Proteção ARC

O ARC é habilitado automaticamente para aplicativos Swift pelo compilador swiftc. No entanto, para aplicativos Objective-C, você precisará garantir que esteja habilitado seguindo estes passos:

  1. No Xcode, selecione seu target na seção "Targets", depois clique na aba "Build Settings" para visualizar as configurações do target.
  2. Certifique-se de que "Objective-C Automatic Reference Counting" está definido como seu valor padrão ("YES").

Consulte o Technical Q&A QA1788 Building a Position Independent Executable.