iOS Serialisation and Encoding
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)
Code and more information in https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
У iOS, сериалізація об'єктів передбачає перетворення об'єктів у формат, який можна легко зберігати або передавати, а потім відновлювати їх з цього формату за потреби. Два основні протоколи, NSCoding
та NSSecureCoding
, полегшують цей процес для Objective-C або підкласів NSObject
, дозволяючи об'єктам бути серіалізованими в NSData
, формат, який обгортає байтові буфери.
NSCoding
РеалізаціяЩоб реалізувати NSCoding
, клас повинен успадковувати від NSObject
або бути позначеним як @objc
. Цей протокол вимагає реалізації двох методів для кодування та декодування змінних екземпляра:
NSSecureCoding
Щоб зменшити вразливості, коли зловмисники впроваджують дані в уже створені об'єкти, NSSecureCoding
пропонує покращений протокол. Класи, що відповідають NSSecureCoding
, повинні перевіряти тип об'єктів під час декодування, забезпечуючи, що лише очікувані типи об'єктів створюються. Однак важливо зазначити, що хоча NSSecureCoding
покращує безпеку типів, він не шифрує дані і не забезпечує їх цілісність, що вимагає додаткових заходів для захисту чутливої інформації:
NSKeyedArchiver
NSKeyedArchiver
та його аналог, NSKeyedUnarchiver
, дозволяють кодувати об'єкти у файл і пізніше їх отримувати. Цей механізм корисний для збереження об'єктів:
Codable
для спрощеної серіалізаціїПротокол Codable
у Swift поєднує Decodable
та Encodable
, полегшуючи кодування та декодування об'єктів, таких як String
, Int
, Double
тощо, без додаткових зусиль:
Цей підхід підтримує просту серіалізацію до та з властивісних списків і JSON, покращуючи обробку даних у Swift-додатках.
Окрім нативної підтримки, кілька сторонніх бібліотек пропонують можливості кодування/декодування JSON та XML, кожна з яких має свої характеристики продуктивності та міркування безпеки. Важливо ретельно обирати ці бібліотеки, особливо для зменшення вразливостей, таких як атаки XXE (XML External Entities), налаштовуючи парсери для запобігання обробці зовнішніх сутностей.
При серіалізації даних, особливо до файлової системи, важливо бути уважним до потенційного включення чутливої інформації. Серіалізовані дані, якщо їх перехопити або неправильно обробити, можуть піддати додатки ризикам, таким як несанкціоновані дії або витік даних. Рекомендується шифрування та підписування серіалізованих даних для підвищення безпеки.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)