
CVE-2021-30862, iOS iTunes U의 1-클릭 RCE 버그에 대한 Write-up 및 개념 증명
2021년, CodeColorist는 Mistuned 취약점에 대한 글을 공개했습니다. 이는 iTunes Store에 영향을 미쳐 한 번의 클릭으로 원격 코드 실행이 가능한 일련의 취약점입니다. 특히 그는 메모리 손상 없이 오직 논리 버그만으로 계산기를 실행하는 방법을 시연했습니다. 그 무렵, 저는 다양한 앱의 URL 스킴을 조사하고 있었습니다. 2년 전에 App Store의 itms-services:// URL 스킴 관련 보안 문제를 보고했기 때문입니다. 발견한 URL 스킴 중 iTunes U의 itms-itunesu:// URL 스킴이 매우 유사했습니다. 하지만 당시에는 사용자 입력을 받아들인다는 사실을 전혀 몰랐고, 단지 앱을 여는 용도로만 사용된다고 생각했습니다. 나중에야 그렇지 않다는 것을 깨달았습니다.
그의 글을 읽다가 특히 한 가지가 눈에 띄었습니다. 바로 Pwn2Own 2014에서 Jung Hoon Lee가 itmss://를 사용한 샌드박스 탈출이었습니다. 당시 iTunes Store는 임의의 URL을 수용했으며, Apple 출처가 아닌 경우에도 기꺼이 SUWebView에 로드했습니다(CVE-2014-8840). 이쯤 되면 제가 어디로 가는지 짐작하실 수 있을 겁니다. 저는 itmss://가 iTunes U의 URL 스킴과 매우 유사하다는 것을 알아챘고, 그래서 iTunes U가 google.com을 웹 뷰에 로드하는지 확인해보기로 했습니다. 그리고 놀랍게도, 그렇게 했습니다. 그런 다음 Mistuned 버그에 사용된 것과 동일한 iTunes API를 사용하여 계산기를 실행하려 시도했습니다. 전혀 작동할 거라 예상하지 못했지만, 놀랍게도 작동했습니다. iTunes Store와 iTunes U가 동일한 API를 공유한다는 사실이 밝혀진 것입니다. 그렇다면 Mistuned의 UAF는 어떨까요? 그것도 iTunes U에 있었을까요? 알고 보니 역시 있었고, 저는 메모리 이중 해제를 통해 iTunes U를 충돌시키는 개념 증명(POC_6.html)을 만들 수 있었습니다. Apple에 보낸 몇 가지 POC와 함께, Mistuned 분석 글의 도움을 받아 이 취약점에서 fakeobj/addrof 프리미티브를 시도한 main.js도 첨부했습니다. 기억이 맞다면 fakeobj 프리미티브를 완전히 작동시키지는 못했습니다. 이 취약점들의 영향에 대한 자세한 정보는 CodeColorist의 분석 글을 읽어보시기 바랍니다. 요약하자면, 이 취약점들을 통해 피해자로부터 많은 민감 데이터를 탈취할 수 있으며 잠재적으로 1-클릭 RCE가 가능합니다.