Flash Platform SecurityAlberto GonzálezSr. Technical Consultant
BioConsultortécnicoespecializado en la plataforma RIA de Adobe+10 años de experiencia en la plataformaCo – manager del grupo de usuarios de Adobe RIactive
AgendaPanorama general de seguridad en la plataformaDecompiladores y ofuscadoresTransmisión de datosUn poco de criptografía
Archivos SWFVectores + contenido multimedia (bitmaps, audio, video )InstruccionesActionScript en formatobinarioProtocolos web paracomunicarseSigue la especificación del formato SWF (www.adobe.com/devnet/swf)
Modelos de seguridad (FP)Definen: rango de datos y operacionesque la app puedeacceder / utilizarSecurity.sandboxTypeProtección contra:Acceso no autorizado de los datosAcceso no autorizado a la información del usuarioAcceso no autorizado a los recursos del sistema
Sandbox remotoControladopor el dominio de origenPara habilitar la comunicaciónutilizamos un archivocrossdomain.xml	(http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html )( crossdomain.xml )
Amazon.com > crossdomain.xml
Sandbox local
Acción de usuariorequeridaComo acción de usuario  se define algúnclic del mouse o presión de tecla.FileReference.browse()FileReference.download()Clipboard.generalClipboard.setData()Clipboard.generalClipboard.setDataHandler()System.setClipboard()
Protección extra…Flash Player poseerutinasqueprotegen al sistema contra el mal uso de susrecursos, ya sea de forma intencional o accidental.Almacenamiento de datosSharedObjectscontroladosporlaspropiedades del player ( 100 K* )Capacidadparamodificar el espacioasignadoProcesamientoDetección de bloques de códigorepetidodurante un lapso de tiempo ( 15 seg* )Capacidadparamodificar el tiempoMemoriaGarbage collectorSiempreutilizamemorialimpiaSin posibilidad de obtenerdatosprevios
Archivo de configuración de seguridadmms.cfgUbicación:MAC -> /Library/ApplicationSupport/Macromedia/mms.cfgWin -> C:\windows\system32\macromed\flash\mms.cfg Controla:Display ( Hardware Acceleration )PrivacyLocal StorageMicrophoneCamera
Ofuscadores y Decompiladores
DecompilaciónDecompilador: Software que realiza la operación inversa a la compilaciónCompilación: 	Decompilación:
DecompiladoresAsí como pueden revertir un archivo SWF y generar el FLA, también pueden extraer:Cualquier archivo contenido en el SWFImágenes ( jpg, png, gif, etc…)Audio ( mp3, wav, … )Video ( flv, mov, mp4, 3gp, f4v, etc… )Otros archivos ( txt, xml, bin )Código ActionScriptClases completasBloques de códigoEn general cualquier información dentro del archivo SWF
Compiladores / Decompiladores
Decompiladores
OfuscadoresHerramientas que nos ayudan a dificultar el proceso de “decompilación” en archivos SWF y SWC.Ofuscan ( confunden, encubren) el código fuente de los archivos SWFPueden llegar a alterar el comportamiento normal de la aplicación ( enterpriseapps )
OfuscadoresAdemás de ofuscar el código estas herramientas pueden realizar otras acciones útiles:Cifrado de cadenasOptimización de códigoAñadir marcas de agua a los archivosEliminación de comentarios
Ofuscadores
Demo 1Ofuscación / Decompilación
Transmisión de datos
Envío de datosdesdelasaplicacionesUsualmente las aplicaciones Flash / Flex / AIR se encuentran continuamente enviando datosSi no utilizamos la seguridad adecuada esos datos pueden ser interceptados y alteradosLa plataforma no posee ningún método nativo para proteger esos datos
Envío de datosdesdelasaplicaciones¿ y qué sucede si esos datos son credenciales de acceso ?¿ y si es un video en formato streaming ?veamos que puede suceder…
Proteccióndurante el envíoFunciones Hash *Criptografía simétrica *Criptografía asimétrica
Funciones HashFunciónde dispersióncriptográficaRecibenunaentrada de datos ( mensaje )Entreganunasalida (hash) únicaparadichomensajeSalida con longitudfijaPrácticamenteimposibleobtener el mensaje a partir del hash
Funciones Hash
Funciones HashUtilizadaspara:Enviarcredenciales de autenticaciónIntegridad de los datosIndexarelementosAlgoritmosMD5SHA-1SHA-256Otros…Y ahora...
CriptografíasimétricaMétodocriptográficoparacifrardatosSe utilizaunamismallaveparacifrar y descifrarmensajes.Hay queacordar la llavepreviamente entre laspartesinvolucradas
Bibliotecascriptográficas en la plataformaAscorelib ( ActionScript core library )( http://github.com/mikechambers/as3corelib )As3crypto( http://code.google.com/p/as3crypto )Soportepara TLS 1.0Algoritmos Hash: MD2, MD5, SHA-1, SHA-224, SHA-256Criptografía de llavepública: RSACriptografía de llavesecreta: AES, DES, 3DES, BlowFish, RC4Entrootros…
Entonces… ¿ cómopodemosasegurarunaaplicación ?Biblioteca As3cryptoClase AS3 – ByteArray ( manejo de datos a nivel de bytes )Clase Loader ( load, loadBytes )Adobe Integrated Runtime ( solo paraguardar un archivo )
Entonces… ¿ cómopodemosasegurarunaaplicación ?Adobe IntegratedRuntimeByteArray( SWF ) => 11010011encryptAES («key», 11010011) => %$T&G9.$%As3cryptoFile.save( %$T&G9.$% )
Entonces… ¿ cómopodemosasegurarunaaplicación ?SWFByteArray( SWF ) => %$T&G9.$%decryptAES («key», %$T&G9.$%) => 11010011As3cryptoLoader.loadBytes(11010011)
Flash Player y SSLFlash Player no implementa SSLVerificación y validación de certificados son implementados por el browser o el OSFlash Player no contiene reglas de validación para certificados:ExpiradosRechazadosCon firmas personalesURL no exactos.
Q & A@albertxagonzalez@activ.com.mx

Flash player security