lunes, 1 de julio de 2019

La popular biblioteca de jQuery se ve afectada por la falla de prototipo de contaminación

Falla de prototipo de contaminación

Las fallas llamadas prototipo de contaminación son "la gran preocupación" en investigaciones de seguridad sobre JavaScript.

Tres años después de su última falla de seguridad, la biblioteca de jQuery, utilizada en el 74 por ciento de todos los sitios de Internet, recibió otra revisión de seguridad esta semana.

Esta actualización de seguridad aborda una rara vulnerabilidad, llamada prototipo de contaminación, que los investigadores de seguridad recién ahora están empezando a comprender y descubrir en más y más bibliotecas de JavaScript.

¿Qué es la Contaminación del Prototipo?

Como su nombre indica, la contaminación prototipo se refiere a la capacidad de un atacante para modificar el prototipo de un objeto JavaScript.

Los objetos JavaScript son como variables, pero en lugar de almacenar un valor (var car = "Fiat"), pueden contener varios valores basados ​​en una estructura predefinida (var car = {type: "Fiat", modelo: "500", color: "blanco"}).

Los prototipos definen la estructura y los valores predeterminados de un objeto JavaScript, por lo que las aplicaciones no se bloquean cuando no se establecen valores.

Un atacante que logra modificar un prototipo de objeto de JavaScript puede afectar gravemente la forma en que los datos son procesados ​​por el resto de la aplicación y abrir la puerta a ataques más peligrosos, como bloqueos de aplicaciones (denegación de errores de vulnerabilidad) o secuestros de aplicaciones (fallas de ejecución de código).

La Contaminación del Prototipo, una Amenaza Creciente para Javascript

Los ataques prototípicos de contaminación no son nuevos y se documentaron por primera vez hace años. Sin embargo, solo ahora se están catalogando a fondo porque JavaScript, como lenguaje, ha evolucionado desde el manejo de las interacciones básicas de la interfaz de usuario hasta el trabajo con impresionantes cantidades de datos confidenciales como lenguaje de programación del lado del servidor: gracias al proyecto Node.js.

Por lo tanto, cualquier prototipo de ataque de contaminación ahora puede tener serias consecuencias en el mundo de internet donde casi todo gira en torno a JavaScript de una forma u otra, en aplicaciones de escritorio, móviles, de navegador o de servidor.

Durante el año pasado, y especialmente después de la presentación de Olivier Arteau en NorthSec 2018 sobre los ataques prototipo de contaminación, los investigadores de seguridad han comenzado a examinar más de cerca las bibliotecas de JavaScript que han estado utilizando y buscar posibles errores de contaminación prototipo.

Estos esfuerzos han dado como resultado el descubrimiento de múltiples prototipos de ataques de contaminación en más y más bibliotecas de JavaScript, como Mongoose, lodash.merge, node.extend, deep-extend y HAPI, algunas de ellas extremadamente populares para aplicaciones de servidor de JavaScript.

Prototipo de Contaminacion en Jquery

Esta constante charla sobre prototipos de ataques de contaminación también ha llamado la atención de Snyk, una compañía que proporciona tecnología de escaneo de código fuente, y cuyos investigadores estaban interesados ​​en documentar este nuevo vector de ataque.

Liran Tal, un investigador de seguridad de Snyk, realizo un análisis de prototipos de ataques de contaminación que ha resultado en el descubrimiento de una falla similar que afecta a jQuery, una biblioteca de JavaScript tan ubicua y arraigada en el trabajo de desarrollo web que se usa en el 97 por ciento de todos los sitios web que usan al menos una biblioteca de JavaScript.

Decir que jQuery es popular entre los desarrolladores de JavaScript es el equivalente a decir "el agua está mojada", lo que significa que cualquier prototipo de fallas de contaminación descubiertas en esta biblioteca abre automáticamente las puertas para los ataques a cientos de millones de sitios web.

En un informe publicado hace unas semanas, Tal y el equipo de Snyk describieron y publicaron el código de prueba de concepto para un prototipo de ataque de contaminación (CVE-2019-11358) que afectó a jQuery. Para mostrar cuán peligrosa es esta vulnerabilidad, mostraron cómo un defecto de contaminación prototipo podría permitir a los atacantes asignarse derechos de administrador en una aplicación web que utiliza el código jQuery para su interfaz.

