Breaking

14/5/15

Subestimado a #Javascript I

HTML ( http://es.wikipedia.org/wiki/html ), la base de todos los desarrollos web muchas veces es subestimado, si bien se aprecia por su uso como algo meramente visual, también puede ser un canal al mundo del mal.
También es conocido que para ampliar el mundo web y darle el toque de interacción se usa Javascript, un lenguaje con muchísimas funcionalidades embebidas, quizás por ser demasiadas que una gran parte de desarrolladores y/o CSO's (http://en.wikipedia.org/wiki/Chief_security_officer) pasan por alto o confían sin mirar. Ahora bien, si yo le regalase (free, open source) un servicio, sea cual fuere, para enriquecer la experiencia web de su website/webapp,
¿usted usaría mi servicio?
¿lo vincularía a su sitio con la fiel promesa de actualización constante?

quizás solo alcance con decirle que es un servicio online...

El origen

Digamos que mi servicio es poner una frase cómica en el title (http://www.w3schools.com/tags/tag_title.asp) de su head (http://www.w3schools.com/tags/tag_head.asp) (El titulo del website/webapp), y su sitio es un sitio de gestión de contenidos o una Pagina Web que presenta la seguridad de hacer negocios. 

El Vector

Hasta que un día, mientras miraba la película Fight Club tuve una iluminación, decidí cambiar mi Javascript ... 
Ahora primero modifiqué mi webserver para identificar el momento en el que era llamado desde la interfaz administrativa del sistema de gestión de contenidos y ahí agregar una secuencia de código, para ponerme en el medio de las peticiones de usuario y contraseña o mejor, cuándo sea llamado desde el sitio que vende seguridad, borrar toda la pantalla y poner mi proclama, ya que confiaron en Javascript, y Javascript tiene demasiados permisos.

Ataque exitoso, pero que paso ?

Javascript tiene un permiso casi absoluto para modificar el DOM ( http://www.w3schools.com/jsref/dom_obj_all.asp ) BODY, que es básicamente la pantalla de una pagina/webapp/website ( http://www.w3schools.com/jsref/dom_obj_body.asp ), por lo que al enlazar un archivo Javascript externo, le estamos dando total y absoluta prioridad sobre nuestro sitio, desde Javascript se puede desde redireccionar a un website diferente ( https://www.owasp.org/index.php/Phishing ) hasta hacer una modificacion “on fly” sobre un formulario de Login para enviar por xmlHttpRequest (ajax), el usuario y la contraseña de manera transparente al usuario final, siendo este espiado sin que se de cuenta.

Servicios Comunes

Hoy en día en internet hay cada vez mas servicios que son brindados de esta forma, ejemplos mas comunes pueden ser JQuery ( http://jquery.com/ ), Google Analitics ( http://www.google.com.ar/intl/es/analytics/ ) o StatCounter ( http://es.statcounter.com/ ) y las modalidades son en su mayoría el enlace de un archivo Javascript o un tag IFRAME ( http://www.w3schools.com/tags/tag_iframe.asp ) que para el caso es lo mismo ya que desde el documento interno se puede utilizar el dom window y la propiedad parent ( http://www.w3schools.com/jsref/prop_win_parent.asp )

Gobierno

Entendiendo las implicancias de usar un servicio online sobre un sitio privado, vamos a plantear el uso de esto mismo en un contexto gubernamental.
Existen una gran cantidad de webapp's y website's gubernamentales expuestos en la actualidad a este tipo de problemas y en un contexto mundial que permite dudar de la mayor parte de las empresas que brindan este tipo de servicios ( http://es.wikipedia.org/wiki/PRISM_(programa_de_vigilancia) )
En mayor o menor medida, el problema existe y es persistente, en casos de servicios online de terceros, nuestra seguridad ya no esta del todo en nuestras manos.

No se puede vivir paranoico

Este documento expone un potencial peligro que corren muchísimos sitios tanto gubernamentales como privados, pero hay una realidad, no se puede vivir paranoico, por eso se contempla como alternativa sana a estas implementaciones, algunos tips.
  • No vincular nunca un archivo Javascript que no este en nuestro poder
  • No vincular ningún tipo de documento mediante IFRAME o FRAME o similares
  • En casos de backend PHP he investigado mas de una ocacion de inclusión de archivos remoto con el fin de validación de licencias ( include(“http://....”); )
este articulo es republicado, la version original fue publicada el 23 de Octubre de 2013

No hay comentarios.:

Publicar un comentario

Instagram @SchmitzOscar