O melhor pedaço da Maçã.

Brechas no CocoaPods deixaram apps para iOS, macOS e outros expostos

CocoaPods

Pesquisadores do grupo de segurança E.V.A Information Security descobriram que uma série de vulnerabilidades deixou expostos centenas ou milhares de pacotes do CocoaPods — popular gerenciador de dependências para projetos entre desenvolvedores de aplicativos para iOS, iPadOS, macOS e outros — a ataques maliciosos.

Publicidade

Em síntese, a CocoaPods é uma plataforma de código aberto que serve para gerenciar bibliotecas ou pacotes que podem ser usados para desenvolver softwares, denominados pods. Ela possui medidas de segurança, como assinatura de pacotes com criptografia para permitir aos desenvolvedores verificar a integridade e a autenticidade dos componentes usados.

Um outro conceito importante na CocoaPods é o de Podspec, um arquivo de especificação que descreve um pacote (pod) com dados como nome, versão, arquivos de origem, dependências e outras informações. A CocoaPods exige que autores tanto de pods quanto de Podspecs registrem uma conta, para que possam fazer o upload de novos pacotes ou atualizar os já existentes.

Vulnerabilidade CVE-2024-38368

Tendo usado de início como método para identificação de contas dos autores uma associação com o perfil deles no GitHub, o CocoaPods anunciou, em 2014, uma migração para o servidor Trunk — o qual agora atuaria como um repositório centralizado e passaria a ser responsável por coisas como gerenciamento de repositórios/pods, autenticação/autorização e publicação de bibliotecas.

Publicidade

Como o novo método incluía validação de email para os autores, ele provavelmente foi criado para melhorar a segurança dos usuários. Porém, essa migração requeria que os autores de pacotes originais já disponíveis na plataforma reivindicassem a propriedade dos seus pods para manter o controle sobre eles. Muitos deles não o fizeram — o que resultou no que o E.V.A chamou de pods órfãos (isto é, não reivindicados).

Ao analisar o código-fonte do servidor Trunk, os pesquisadores da E.V.A descobriram que todos os pods órfãos estavam associados a uma única proprietária padrão do CocoaPods, até que fossem reivindicados. A API 1Application programming interface, ou interface de programação de aplicações. pública para reivindicar um pacote, instaurada em 2014, ainda estava disponível e permitia, pasmem, que qualquer pessoa reivindicasse pods órfãos sem a necessidade de verificação de propriedade.

Um potencial invasor, portanto, poderia facilmente reivindicar qualquer um ou todos esses pods órfãos como sendo seus — o que abriria caminho para que ele manipulasse facilmente o código-fonte ou inserisse conteúdos maliciosos para infectar dependências inferiores, chegando a aplicativos populares e, portanto, atingindo uma grande porcentagem de dispositivos da Apple atualmente em uso.

Publicidade

Segundo os pesquisadores, muitos pods não reivindicados ainda são amplamente utilizados — inclusive como dependências de outros pacotes atualmente disponíveis oficialmente no CocoaPods. Foram encontradas menções a pods órfãos na documentação de apps de empresas como Meta, Microsoft, Amazon e até mesmo da própria Apple (no Safari, no Apple TV e no Xcode).

No total, encontramos 685 pods que tinham uma dependência explícita usando um pod órfão; sem dúvida, há centenas ou milhares mais em bases de código proprietárias. Todos esses foram, em algum período, vulneráveis ao ataque à cadeia de suprimentos.

Vulnerabilidade CVE-2024-38366

Para garantir a procedência dos dados informados por um autor na hora de fazer um cadastro no CocoaPods, o servidor Trunk usava um novo processo de verificação utilizando um pacote de terceiros denominado RFC-822 — o qual, segundo os pesquisadores, possui muitos métodos vulneráveis.

Em termos técnicos, um usuário atacante poderia fornecer um comando como bash junto ao email fornecido, o qual era executado pelo sistema operacional visando validar a autenticidade do registro DNS MX fornecido pelo usuário no email.

Isso permitia a execução de comandos externos maliciosos no sistema operacional, possibilitando injetar, por exemplo, um comando bash em conjunto a um registro MX controlado pelo atacante que contenha uma sintaxe válida de determinado comando malicioso — o que poderia resultar em grandes problemas.

Se um ator de ameaça não autorizado comprometer o servidor, ele poderá potencialmente acessar todos os tokens de sessão dos proprietários dos pods, envenenar o tráfego dos clientes ou até mesmo desligar o servidor completamente.

Vulnerabilidade CVE-2024-38367

Essa vulnerabilidade também está, de certa forma, relacionada ao método de autenticação do CocoaPods via servidor Trunk. Para autenticar um novo dispositivo, o gerenciador de dependências envia uma solicitação do ciente, o qual fornece seu endereço de email para obter uma seção — esta é considerada válida apenas quando o proprietário clica em um link enviado para a sua caixa de entrada.

Publicidade

Esse método faz uso de um cabeçalho HTTP X-Forwarded-Host para construir a URL de verificação de sessão a ser enviada para os usuários, mas o problema é que ele pôde ser facilmente falsificado pelos pesquisadores da E.V.A. Com a falsificação, o servidor do CocoaPods enviaria o link não autêntico, o qual poderia ser interceptado e utilizado pelo atacante para obter o token de autenticação, validar a sessão e assumir controle da conta do usuário.

O mais assombroso é que isso poderia ser feito até mesmo sem um clique. Isso porque o atacante poderia se aproveitar em soluções de segurança geralmente presentes em emails institucionais para verificar a presença de phishing — as quais fariam o usuário invasor obter automaticamente o token de autenticação na conta da vítima.

Tomar as contas permitiria ao atacante manipular especificações de pods, interromper a distribuição de bibliotecas legítimas ou causar grandes interrupções no ecossistema CocoaPods.

De acordo com os pesquisadores, esse método é bastante eficaz e abrangente, especialmente porque a maioria dos desenvolvedores registrados no CocoaPods utiliza contas institucionais para o cadastro — incluindo, é claro, quem trabalha em grandes empresas como a Amazon.


Após a divulgação responsável por parte da E.V.A — a qual aconteceu antes da sua publicação (em outubro de 2023), obviamente —, a equipe do CocoaPods corrigiu todas as três vulnerabilidades. Isso não significa, no entanto, que os seus efeitos não estejam mais em vigor.

A empresa de segurança, inclusive, indica algumas medidas visando eliminar tais consequências — incluindo, principalmente, a eliminação de uso de de pods órfãos no desenvolvimento de apps para iOS, iPadOS e macOS, e uma verificação de segurança forte em pacotes que dependem deles.

O uso de assinaturas digitais para verificar a integridade dos pacotes de software e auditorias em suas dependências para identificar códigos maliciosos, possíveis riscos e vulnerabilidades são algumas outras ações recomendadas.

via Ars Technica

Notas de rodapé

  • 1
    Application programming interface, ou interface de programação de aplicações.

Ver comentários do post

Compartilhe este artigo
URL compartilhável
Post Ant.

iOS/iPadOS 18 trarão suporte a novos idiomas, mais Sons de Fundo e melhorias para podcasts

Próx. Post

djay Pro ganha suporte a novos controladores e melhorias na interface

Posts Relacionados