No Fácil de Explotar

Pero la buena noticia es que los prototipos de ataques de contaminación no son explotables en masa, ya que cada código de explotación debe ajustarse para cada objetivo, individualmente. Las fallas de prototipos contra la contaminación requieren que los atacantes tengan un conocimiento profundo de cómo funciona cada sitio web con sus prototipos de objetos, y cómo estos prototipos son un factor en el gran esquema de las cosas.

Además, algunos sitios web no usan jQuery para ninguna operación de levantamiento de objetos pesados, sino simplemente para animar algunos menús y mostrar algunas ventanas emergentes, aquí y allá.

"Encontrar versiones de la vulnerabilidad de jQuery para este exploit no es una tarea difícil, pero automatizar una explotación real para el código personalizado que hace uso de la API vulnerable de jQuery con respecto a la contaminación prototipo sería más difícil", afirmo Tal.

Además, las aplicaciones y los sitios web que se basan en el código fuente cerrado también están protegidos contra algunos ataques, aclara Tal.

"La explotación del código fuente cerrado del lado del servidor, que no es fácil de acceder para los atacantes, requiere un poco de investigación para averiguar cómo la contaminación de un objeto global podría afectar a una aplicación, y sí la contaminación prototipo es aplicable en todos los casos." dijo el investigador.

Sin embargo, en los casos en los que jQuery se utiliza para operaciones más complejas, como la construcción de frontends completos, es un riesgo.

Fuente (en Ingles): ZDnet.com

viernes, 13 de marzo de 2015

Frameworks JavaScripts

Traemos para ustedes un listado con los mejores Frameworks JavaScripts enfocados en manipular el DOM actualmente.

Es necesario entender que un framework es una abstracción de código común que provee funcionalidades genéricas que pueden ser utilizadas para desarrollar aplicaciones de manera rápida,fácil, modular y sencilla, ahorrando tiempo y esfuerzo. Entre dichos frameworks, se encuentran jQuery, MooTools, Prototype, Dojo Toolkit, YUI, y más.


¿Alguna otra sugerencia? Por favor, indiquenla en los comentarios para ir ampliando esta lista.

jueves, 5 de marzo de 2015

jQuery snippets: el método hover


En esta nueva sección, procuraremos presentar snippets.  Es un término del idioma inglés utilizado en programación para referirse a pequeñas partes reusables de código fuente, código binario o texto.

Hover entrando/saliendo

$("a").hover(
  function () {
    // código a ejecutarse cuando el apuntador pasa por encima
  },
  function () {
    // código a ejecutarse cuando el apuntador sale del elemento
  }
);

El método hover de jQuery es una solución rápida para manejar esos eventos. Puede determinar si el usuario esta moviendo el apuntador para pasar sobre el elemento seleccionado (mouseenter), o si el usuario está a punto de salir del mismo (mouseleve). Esto permite establecer dos funciones personalizadas, donde se pueden ejecutar dos conjuntos distintos de código.

Su sintaxis: 
$(selector).hover(functionCuandoEntra,functionCuandoSale)

Parametro Descripción
functionCuandoEntra Especifica la función a ejecutarse cuando ocurre un evento mouseenter
functionCuandoSale Especifica la función a ejecutarse cuando ocurre un evento mouseleave

Nuestro ejemplo:

Si quieres obtener más conocimiento sobre el método hover:
Descripción oficial (jQuery) | Método hover (Libro jQuery)

martes, 3 de marzo de 2015

Mozilla lanza la versión para desarrolladores de Firefox 64 bits en Windows


Mozilla ha lanzado Firefox Edición para desarrolladores 38, que incluye una versión de 64 bits de su navegador para Windows por primera vez, añadiendolo también a las plataformas Mac OS X y Linux ya soportadas.

La versión de 64 bits de Firefox trae mejoras sustanciales con respecto a la versión de 32 bits, incluyendo la capacidad de ejecutar aplicaciones más grandes, la ejecución más rápida y una mayor seguridad.

Eso significa la ejecución de juegos que devoran recursos y aplicaciones web más potentes, con acceso a nuevos registros de hardware y ejecutar JavaScript más rápido y más eficaz; aleatorización en el diseño del espacio de direcciones (ASLR), lo que hace más difícil para el contenido Web malicioso poder explotar el navegador.

