Como todos sabréis SilverLight vive en la caja de arena del navegador (sandbox) y los desarrolladores no pueden extender esta caja de arena y con esto la gente se queda contenta y no presta atención a la seguridad de su aplicación en Silverlight. El motivo de escribir este post fue por la contestación de un colega que me dijo que estaba desarrollando una aplicación en SilverLight y que era guay porque con la caja de arena tenia la seguridad cubierta y no se la podían crakear y tenia protegido su código.
Infeliz!!!!!!!!!!!!!!!!!!!!!!!
Una de las cosas que menos me gustan de Silverlight es lo que voy a comentar en el post, como sacar el código fuente de cualquier aplicación SilverLight no penséis que hay que saber un montón de hacking, sino que es muy sencillo.
He elegido para hacer las pruebas la aplicación primetable una aplicación que crea horarios para las escuelas
La primera opción es manual y hay que seguir los paso siguientes
- Sacamos el código fuente de la pagina
- En el codigo fuente buscamos la palabra XAP, en este caso lo tenemos en la linea
$create(Sys.UI.Silverlight.Control, {"source":"../ClientBin/Ras.Client.xap"}, null, null, $get
- Como podemos ver en esta línea tenemos la ruta relativa al fichero de Silverlight, la copiamos y la ponemos en nuestro navegador, en nuestro caso http://www.primetimetable.com/ClientBin/Ras.Client.xap, podemos ver que nos pedirá bajar el fichero XAP, lo bajamos y lo guardamos en nuestro PC
- Como sabéis los ficheros XAP realmente son ficheros ZIP, lo descomprimimos
- Ahora podemos ver todas las dll y ficheros de configuración donde podremos ver la configuración de los servicios WCF, y a través de Reflector podremos ver el código de la aplicación SilverLight y decompilarla.
Como habéis podido comprobar es bien sencillo, pero todavía es mas sencillo con la herramienta Silverlight Spy 2
Donde podéis ver toda la información y código de la aplicación.
Para evitar esto podéis obfuscar como en cualquier aplicación de .Net, algo importante si queréis proteger vuestro código
Yo no llamaría «Hacking» a obtener el código fuente de la aplicación Silverlight.
El SandBox es seguridad en ejecución, no protección «intelectual» de la aplicación.
PD: En Flash tienes lo mismo…. y con Ajax más fácil aún.
PD2: Al igual que en una aplicación Web tradicional, toda la lógica de negocio sensible se realiza en el servidor.
Como todos sabréis SilverLight vive en la caja de arena del navegador (sandbox) y los desarrolladores
Estoy con Pablo, esto no es hackear una aplicación silverlight. Esto es mirar por la puerta trasera y poco más.
Pero está claro que tenemos que ser consciente en cada momento con lo que estamos trabajando y sus limitaciones.
Saludos.
Hola,
Si yo tampoco creo que sea Hackear (al menos en el sentido clásico de la palabra)… Pero lo interesante del post es la concepción que tenía el colega de Oskar del sandbox de Silverlight.
Saludos!!! 😉
100% de acuerdo con Pablo. Esto es una caracteristica de .Net todo. Salvo que ofusques (y a veces ni asi), el codigo, podrias leer el codigo de cualquier aplicacion teniendo acceso a su DLL.
Como bien dice Pablo, esto, en la Web, se aplica a mas tecnologias. Si pudimos meter la mano en el javascript de otro, indudablemente AJAX no esta a salvo. Ni que decir en que se confie en Flash para hacer streaming de video, cuando puedes tomarlo sin problemas.
En fin, esto no es hacking, es una caracteristica. De ahi a que no todo el mundo sepa de esto, es otra cosa. Pensemos que aun hay empresas de software que creen que porque compilaron su codigo y se genera un archivo DLL, en .Net, este esta totalmente seguro.
Cuando leí las palabras «sandbox», «silverlight» y «hacking» pensé que ibas a contar algo sobre como saltarse la seguridad de SL en el cliente … !!!
Saludos
Hablé de esto por Marzo del 2008 (http://geeks.ms/blogs/jorge/archive/2008/03/13/desensamblando-un-proyecto-silverlight-2-0-beta-1.aspx).
En mi opinión, tampoco lo considero hacking, pero sí se puede utilizar para realizar ataques mal intencionados.
Eso sí, me pasa como a Bruno. 🙂
Cierto no es hacking solo queria llamar la atención de la gente para que tuviese cuidado a la hora de hacer aplicaciones silverlight.
Por cierto si creo que se puede saltarse la seguridad con un poco de trabajo pero nunca lo pondria publico
Hola, no lo considero Hacking, es casi como cuando veo los archivos js de una app web html + ajax. Pensé que te «saltabas» la sandbox, ya me había dado miedo!, jaja
buen fin de semana!
Hola, no lo considero Hacking, es casi como cuando veo los archivos js de una app web html + ajax. Pensé que te «saltabas» la sandbox, ya me había dado miedo!, jaja
buen fin de semana!
Atentiendo a todos los comentarios y con toda la razón del mundo cambio el titulo del post pero a la hora de hacer aplicaciones Silverlight no nos podemos relajar y tener cuidado como en cualquier aplicación sino recordar lo que le paso al componente de facebook http://seclists.org/fulldisclosure/2008/Jun/0277.html
It’s obfuscated, now. Thanks! 🙂
Prime Timetable team
Estimado amigo, muy bueno el ejemplo pero probe para ver si obtenia el codigo pero parece que si aplicaron el ofuscador los amigos duelños del programa, tengo una consulta, no se si me puedes ayudar indicandome que controles son los que usaron en esta pagina, me interesa mucho el contro riboon, y la grilla que usan que se parace mucho a la de windows, espero me puedas ayudar.
Saludos
Hola que tal!
Asi es, es demasiado fácil extraer el código, por eso es que uno debe evitarse colocar reglas de negocio del lado de la capa presentacion ( En ese caso, el cliente) y usar siempre WCF, el WCF debe tener todos los procedimientos de negocios y datos. Cuando se quiera hacer una llamada al WCF, ´´esta debe pedir credenciales antes de devolver algun resultado, asi garantizan más la seguridad de la información y procedimientos.
En realizad es algo estúpido (disculpen la expresión) realizar procesos de negocios del lado del cliente.
todo está en la arquitectura del software.
Saludos!
Soy desarrollador .Net