tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Code et plus d'informations sur https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.

SĂ©rialisation d'Objets dans le DĂ©veloppement iOS

Dans iOS, la sĂ©rialisation d'objets implique de convertir des objets en un format qui peut ĂȘtre facilement stockĂ© ou transmis, puis de les reconstruire Ă  partir de ce format lorsque nĂ©cessaire. Deux protocoles principaux, NSCoding et NSSecureCoding, facilitent ce processus pour les sous-classes Objective-C ou NSObject, permettant aux objets d'ĂȘtre sĂ©rialisĂ©s en NSData, un format qui enveloppe des tampons d'octets.

NSCoding Implémentation

Pour implĂ©menter NSCoding, une classe doit hĂ©riter de NSObject ou ĂȘtre marquĂ©e comme @objc. Ce protocole impose l'implĂ©mentation de deux mĂ©thodes pour l'encodage et le dĂ©codage des variables d'instance :

swift
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)
}
}

Améliorer la sécurité avec NSSecureCoding

Pour attĂ©nuer les vulnĂ©rabilitĂ©s oĂč les attaquants injectent des donnĂ©es dans des objets dĂ©jĂ  construits, NSSecureCoding offre un protocole amĂ©liorĂ©. Les classes conformes Ă  NSSecureCoding doivent vĂ©rifier le type des objets lors du dĂ©codage, garantissant que seuls les types d'objets attendus sont instanciĂ©s. Cependant, il est crucial de noter que bien que NSSecureCoding amĂ©liore la sĂ©curitĂ© des types, il ne crypte pas les donnĂ©es ni n'assure leur intĂ©gritĂ©, nĂ©cessitant des mesures supplĂ©mentaires pour protĂ©ger les informations sensibles :

swift
static var supportsSecureCoding: Bool {
return true
}

let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")

Archivage de données avec NSKeyedArchiver

NSKeyedArchiver et son homologue, NSKeyedUnarchiver, permettent d'encoder des objets dans un fichier et de les récupérer ultérieurement. Ce mécanisme est utile pour la persistance des objets :

swift
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint

Utilisation de Codable pour une sérialisation simplifiée

Le protocole Codable de Swift combine Decodable et Encodable, facilitant l'encodage et le décodage d'objets comme String, Int, Double, etc., sans effort supplémentaire :

swift
struct CustomPointStruct: Codable {
var x: Double
var name: String
}

Cette approche prend en charge la sérialisation simple vers et depuis des listes de propriétés et JSON, améliorant la gestion des données dans les applications Swift.

Alternatives d'encodage JSON et XML

Au-delĂ  du support natif, plusieurs bibliothĂšques tierces offrent des capacitĂ©s d'encodage/dĂ©codage JSON et XML, chacune ayant ses propres caractĂ©ristiques de performance et considĂ©rations de sĂ©curitĂ©. Il est impĂ©ratif de sĂ©lectionner soigneusement ces bibliothĂšques, en particulier pour attĂ©nuer les vulnĂ©rabilitĂ©s telles que les attaques XXE (XML External Entities) en configurant les analyseurs pour empĂȘcher le traitement des entitĂ©s externes.

Considérations de sécurité

Lors de la sérialisation des données, en particulier vers le systÚme de fichiers, il est essentiel de rester vigilant quant à l'inclusion potentielle d'informations sensibles. Les données sérialisées, si elles sont interceptées ou mal gérées, peuvent exposer les applications à des risques tels que des actions non autorisées ou des fuites de données. Il est recommandé de chiffrer et de signer les données sérialisées pour améliorer la sécurité.

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks