iOS UIPasteboard
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Обмін даними між додатками на пристроях iOS здійснюється за допомогою механізму UIPasteboard
, який поділяється на дві основні категорії:
Системна загальна буферна пам'ять: Використовується для обміну даними з будь-яким додатком і призначена для збереження даних між перезавантаженнями пристрою та видаленнями додатків, функція, яка доступна з iOS 10.
Користувацькі / Іменовані буферні пам'яті: Призначені спеціально для обміну даними в межах додатка або з іншим додатком, який має той же ідентифікатор команди, і не призначені для збереження після завершення процесу додатка, відповідно до змін, внесених в iOS 10.
Безпекові міркування відіграють значну роль при використанні буферних пам'ятей. Наприклад:
Немає механізму для користувачів для управління дозволами додатків на доступ до буферної пам'яті.
Щоб зменшити ризик несанкціонованого моніторингу буферної пам'яті у фоновому режимі, доступ обмежений до моменту, коли додаток знаходиться на передньому плані (з iOS 9).
Використання постійних іменованих буферних пам'ятей не рекомендується на користь спільних контейнерів через проблеми конфіденційності.
Функція Універсальний буфер обміну, введена з iOS 10, що дозволяє обмінюватися вмістом між пристроями через загальну буферну пам'ять, може бути керована розробниками для встановлення терміну дії даних та відключення автоматичного перенесення вмісту.
Забезпечення того, щоб чутлива інформація не зберігалася ненавмисно в глобальній буферній пам'яті, є критично важливим. Крім того, додатки повинні бути спроектовані так, щоб запобігти зловживанню даними глобальної буферної пам'яті для ненавмисних дій, і розробники заохочуються впроваджувати заходи для запобігання копіюванню чутливої інформації в буфер обміну.
Для статичного аналізу шукайте в вихідному коді або бінарному файлі:
generalPasteboard
, щоб виявити використання системної загальної буферної пам'яті.
pasteboardWithName:create:
та pasteboardWithUniqueName
для створення користувацьких буферних пам'ятей. Перевірте, чи увімкнено збереження, хоча це застаріло.
Динамічний аналіз передбачає підключення або трасування конкретних методів:
Моніторинг generalPasteboard
для системного використання.
Трасування pasteboardWithName:create:
та pasteboardWithUniqueName
для користувацьких реалізацій.
Спостереження за застарілими викликами методу setPersistent:
, щоб перевірити налаштування збереження.
Ключові деталі для моніторингу включають:
Імена буферних пам'ятей та вміст (наприклад, перевірка рядків, URL-адрес, зображень).
Кількість елементів та типи даних, використовуючи стандартні та користувацькі перевірки типів даних.
Опції терміну дії та локального використання шляхом перевірки методу setItems:options:
.
Приклад використання інструменту моніторингу - монітор буферної пам'яті objection, який опитує generalPasteboard кожні 5 секунд на наявність змін і виводить нові дані.
Ось простий приклад JavaScript-скрипта, натхненного підходом objection, для читання та запису змін з буферної пам'яті кожні 5 секунд:
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)