5.6 KiB
iOS App Extensions
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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 executa 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:
- As extensões e seus aplicativos contidos se comunicam por meio de 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 por meio de "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: Conecte-se a
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
- https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/
- https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.