tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
Codice e ulteriori informazioni in https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
Serializzazione degli Oggetti nello Sviluppo iOS
In iOS, la serializzazione degli oggetti comporta la conversione degli oggetti in un formato che può essere facilmente memorizzato o trasmesso, e poi la ricostruzione di essi da questo formato quando necessario. Due protocolli principali, NSCoding
e NSSecureCoding
, facilitano questo processo per le sottoclassi di Objective-C o NSObject
, consentendo agli oggetti di essere serializzati in NSData
, un formato che avvolge i buffer di byte.
Implementazione di NSCoding
Per implementare NSCoding
, una classe deve ereditare da NSObject
o essere contrassegnata come @objc
. Questo protocollo richiede l'implementazione di due metodi per la codifica e la decodifica delle variabili di istanza:
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)
}
}
Migliorare la Sicurezza con NSSecureCoding
Per mitigare le vulnerabilità in cui gli attaccanti iniettano dati in oggetti già costruiti, NSSecureCoding
offre un protocollo migliorato. Le classi che si conformano a NSSecureCoding
devono verificare il tipo di oggetti durante la decodifica, assicurando che vengano istanziati solo i tipi di oggetti attesi. Tuttavia, è fondamentale notare che mentre NSSecureCoding
migliora la sicurezza dei tipi, non cripta i dati né garantisce la loro integrità, rendendo necessarie misure aggiuntive per proteggere le informazioni sensibili:
static var supportsSecureCoding: Bool {
return true
}
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
Archiviazione dei Dati con NSKeyedArchiver
NSKeyedArchiver
e il suo corrispondente, NSKeyedUnarchiver
, consentono di codificare oggetti in un file e successivamente recuperarli. Questo meccanismo è utile per la persistenza degli oggetti:
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
Utilizzo di Codable
per una Serializzazione Semplificata
Il protocollo Codable
di Swift combina Decodable
e Encodable
, facilitando la codifica e la decodifica di oggetti come String
, Int
, Double
, ecc., senza sforzo aggiuntivo:
struct CustomPointStruct: Codable {
var x: Double
var name: String
}
Questo approccio supporta la serializzazione semplice da e verso le liste di proprietà e JSON, migliorando la gestione dei dati nelle applicazioni Swift.
Alternative di Codifica JSON e XML
Oltre al supporto nativo, diverse librerie di terze parti offrono capacità di codifica/decodifica JSON e XML, ognuna con le proprie caratteristiche di prestazione e considerazioni di sicurezza. È imperativo selezionare attentamente queste librerie, specialmente per mitigare vulnerabilità come attacchi XXE (XML External Entities) configurando i parser per prevenire l'elaborazione di entità esterne.
Considerazioni di Sicurezza
Quando si serializzano i dati, specialmente nel file system, è essenziale essere vigili riguardo alla potenziale inclusione di informazioni sensibili. I dati serializzati, se intercettati o gestiti in modo improprio, possono esporre le applicazioni a rischi come azioni non autorizzate o perdite di dati. Si raccomanda di crittografare e firmare i dati serializzati per migliorare la sicurezza.
Riferimenti
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.