iOS App Extensions

Support HackTricks

As extensões de aplicativos aprimoram a funcionalidade dos aplicativos, permitindo que interajam com outros aplicativos ou com o sistema, fornecendo recursos ou conteúdo personalizados. Essas extensões incluem:

  • Teclado Personalizado: Oferece um teclado exclusivo em todos os aplicativos, substituindo o teclado padrão do iOS.

  • Compartilhar: Permite compartilhar em redes sociais ou com outros diretamente.

  • Hoje (Widgets): Fornece conteúdo ou realiza tarefas rapidamente a partir da visualização Hoje do Centro de Notificações.

Quando um usuário interage com essas extensões, como compartilhar texto de um aplicativo host, a extensão processa essa entrada dentro de seu contexto, aproveitando as informações compartilhadas para realizar sua tarefa, conforme detalhado na documentação da Apple.

Considerações de Segurança

Os principais aspectos de segurança incluem:

  • Extensões e seus aplicativos contidos se comunicam via comunicação entre processos, não diretamente.

  • O widget Hoje é único, pois pode solicitar que seu aplicativo seja aberto por meio de um método específico.

  • O acesso a dados compartilhados é permitido dentro de um contêiner privado, mas o acesso direto é restrito.

  • Certas APIs, incluindo HealthKit, estão fora dos limites para extensões de aplicativos, que também não podem iniciar tarefas de longa duração, acessar a câmera ou o microfone, exceto para extensões do iMessage.

Análise Estática

Identificando Extensões de Aplicativos

Para encontrar extensões de aplicativos no código-fonte, procure por NSExtensionPointIdentifier no Xcode ou inspecione o pacote do aplicativo em busca de arquivos .appex que indiquem extensões. Sem o código-fonte, use grep ou SSH para localizar esses identificadores dentro do pacote do aplicativo.

Tipos de Dados Suportados

Verifique o arquivo Info.plist de uma extensão para NSExtensionActivationRule para identificar os tipos de dados suportados. Essa configuração garante que apenas tipos de dados compatíveis acionem a extensão em aplicativos host.

Compartilhamento de Dados

O compartilhamento de dados entre um aplicativo e sua extensão requer um contêiner compartilhado, configurado via "Grupos de Aplicativos" e acessado através de NSUserDefaults. Esse espaço compartilhado é necessário para transferências em segundo plano iniciadas por extensões.

Restringindo Extensões

Os aplicativos podem restringir certos tipos de extensões, particularmente teclados personalizados, garantindo que o manuseio de dados sensíveis esteja alinhado com os protocolos de segurança.

Análise Dinâmica

A análise dinâmica envolve:

  • Inspecionando Itens Compartilhados: Intercepte NSExtensionContext - inputItems para ver tipos de dados e origens compartilhados.

  • Identificando Extensões: Descubra quais extensões processam seus dados observando mecanismos internos, como NSXPCConnection.

Ferramentas como frida-trace podem ajudar a entender os processos subjacentes, especialmente para aqueles interessados nos detalhes técnicos da comunicação entre processos.

Referências

Support HackTricks

Last updated