6.6 KiB
Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud Github-Repositories senden.
Code und weitere Informationen unter https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
Objektserialisierung in der iOS-Entwicklung
In iOS beinhaltet die Objektserialisierung das Konvertieren von Objekten in ein Format, das leicht gespeichert oder übertragen werden kann, und das anschließende Wiederherstellen dieser Objekte aus diesem Format bei Bedarf. Zwei Hauptprotokolle, NSCoding
und NSSecureCoding
, erleichtern diesen Prozess für Objective-C- oder NSObject
-Unterklassen, indem sie Objekte in das Format NSData
serialisieren, ein Format, das Byte-Puffer umschließt.
Implementierung von NSCoding
Um NSCoding
zu implementieren, muss eine Klasse von NSObject
erben oder als @objc
markiert sein. Dieses Protokoll schreibt die Implementierung von zwei Methoden zur Codierung und Decodierung von Instanzvariablen vor:
class CustomPoint: NSObject, NSCoding {
var x: Double = 0.0
var name: String = ""
func encode(with aCoder: NSCoder) {
aCoder.encode(x, forKey: "x")
aCoder.encode(name, forKey: "name")
}
required convenience init?(coder aDecoder: NSCoder) {
guard let name = aDecoder.decodeObject(forKey: "name") as? String else { return nil }
self.init(x: aDecoder.decodeDouble(forKey: "x"), name: name)
}
}
Verbesserung der Sicherheit mit NSSecureCoding
Um Schwachstellen zu mindern, bei denen Angreifer Daten in bereits konstruierte Objekte einschleusen, 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 Typensicherheit verbessert, aber keine Daten verschlüsselt oder deren Integrität gewährleistet. Daher sind zusätzliche Maßnahmen zum Schutz sensibler Informationen erforderlich:
static var supportsSecureCoding: Bool {
return true
}
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
Datenarchivierung mit NSKeyedArchiver
NSKeyedArchiver
und sein Gegenstück NSKeyedUnarchiver
ermöglichen das Codieren von Objekten in eine Datei und späteres Abrufen dieser Objekte. Dieser Mechanismus ist nützlich für die Persistenz von Objekten:
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
Verwendung von Codable
für vereinfachte Serialisierung
Das Codable
-Protokoll von Swift kombiniert Decodable
und Encodable
und erleichtert die Codierung und Decodierung von Objekten wie String
, Int
, Double
, usw., ohne zusätzlichen Aufwand:
struct CustomPointStruct: Codable {
var x: Double
var name: String
}
Diese Methode unterstützt eine einfache Serialisierung von und zu Property-Listen und JSON und verbessert die Datenverarbeitung in Swift-Anwendungen.
JSON- und XML-Codierungsalternativen
Neben der nativen Unterstützung bieten mehrere Drittanbieterbibliotheken Codierung/Decodierung von JSON und XML an, wobei jede ihre eigenen Leistungsmerkmale und Sicherheitsaspekte hat. Es ist wichtig, diese Bibliotheken sorgfältig auszuwählen, insbesondere um Sicherheitslücken wie XXE (XML External Entities)-Angriffe zu vermeiden, indem Parser so konfiguriert werden, dass die Verarbeitung externer Entitäten verhindert wird.
Sicherheitsaspekte
Beim Serialisieren von Daten, insbesondere auf das Dateisystem, ist es wichtig, wachsam zu sein, um das potenzielle Einfügen sensibler Informationen zu vermeiden. 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 verbessern.
Referenzen
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie Pull Requests an die HackTricks und HackTricks Cloud GitHub-Repositories senden.