CVE-2014-4404
Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.
Apply updates per vendor instructions.
Resumen
Falha de heap overflow no driver de kernel IOHIDFamily do iOS e do Apple TV, no código que processa propriedades de key-mapping (mapeamento de teclas de dispositivos HID). Permite que um aplicativo comum, sem privilégios especiais, escale para execução de código em contexto privilegiado (kernel/system) no dispositivo. Descoberta por Ian Beer, do Google Project Zero, e está no catálogo KEV da CISA — ou seja, há exploração confirmada, historicamente associada ao ecossistema de jailbreak do iOS 8.
Detalle técnico
IOHIDFamily é o framework de kernel (parte do IOKit, no XNU) responsável por dispositivos HID — teclados, gamepads, dispositivos de entrada virtuais. Ele expõe uma interface de user client que qualquer processo pode abrir e usar para configurar propriedades de mapeamento de tecla (key-mapping properties), estrutura de dados que traduz códigos de tecla física para funções lógicas.
O bug é um heap-based buffer overflow (CWE-122): ao processar propriedades de key-mapping fornecidas pelo chamador, o driver não valida corretamente o tamanho ou a estrutura dos dados antes de copiá-los para um buffer alocado no heap do kernel. Um app malicioso controla o conteúdo e, presumivelmente, o tamanho dessas propriedades ao configurá-las via a API pública do IOHIDFamily, e consegue escrever além dos limites do buffer alocado.
Como a corrupção ocorre em memória de kernel, o impacto não se limita a crash: com heap grooming adequado, o atacante pode sobrescrever estruturas adjacentes no heap do kernel e desviar fluxo de execução, obtendo code execution com privilégios de sistema — fora da sandbox do app. É a mesma classe de bug (validação insuficiente de key-mapping properties no IOHIDFamily) que gerou também a CVE-2014-4405 (null pointer dereference), corrigida no mesmo conjunto de patches, o que sugere uma revisão ampla de robustez feita pela Apple naquele componente após o relato de Beer.
O advisory da Apple para OS X Yosemite 10.10 lista a mesma CVE-2014-4404 como corrigida no lançamento do 10.10, com descrição idêntica ('heap buffer overflow existed in IOHIDFamily's handling of key-mapping properties'). Isso indica que o componente vulnerável também existia em versões anteriores do OS X, mesmo que a descrição oficial do NVD cite apenas iOS e Apple TV.
Cómo se explota
O vetor é local: um aplicativo instalado no dispositivo (não necessariamente via App Store — o CVSS aponta AV:L e UI:R, ou seja, requer que o usuário execute a app maliciosa) abre uma conexão com o user client do IOHIDFamily e envia propriedades de key-mapping malformadas para triggerar o overflow no heap do kernel. Não há componente de rede: não é explorável remotamente sem antes conseguir execução de código no dispositivo.
Não exige autenticação de sistema nem configuração não padrão — qualquer app capaz de rodar no aparelho, mesmo dentro da sandbox padrão de apps, pode acessar a interface do IOHIDFamily, que é exposta para todo processo por necessidade funcional (processar entrada de dispositivos HID). Isso é o que torna a falha crítica para escalonamento de privilégios: o atacante já tem execução em espaço de usuário e usa o bug para saltar para kernel/system, contornando a sandbox de apps do iOS.
Há PoC pública e módulo Metasploit documentados, e a presença no catálogo KEV da CISA confirma exploração real. O uso histórico mais conhecido dessa classe de falhas em IOHIDFamily do iOS 8 esteve ligado a ferramentas de jailbreak da época, que empilhavam múltiplas CVEs de escalonamento de privilégio de kernel (incluindo esta e a CVE-2014-4405) para obter execução irrestrita a partir de um app comum.
Versiones
Cómo protegerse
Atualizar para iOS 8.0 ou posterior (dispositivos afetados: iPhone 4s e posteriores, iPod touch 5ª geração e posteriores, iPad 2 e posteriores) e para Apple TV 7.0 ou posterior (Apple TV 3ª geração e posteriores) elimina a falha — a Apple corrigiu através de melhor verificação de limites (bounds checking) no tratamento das key-mapping properties. Para o componente equivalente no macOS, a correção veio no lançamento do OS X Yosemite 10.10.
Não há paliativo de configuração real: a falha está em um driver de kernel exposto por padrão a qualquer processo, e não existe flag documentada para desabilitar o acesso do IOHIDFamily a apps sem quebrar funcionalidade básica de entrada do dispositivo. Restringir a instalação de apps a fontes confiáveis (não fazer sideload, evitar perfis de configuração/MDM não confiáveis) reduz a superfície de exposição, mas não corrige o bug — é mitigação de risco operacional, não da vulnerabilidade em si.
Dispositivos que não recebem mais atualizações do fabricante e ficaram presos em iOS anterior à versão 8 ou Apple TV anterior à 7 permanecem vulneráveis de forma permanente; não há workaround de terceiros documentado para esses casos.
Cómo detectar
Não há assinatura de rede: a exploração é inteiramente local, dentro do dispositivo, via chamadas à interface do IOHIDFamily. Não existe sinal de tráfego confiável para detectar tentativas de exploração.
Sinais possíveis, embora não conclusivos, incluem panic logs do kernel referenciando IOHIDFamily ou corrupção de heap no subsistema HID, e comportamento de apps que abrem conexões IOKit para user clients de HID sem justificativa funcional aparente (relevante em contexto de análise forense pós-comprometimento ou MDM com telemetria de kernel). Para a maioria dos ambientes corporativos, a única defesa prática auditável é confirmar a versão de iOS/tvOS instalada nos dispositivos gerenciados.