
Análise e provas de conceito para CVE-2021-30862, vulnerabilidade RCE de 1 clique no iOS iTunes U
Em 2021, CodeColorist publicou seus artigos sobre as vulnerabilidades Mistuned, uma série de vulnerabilidades que afetam a iTunes Store, permitindo execução remota de código com um clique. Notavelmente, ele demonstrou como fazer o "pop calc" sem qualquer corrupção de memória, apenas com um bug de lógica. Durante esse período, eu estava investigando esquemas de URL em vários aplicativos, pois 2 anos antes eu havia reportado um problema de segurança relacionado ao esquema de URL itms-services:// da App Store. Um esquema de URL que achei bastante semelhante era o itms-itunesu:// do iTunes U. Na época, porém, não fazia ideia de que ele aceitava entrada fornecida pelo usuário e pensei que era usado apenas para abrir o aplicativo, mas depois percebi que não era o caso.
Ao ler seu artigo, uma coisa me chamou a atenção em particular: a fuga da sandbox de Jung Hoon Lee usando itmss:// durante o Pwn2Own 2014. Na época, a iTunes Store aceitava URLs arbitrárias e as carregava de bom grado em seu SUWebView, mesmo que não fossem da Apple (CVE-2014-8840). Neste ponto, você já deve imaginar para onde estou indo. Notei que itmss:// era muito semelhante ao esquema de URL do iTunes U, então decidi verificar se o iTunes U carregaria o google.com em sua visualização web. E, vejam só, ele carregou. Então decidi tentar usar a mesma API do iTunes que foi usada pelos bugs Mistuned na tentativa de fazer o "pop calc", sem esperar que funcionasse, mas, para minha maior surpresa, funcionou. Acontece que tanto a iTunes Store quanto o iTunes U compartilham essa mesma API. E quanto ao UAF do Mistuned? Isso também estava no iTunes U? Acontece que sim, e consegui criar uma prova de conceito que trava o iTunes U ao liberar a memória duas vezes (POC_6.html). Anexei alguns dos POCs que enviei para a Apple, bem como uma tentativa de primitiva fakeobj/addrof a partir dessa vulnerabilidade no main.js, com ajuda do artigo do Mistuned, embora, se não me engano, acho que não consegui fazer a primitiva fakeobj funcionar completamente. Você pode ler o artigo do CodeColorist para mais informações sobre o impacto dessas vulnerabilidades, mas, resumindo, elas permitem a obtenção de muitos dados confidenciais da vítima, além de potencial RCE com um clique.