iOS Serialisation and Encoding
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Code und weitere Informationen unter https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
In iOS umfasst Objektserialisierung die Umwandlung von Objekten in ein Format, das leicht gespeichert oder übertragen werden kann, und deren Rekonstruktion aus diesem Format, wenn nötig. Zwei Hauptprotokolle, NSCoding
und NSSecureCoding
, erleichtern diesen Prozess für Objective-C oder NSObject
-Unterklassen, sodass Objekte in NSData
serialisiert werden können, ein Format, das Byte-Puffer umschließt.
NSCoding
ImplementierungUm NSCoding
zu implementieren, muss eine Klasse von NSObject
erben oder als @objc
markiert sein. Dieses Protokoll verlangt die Implementierung von zwei Methoden zum Kodieren und Dekodieren von Instanzvariablen:
NSSecureCoding
verbessernUm Schwachstellen zu mindern, bei denen Angreifer Daten in bereits konstruierte Objekte injizieren, bietet NSSecureCoding
ein verbessertes Protokoll. Klassen, die NSSecureCoding
entsprechen, müssen den Typ der Objekte während der Dekodierung überprüfen, um sicherzustellen, dass nur die erwarteten Objekttypen instanziiert werden. Es ist jedoch wichtig zu beachten, dass NSSecureCoding
zwar die Typsicherheit verbessert, jedoch keine Daten verschlüsselt oder deren Integrität gewährleistet, was zusätzliche Maßnahmen zum Schutz sensibler Informationen erforderlich macht:
NSKeyedArchiver
NSKeyedArchiver
und sein Gegenstück, NSKeyedUnarchiver
, ermöglichen das Kodieren von Objekten in eine Datei und deren späteren Abruf. Dieser Mechanismus ist nützlich, um Objekte zu persistieren:
Codable
für vereinfachte SerialisierungDas Codable
-Protokoll von Swift kombiniert Decodable
und Encodable
und erleichtert das Kodieren und Dekodieren von Objekten wie String
, Int
, Double
usw. ohne zusätzlichen Aufwand:
Dieser Ansatz unterstützt eine unkomplizierte Serialisierung zu und von Property-Listen und JSON, was die Datenverarbeitung in Swift-Anwendungen verbessert.
Neben der nativen Unterstützung bieten mehrere Drittanbieterbibliotheken JSON- und XML-Codierungs-/Dekodierungsfunktionen, jede mit ihren eigenen Leistungsmerkmalen und Sicherheitsüberlegungen. Es ist wichtig, diese Bibliotheken sorgfältig auszuwählen, insbesondere um Schwachstellen wie XXE (XML External Entities)-Angriffe zu mindern, indem Parser so konfiguriert werden, dass die Verarbeitung externer Entitäten verhindert wird.
Bei der Serialisierung von Daten, insbesondere zum Dateisystem, ist es wichtig, wachsam gegenüber der potenziellen Einbeziehung sensibler Informationen zu sein. Serialisierte Daten können, wenn sie abgefangen oder unsachgemäß behandelt werden, Anwendungen Risiken wie unbefugte Aktionen oder Datenlecks aussetzen. Es wird empfohlen, serialisierte Daten zu verschlüsseln und zu signieren, um die Sicherheit zu erhöhen.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)