XARA-уразливості в OS X і iOS

Сьогодні в світ вийшов звіт групи фахівців з інформаційної безпеки, присвячений дослідженню атак, заснованих на способах комунікації між собою різних додатків на OS X і iOS — (XARA, від Cross-App Resource Access). Для тих, кому лінь читати всі 26 сторінок оригінальної статті, я вирішив підготувати її невеликий огляд.

Для початку, два короткі тези:
  • По-перше, велика частина оприлюднених вразливостей стосується OS X. В iOS все набагато спокійніше.
  • По-друге, насправді все досить сумно.

А тепер детальніше про уразливості:

1. Перехоплення даних, переданих через URL-схеми.
У iOS (як, втім, і в OS X) додатки можуть спілкуватися між собою за допомогою URL-схем. Як це виглядає:
Для прикладу, візьмемо ситуацію, коли в наш улюблений мобільний поштовий клієнт БлаБлаПочта приходить e-mail, що містить в собі який-небудь адресу. Наш поштовик досить розумний, і після натискання на цю адресу перекидає користувача, скажімо, навігаційний додаток БлаБлаКарты. Єдиний спосіб реалізувати такий перехід в iOS — це викликати у першому додатку посилання виду:
blablamaps://55,678+32,432

Система відловлює виклик такої URL і перевіряє, яке з встановлених додатків може його обробити. Якщо такий додаток знайдено, то відбувається перехід, і відкрилася програма вже сама вирішує, яким чином вчинити з даними (у нашому випадку — координатами).

Всі веселощі починається, коли не одне, а два додатки заявляють, що працюють з URL такого виду. Автори визначили такі правила поведінки операційних систем:
  • OSX перекине користувача в додаток, яке першим заявило, що воно працює з цією схемою.
  • iOS перекине користувача в додаток, яке останнім заявило, що воно працює з цією схемою.
Цікавий момент полягає в тому, що, на відміну від того ж Android, користувачу не надається вибір, який із додатків має відкритися. Немає ніяких додаткових механізмів автентифікації, нічого.

Таким чином, вразливість експлуатується наступним чином:
Ми створюємо свою програму, BlaBlaHijack, у властивостях якого вказуємо можливість обробляти URL-схему blablamaps, і віддаємо його користувачеві. На відміну від BlaBlaMaps, наша шкідлива програма не відкриє карту, а просто перешле ці координати на наш сервер.

Та ж схема працює з будь-якими даними, що передаються між додатками — наприклад, токенами, одержуваними при авторизації через Facebook або Twitter.

Слабка ланка таких схем зазвичай полягає в способі передачі атакованого користувачеві шкідливої програми. Що особливо чудово — Apple не веде ніякого загального каталогу URL-схем, тому такий додаток спокійно пройде модерацію і буде доступно для завантаження.

2. Модифікація прав доступу keychain на OS X
На відміну від iOS, кожному з властивостей, що зберігаються в Keychain на OS X можна встановити додаткові права доступу (Access Control List), в яких буде перераховано, яким програмам надається доступ до нього. Проілюструємо пов'язані з цим механізмом уразливості на чергових представників сімейства BlaBlaSoftware.

Користувач викачує з Mac App Store дуже популярний додаток, BlaBlaBook — хипстерскую соціальну мережу. Як і будь-яке інше порядне додаток, при введенні авторизаційних даних воно намагається зберегти їх в Keychain. І тут вступає в дію ще один механізм — перед тим, як створити нову запис, система перевірить, чи немає вже в зв'язці ключів записи з такими параметрами. Це зроблено для того, щоб при оновленні програм користувальницькі дані не злітали. Якщо такий запис знайдено, то її вміст перезапишется, якщо немає — то створиться нова. І якщо в другому випадку ACL задає додаток BlaBlaBook, то в першому — ACL не зміниться.

Так от, повернемося до вразливості. За день до установки BlaBlaBook користувач завантажив собі інше додаток, вже згаданий нами BlaBlaHijacker. Цей шкідливий першим додав до Keychain запис з такими ж параметрами, які потрібні оригінальним додатком, і в ACL додав собі всі права. Таким чином, коли користувач спробує зберегти свій пароль, доступ до нього буде вже у двох додатків — і BlaBlaBook, BlaBlaHijacker.
Що цікаво, шкідливий додаток не обов'язково має бути встановлено першим — у будь-якого стороннього додатка є можливість видалити певну запис в Keychain і перезаписати її своєю.

3. Доступ до пісочниці
Загальновідомо, що всі додатки в OS X працюють у межах своєї пісочниці і не мають доступу до іншим програмам. Ці пісочниці представлені у файловій системі папками, назвою яких виступає унікальний ідентифікатор програми. Mac App Store при перевірці усіх публікованих програм перевіряє цей ID на унікальність, тому, здавалося б, повторень бути не повинно.

Складності вносить можливість включати в оригінальне додаток додаткові підпрограми — хелпери, фреймворки, та що завгодно, у чого є свій Bundle ID. Кожна з таких підпрограм працює у своїй пісочниці. Дефект полягає в тому, що Apple не перевіряє на унікальність ідентифікатори цих хелперів — в наслідок чого два різних додатки можуть працювати в одній і тій же пісочниці і отримати повний доступ до даних один одного.

Найкраще цю уразливість демонструє випадок з популярним менеджером паролів 1Password і його розширенням 1Password Mini.

4. Уразливості спілкування через WebSocket
Коротко кажучи, WebSocket — це протокол, за допомогою якого сервер може спілкуватися з клієнтом. Він інтегрований як частина стандарту HTML5 і дозволяє вмісту WebView в браузері звертатися до будь-якого іншого додатку в системі, прокидывая дані через певний TCP порт. І, звичайно, якась аутентифікація відсутня і в цьому випадку — цей порт може слухати хто завгодно. Розширення в браузері ніяк не може перевірити, з ким конкретно вона спілкується.

Приклад експлуатації уразливості, як і в попередньому випадку, 1Password. Його браузерне розширення збирало введені користувачем у різних формах паролі, номери кредитних карт, і через порт 6263 відправляло їх з додатком. Подальші дії прості — пишемо програму, яка слухає цей же порт, логируем всі отримані дані, і збираємо непогану базу. Знову ж таки, все це спокійно проходить перевірку в App Store.

Apple в курсі всіх згаданих вразливостей ще з осені минулого року і, за інформацією з звіту, на виправлення цих недоліків потрібно не менше півроку.

Ще раз згадаю, що iOS стосується лише перша з розглянутих вразливостей.

Корисні посилання:

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.