
Analyse et preuves de concept pour CVE-2021-30862, un bug RCE en un clic dans iTunes U sur iOS.
En 2021, CodeColorist a publié ses articles sur les vulnérabilités Mistuned, une série de vulnérabilités affectant l'iTunes Store permettant une exécution de code à distance en un clic. Notamment, il a démontré comment faire apparaître la calculatrice sans aucune corruption mémoire, mais simplement avec un bogue logique. Pendant cette période, j'étudiais les schémas d'URL dans diverses applications, car deux ans auparavant, j'avais signalé un problème de sécurité concernant le schéma d'URL itms-services:// de l'App Store. Un schéma d'URL que j'avais trouvé et qui était assez similaire était le schéma itms-itunesu:// d'iTunes U. Sur le moment, je n'avais aucune idée qu'il acceptait des entrées fournies par l'utilisateur et je pensais qu'il servait uniquement à ouvrir l'application, mais j'ai plus tard réalisé que ce n'était pas le cas.
En lisant son article, une chose a particulièrement attiré mon attention : l'évasion du bac à sable de Jung Hoon Lee utilisant itmss:// lors du Pwn2Own 2014. À l'époque, l'iTunes Store acceptait des URLs arbitraires et les chargeait volontiers dans son SUWebView, même si elles ne provenaient pas d'Apple (CVE-2014-8840). À ce stade, vous devinerez peut-être où je veux en venir. J'ai remarqué que itmss:// était très similaire au schéma d'URL d'iTunes U, j'ai donc décidé de voir si iTunes U chargerait google.com dans sa vue web. Et effectivement, il l'a fait. J'ai ensuite décidé d'essayer d'utiliser la même API iTunes que celle utilisée par les bugs Mistuned pour tenter de faire apparaître la calculatrice, sans m'attendre du tout à ce que cela fonctionne, mais à ma grande surprise, ça a marché. Il s'avère que l'iTunes Store et iTunes U partagent cette même API. Et qu'en est-il de l'UAF de Mistuned ? Était-il aussi présent dans iTunes U ? Il s'avère que oui, et j'ai pu créer une preuve de concept qui fait planter iTunes U en libérant deux fois la mémoire (POC_6.html). J'ai joint certains des POC que j'ai envoyés à Apple ainsi qu'une tentative de primitive fakeobj/addrof de cette vulnérabilité dans main.js, avec l'aide de l'article de Mistuned, bien que si je me souviens bien, je n'ai pas réussi à faire fonctionner complètement la primitive fakeobj. Vous pouvez lire l'article de CodeColorist pour plus d'informations sur l'impact de ces vulnérabilités, mais en résumé, elles permettent de récupérer beaucoup de données sensibles de la victime ainsi qu'une potentielle RCE en un clic.