iOS App Extensions
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
Last updated