Como en otras plataformas, la edición es amigable con el desarrollador ofreciendole una serie de características útiles para la construcción de proyectos Web, incluyendo herramientas para desarrollar aplicaciones en todos los navegadores, un depurador de JavaScript, y los editores de Web Audio y CSS.


Firefox Developer Edition 38 está disponible para descarga gratuita en el sitio de Mozilla. Haciendo clic aqui descargar el mismo en español.

lunes, 2 de marzo de 2015

¿Qué es jQuery?

jQuery consiste en un único fichero JavaScript que contiene las funcionalidades comunes de DOM, eventos, efectos y AJAX.

Según wikipedia:
jQuery es una biblioteca de JavaScript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML, manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnica AJAX a páginas web. Fue presentada el 14 de enero de 2006 en el BarCamp NYC. jQuery es la biblioteca de JavaScript más utilizada.
Específicamente jQuery nos facilita:
  • La búsqueda y manipulación de contenido en una página HTML;
  • Trabajar con el modelo de eventos de los exploradores modernos;
  • Y añadir efectos y transiciones sofisticadas que vemos en páginas modernas, como animaciones disparadas por eventos.
Podemos aprender más de jQuery leyendo:
Si observamos el alcance que ha logrado jQuery, basandonos en las estadisticas de builtwith.com:

Las estadísticas para sitios web utilizando tecnologías JavaScript
Es decir, que casi el 19% de todas las páginas web que conseguimos en internet implementan jQuery. Y del ranking de las primeros diez mil (10.000) sitios web en importancia seis mil seiscientos cuarenta (6.640), un 66% implementan jQuery. Podemos observar su crecimiento en uso visitando la siguiente gráfica.

En esta sección iremos profundizando, de a poco, lo más novedoso sobre jQuery.

Visita la página oficial

Un ejemplo muy básico lo puedes observar a continuación:


¿Haz utilizado jQuery recientemente? Escribenos tu opinión sobre esta librería.

lunes, 23 de febrero de 2015

Plugin jQuery Easy Ticker, una manera facíl de generar barra de noticias


Plugin jQuery Easy Ticker, para barra de noticias (animando sus artículos), muchas veces utilizamos listas de elementos obtenidas de alguna base de datos, por ejemplo:
  • Listas de productos
  • Listas de noticias
  • Listas de usuarios
  • Listas de comentarios
En ocasiones paginamos estos elementos ya que no tienemos una forma automática de pasar de un elemento a otro, debido a esa necesidad hay un plugin que puede ayudarnos a mostrar dicho contenido de forma infinita, mostrando inclusive una animación con diferentes estilos, su nombre es jQuery Easy Ticker.

Con este plugin podemos implementar efectos como animación hacia arriba o abajo, ademas que tenemos un control sobre los elementos que quieremos mostrar; como en el caso del ejemplo que implementamos en jsfiddle.

Posee una documentación (en ingles), muy sencilla, además de ejemplos muy legibles, también seria bueno que antes de implementar el plugin tengas en cuenta los siguientes puntos con los cuales cuenta:
  1. Dos direcciones disponibles (Arriba y abajo).
  2. Puede ser dirigido.
  3. API flexible para que se extiende a varias aplicaciones.
  4. Soporta suavizar funciones.
  5. Botón de pausa.
  6. La velocidad de la transición se puede cambiar.
  7. Los controles pueden ser añadidos para reproducir / pausar o mover la lista hacia arriba y hacia abajo.
  8. Soporta Cross browser.
  9. Ligero (4 Kb – fuente completo / 2,7 Kb – fuente minimizada).
Un simple ejemplo de su implementación:

Código en html

<div class="barranoticia">
 <div class="barra">
  <div class="noticia"> Noticia 1 </div>
  <div class="noticia"> Noticia 2 </div>
  <div class="noticia"> Noticia 3 </div>
  <div class="noticia"> Noticia 4 </div>
 </div>
</div>


Código en jQuery

$('.barranoticia').easyTicker({
 direction: 'up',
 speed: 'slow',
 interval: 2000,
 height: 'auto',
 visible: 0,
 mousePause: 1
});


Visitar la web official | github | jQuery Plugin

Demostración en jsfiddle: