Ето как работи вратичката при покупки в приложения

Ето как вратичката работи при покупки в приложения (c) IDG/Apple

приложения

Руски хакер откри дупка в App Store преди няколко седмици и платените функции в приложението можеха да бъдат изтеглени безплатно.

Руският хакер Алексей Бородин е пуснал собствен сървър онлайн с услуга за покупка в приложение. Потребителите трябваше само да изтеглят предоставените сертификати и да ги инсталират на iPhone и пътят до безплатния магазин беше отворен. Apple реагира изненадващо бързо на уязвимостта и пусна инструмент за разработчици и актуализация за iOS 6 след няколко дни. Производителят на iPhone твърди, че разликата ще бъде окончателно затворена от iOS 6.

Хакерът се изказа отново преди няколко дни и публикува поетапни инструкции за хака, включително кода на сървъра. Информацията вече е безобидна, тъй като хакването вече не работи, но предлага някои интересни идеи за комуникацията между сървърите на Apple, тези на разработчика и iPhone.

За покупка в приложение iPhone комуникира няколко пъти със сървърите на Apple. Чрез заявка до допълнителния сървър на iTunes (buy.itunes.apple.com) iPhone препраща информация от приложението като идентификатор на приложението, номер на версия, производител и GUID/UUID на iPhone (глобално уникален идентификатор или универсално уникален идентификатор) . Отговорът е добре познатото потвърждение на покупката „Искате ли да купите приложението X за Y евро?“ Това, което прилича на въпрос с два бутона на екрана на iPhone, има значително повече параметри в подробна форма. Например уникалният iTunes Adam ID - осем или деветцифрен идентификационен номер за всички приложения в iTunes - както и цена, номер на версията, производител и други подобни. Бородин съобщава, че в неговите тестове повечето приложения са успели да игнорират iTunes ID. С други думи, заявката за потвърждение на покупката от iTunes съдържа почти същата информация, която iPhone вече е изпратил до сървъра. Новата информация като идентификатора на Адам просто се игнорира.

Следващата стъпка в покупката: потребителят изпраща потвърждението до iTunes чрез докосване на бутона „Купи“. App Store иска упълномощаване всеки път, когато дадено приложение се изтегли. По време на това упълномощаване, според Бородин, поверителни данни като Apple ID и парола са били изпратени от iPhone в некриптиран plist файл. Теоретично тук се открива още една пропаст в сигурността: Тъй като трансферът на данни между iPhone и App Store работи предимно безжично, престъпниците са доста лесни за получаване на чувствителните данни за достъп по всяко време.

accountInfo

appleId apleid
дъщерна сметка 0
адрес

първо име Първо име
фамилия Фамилия
passwordToken Токен за парола (валиден за 15 минути)
clearToken token (валиден за 15 минути

dsPersonId Вашата лична карта
CreditDisplay

кредитен баланс 1311811 (iTunes кредит)
freeSongBalance 1311811 (вероятно брой песни за iTunes Match)

Сертификат за проверка на уязвимост

В следващите няколко стъпки App Store ще провери покупката и дали приложението е пристигнало на iPhone. За целта той изпраща цифрово потвърждение на покупката с обща информация за приложението, както и допълнителна информация за датата на покупката, номера на транзакцията и сертификат за потвърждение на покупката. В сертификата за валидиране Бородин откри критичната уязвимост, която използва за хакването. В по-ранната версия App Store достави целия пакет от файлове, т.е. сертификата заедно с ключа. Оформлението на сертификата изглежда така:

ПОЛУЧАВАНЕ ВЕРСИЯ | ПОДПИС | РАЗМЕР НА СЕРТИФИКАТА | СЕРТИФИКАТ
1 байт 128 4 байта ...

С обичайните криптиране, като имейли, изпращачът изпраща електронните писма с издадения му сертификат. Получателят има личен ключ за дешифриране. Ако сертификатът и ключът съвпадат, получателят получава данните в четлива форма. Престъпниците едва ли имат възможност да декодират данните без валиден ключ, дори ако са успели да получат достъп до суровите данни.

Бородин се възползва от тази логична грешка на Apple: Настройките на DNS за iPhone, които той беше предоставил, не бяха пренасочени към App Store, а към друг сървър. Прокси сървърът е издал фалшивите сертификати за App Store със същата структура като оригиналния сертификат. Тъй като ключовете на iPhone също идват от хакера, сертификатът и ключът съвпадат естествено и App Store счита покупката за валидна.

Хакерът също така дава препоръки за това как разработчиците на приложения могат да избегнат подобни прониквания в бъдеще. От една страна, Apple предоставя това, което е известно като контролер за проверка - допълнителен ред в кода за потвърждение на покупката. В допълнение, Бородин препоръчва да се провери цялата информация в потвърждението на покупката, включително iTunes ID. Приложенията, чиято покупка също беше проверена на външния сървър за разработчици със собствени сертификати и ключове, не бяха засегнати от хакването. Това също е ефективна защита срещу подобни взломи.