6.2 KiB
Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!
Otras formas de apoyar a HackTricks:
- Si quieres ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén la merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Código y más información en https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
Serialización de Objetos en el Desarrollo de iOS
En iOS, la serialización de objetos implica convertir objetos en un formato que pueda ser fácilmente almacenado o transmitido, y luego reconstruirlos a partir de este formato cuando sea necesario. Dos protocolos principales, NSCoding
y NSSecureCoding
, facilitan este proceso para las subclases de Objective-C o NSObject
, permitiendo que los objetos se serialicen en NSData
, un formato que envuelve búferes de bytes.
Implementación de NSCoding
Para implementar NSCoding
, una clase debe heredar de NSObject
o estar marcada como @objc
. Este protocolo exige la implementación de dos métodos para codificar y decodificar variables de instancia:
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)
}
}
Mejorando la seguridad con NSSecureCoding
Para mitigar vulnerabilidades donde los atacantes inyectan datos en objetos ya construidos, NSSecureCoding
ofrece un protocolo mejorado. Las clases que cumplen con NSSecureCoding
deben verificar el tipo de objetos durante la decodificación, asegurando que solo se instancien los tipos de objetos esperados. Sin embargo, es crucial tener en cuenta que si bien NSSecureCoding
mejora la seguridad de los tipos, no cifra los datos ni garantiza su integridad, lo que hace necesario tomar medidas adicionales para proteger la información sensible:
static var supportsSecureCoding: Bool {
return true
}
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
Archivado de datos con NSKeyedArchiver
NSKeyedArchiver
y su contraparte, NSKeyedUnarchiver
, permiten codificar objetos en un archivo y luego recuperarlos. Este mecanismo es útil para persistir objetos:
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
Usando Codable
para Serialización Simplificada
El protocolo Codable
de Swift combina Decodable
y Encodable
, facilitando la codificación y decodificación de objetos como String
, Int
, Double
, etc., sin esfuerzo adicional:
struct CustomPointStruct: Codable {
var x: Double
var name: String
}
Este enfoque admite la serialización directa hacia y desde listas de propiedades y JSON, mejorando el manejo de datos en aplicaciones Swift.
Alternativas de Codificación de JSON y XML
Además del soporte nativo, varias bibliotecas de terceros ofrecen capacidades de codificación/decodificación de JSON y XML, cada una con sus propias características de rendimiento y consideraciones de seguridad. Es imperativo seleccionar cuidadosamente estas bibliotecas, especialmente para mitigar vulnerabilidades como los ataques XXE (Entidades Externas XML) configurando los analizadores para prevenir el procesamiento de entidades externas.
Consideraciones de Seguridad
Al serializar datos, especialmente hacia el sistema de archivos, es esencial estar atento a la posible inclusión de información sensible. Los datos serializados, si son interceptados o manejados incorrectamente, pueden exponer a las aplicaciones a riesgos como acciones no autorizadas o filtraciones de datos. Se recomienda cifrar y firmar los datos serializados para mejorar la seguridad.
Referencias
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si deseas ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén el oficial PEASS & HackTricks swag
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud.