Prevenir ataques XSS e inyecciones de código y SQL con EuropioCode

Riesgos y problemas actuales, aún no resueltos

Actualmente, los ataques XSS, las inyecciones de código y las inyecciones SQL, se suelen prevenir, mayormente, de dos formas:

1) Filtrando las entradas del usuario a nivel de la aplicación: utilizando funciones propias del lenguaje y funciones definidas por el usuario, en los algoritmos de la aplicación.

2) Aplicando herramientas como ModSecurity en forma conjunta con las reglas de OWASP, a nivel servidor, para prevenir el envío de datos que puedan resultar sospechosos.

En el primer caso, los programadores se ven forzados a efectuar trabajos de diseño realmente extenuantes. Muchas veces, se efectúa un filtrado sencillo a nivel de la aplicación, mediante el uso de funciones como strip_tags() o htmlentities() en PHP, pero cuando comienzan a aparecer requerimientos fuera de lo común en la aplicación, todo se complica. Y así nos encontramos con necesidades puntuales como por ejemplo:

  • Necesidad de facilitar y permitir el ingreso de texto con preformato (tags HTML permitidos)
  • Necesidad de permitir al usuario, el ingreso literal de código fuente en diversos lenguajes;

Y aquí, el trabajo a nivel aplicación, comienza a complicarse. No todo diseño suele ser suficiente ni todo diseño deja confiados a sus programadores. Siempre se estará alerta.

En el segundo caso y sin siquiera mediar alguna de las necesidades puntuales mencionadas anteriormente, ModSecurity termina convirtiéndose en un problema tanto para los programadores como para los administradores de sistemas. La mayoría de las veces, el servidor comienza a arrojar errores 403 al usuario y los logs de Apache, se llenan de lo que a simple vista, parecen ser falsos positivos de ModSecurity haciendo referencia a supuestos intentos de ataques por diversos tipos de inyecciones.

Pero, como siempre digo a mis alumnos:

Los falsos positivos de ModSecurity por intentos de inyección de código o SQL, son en realidad, errores de diseño a nivel de la aplicación.

La realidad, es que la mayoría de los programadores, aún en épocas donde arquitecturas como MVC son el auge de la moda en la ingeniería de Software y sobra documentación al respecto, continúa confundiendo los requerimientos visuales de la aplicación con la lógica algorítmica de la misma.

Los falsos positivos de ModSecurity se producen por errores de diseño cuando los programadores confunden un requerimiento visual con la lógica de negocios de la aplicación.

Necesitar poder permitir al usuario el ingreso de código fuente, es una necesidad visual. Es el usuario quien DEBE CREER que está ingresando código fuente. Es, a los ojos del usuario, que se debe mostrar una cadena de texto que luzca de forma idéntica (o similar) a un código fuente. Sin embargo, una aplicación JAMÁS debe permitir que se le inyecte código fuente. Y lo mismo, aplica al texto con preformato.

Entonces aquí es donde radica el problema. Los programadores no encuentran una alternativa lateral a lo que conocen y todo concluye en la ERRÓNEA anulación de las reglas de ModSecurity.

Anular las reglas de ModSecurity, es el peor error que un SysAdmin puede cometer

La idea de este post, justamente, es brindar esa solución lateral que “le de el gusto” a todos, sin comprometer la seguridad del sistema.

Una solución que conforma a todo el mundo

La solución consiste entonces, en encontrar una manera de permitir al usuario ingresar código fuente en la aplicación, sin que lo que se envíe sea código fuente.

Y para ello, la única alternativa es:

Convertir las entradas del usuario en cadenas alfanuméricas.

Solo las cadenas de texto puro, son las que nos darán la seguridad y tranquilidad que necesitamos. Si lográsemos convertir luego, esa cadena de texto alfanumérico en algo que VISUALMENTE, se asemeje a lo que originalmente ingresó el usuario, estaríamos hallando una forma 100% segura de prevenir las inyecciones de todo tipo.

Y a tal fin, es que creé a  EuropioCode, un nuevo algoritmo de codificación alfanumérica, que puede ser aplicado a cualquier cadena de texto.

EuropioCode -actualmente en fase beta-, cuenta con dos librerías:

  1. Una librería JavaScript para codificar los campos de un formulario del lado del cliente (es decir, codificar el/los campo/s antes del envío del formulario al servidor);
  2. Una librería PHP que por un lado, refuerza la codificación del lado del servidor (en caso que la librería JS sea ignorada y ModSecurity no se encuentre operativo) y por otro, decodifica la cadena como entidades HTML hexadecimales, de forma tal que dicha entrada solo se interprete visualmente pero sea incapaz de ejecutarse.

En el repositorio oficial en Launchpad, se pueden obtener tanto las librerías JS y PHP como códigos con ejemplos de uso.

Actualmente, está en constante desarrollo por lo que recomiendo a los programadores, hacerse un branch del repositorio:
bzr branch lp:~eugeniabahit/europiocode/trunk
El repositorio está manejado con Bazaar, el sistema de control de versiones desarrollado por Canonical (fabricantes de Ubuntu), que forma parte oficial del proyecto GNU.

Si utilizas Git, otro sistema de control de versiones o simplemente, nunca has utilizado un sistema similar, aprender a usar Bazaar te llevará solo 5 minutos con este tutorial.

Para implementar EuropioCode, solo necesitas unas pocas líneas de código. Te recomiendo mirar (y probar) los ejemplos de uso incluidos en el repositorio.

Por favor, ten en cuenta que EuropioCode:

  • No es un encriptador de texto y por lo tanto, no cifra la información. Solo convierte caracteres NO alfanuméricos en código que sí es alfanumérico.
  • No es una librería pensada para proveer privacidad al usuario ni salvaguardar datos. Es un pseudo-código alfanumérico para reinterpretación de caracteres NO alfanuméricos.

Esta vez sí, Happy Hacking!

 

Presentando The Original Hacker, un juego con la inteligencia

El pasado domingo 20 de octubre, me di cuenta que dejar de invertir tiempo y esfuerzo en reparar los errores de terceras personas y dejar de sentirme obligada a cumplir con las responsabilidades de otros, me iba a permitir poder poner mayor dedicación en generar material que verdaderamente sirviese a programadores en vías de convertirse en Hackers y a los Hackers más avezados.

Así fue, que con la premisa de conservar la esencia de lo que venía haciendo, me propuse crear The Original Hacker, un nuevo magazine cuyo espíritu se basa en la libertad y el verdadero Hacking.

… 

 

Hackers & Developers número 1

Todavía estoy ligeramente confuso con la numeración de la revista (es muy de perl eso de empezar con el número cero), incluso para los temas que trata pero, tengo que admitir que estaba intrigado con el segundo número de Hackers & Developers, el magazine que edita nuestra compañera Eugenia Bahit. Intrigado por saber si podrían mantener el tipo en los siguientes números, cosa que no es precisamente fácil pero que consiguen sin problemas.

El primero número cero me gustó, incluso a pesar de mis limitaciones con la programación y, el número 1 que ahora acaba de salir es una pequeña y agradable sorpresa donde alternan programación con otros temas interesantes (al menos para mí) como una introducción a Arch Linux, un artículo sobre Guifi.net que me supo a poco o una explicación bastante convincente de porque los programadores no deben diseñar si no quieren.

Ahora sólo queda esperar al siguiente número, el 0b10 ;).

 

Nmap: escáner de puertos

Siguiendo con la estructura de entradas anteriores, hoy hablaremos de nmap. Nuevamente, a nivel básico, para que sirva de recordatorio a quienes ya lo conocían y de introducción a los más noveles. En este caso, la documentación y cantidad de opciones de uso son infinitas, así que para todo lo que no cabe en esta entrada recomiendo usar la guía de referencia de nmap.

… 

 

podcast sobre android en El telar del geek

Android

android

El Sr. Perogrullo ha publicado en El telar del geek la primera parte de un podcast que grabamos sobre Android, el sistema operativo de Google para dispositivos móviles y tabletas.

En algo menos de media hora hablamos sobre Android, los diferentes agentes involucrados en su crecimiento exponencial del último año y medio (google, fabricantes de terminales, operadoras) y tocamos un poco el tema de las ROM, basándonos principalmente en mi experiencia con cyanogenmod.

La intención del podcast era hablar sobre el sistema operativo de google para móviles, desde un punto de vista desenfadado, ya que ninguno de los dos nos podemos considerar otra cosa que usuarios inconformistas e inquietos.

Vía: 07 Conociendo androide con Diego @n1mh (eltelardelgeek.com).

 

Casi 100 aplicaciones Open Source / Free para sustituir a las que se usan a diario

Esta entrada va de responder a la típica pregunta que nos hacen a todos los que usamos GNU/Linux acerca de qué aplicaciones usar cuando se está empezando.Los que llevamos un tiempo ya sabemos por dónde ir, pero no está de más que tengáis a mano esta lista (en Inglés) de 92 Aplicaciones Open Source o Free Software para sustituir a las privativas que se usan a diario. La lista es extensa y no deja dudas.

He modificado el título original de la entrada ya que algunas son Open Source y otras Software Libre. No está de más para quienes tengan la duda entre lo que es Open Source y Software libre, leer esta entrada del blog (explicado muy clarito) de nuestra amiga Eugenia Bahit.

Buen Domingo y mañana…os anunciaremos un cambio importante en DebianHackers -;)

 

DaboBlog Podcast. “Kernel Panic” nº 34 ya disponible. (Dabo y n1mh).

Amigos de DebianHackers, aquí estamos otra vez con la entrega nº 34 del podcast. Tanto N1mh como yo os deseamos un año 2012 mejor que este que pronto dejaremos atrás y de nuevo, daros las gracias por estar ahí a pesar de que, como bien sabéis, nuestro ritmo de publicación no es tan regular como nos gustaría pero hacemos lo que podemos ;).

Sigue pendiente un especial Fluxbox y Debian por Dabo y Debish esperamos que pronto. Os dejamos con los contenidos de este episodio número 34. Un abrazo y Feliz 2012 !

Contenidos incluidos; (Duración 2,07 h)

> Intro (00:00 hasta el minuto 03:54)

(Por David Hernández, Dabo) Presentación y comentarios sobre este episodio 34.

> Kernel Panic (Minuto 03:45 hasta el 1:11 h)

En Twitter; Dabo y Diego aka n1mh (Forat estará en el próximo).

Como es habitual cuando grabo con Diego, (n1mh) entramos a tope con “el estado de nuestras Debian” y lo que está sucediendo con GNOME 3, KDE, etc y ciertos problemas a nivel de escritorio según versiones y ramas instaladas. También de Ubuntu y Unity (una vez más). De “aptitude”, también de “alien” y la gestión de paquetes, navegadores… Linux Mint, Fedora, Linpus, sobre “comandos y sistemas”. Noticias de actualidad (Java, Linex y su lamentable abandono, nuevas distros y releases , servidores web, clientes de Twitter, Android, etc) .

Música;

Toda de Actual Proof, (Sunset Leaves, Necessary Spring, Venus in Cancer, World Traveler, Silver Screen, Stratosphere), con Creative Commons, su sección en Sound Click, contando además con el permiso explícito de su autor, mi colega Marc (saludos desde España-;). El podcast está alojado en ivoox.com en el canal “DaboBlog Podcast” donde además os podréis suscribir tal y como os indico debajo en los enlaces junto al audio para que os resulte más sencillo. Debajo el super banner de Forat ;D.

El equipo del podcast

DaboBlog Podcast nº34, “Kernel Panic” y “Manzanas traigo”.

Ficha completa en ivoox.com del episodio 34.

Tenéis también aquí todos los episodios y en este link de ivoox.com.

Baja >el audio. Escuchar o descargar. (Navegador, lector de feeds o móvil sin Flash)

Suscríbete al canal En GPodder | iTunes ico.itunes | iGoogle ico.igoogle | tu lector de RSS ico.rss

¿No ves el reproductor integrado vía tu lector de RSS?, entra con tu navegador

Nos volvemos a escuchar en el número 35 (Fecha “Primeros de Enero “).

> Manzanas Traigo ( 1:11 h hasta 2:23 h)

 

DaboBlog Podcast, número 33. “Kernel Panic” ya disponible (con Forat)

Amigos de DebianHackers, aquí volvemos con la entrega nº 33 del podcast. En esta ocasión le ha tocado a Forat (en el próximo estará n1mh) y como se puede ver debajo en el guión, hay alguna historia “para no dormir”. Tenemos pendiente un especial Fluxbox y Debian que grabaré con Debish espero que pronto (de hecho ya lo grabamos en su día pero nos quedó un “churro” de audio y hay que repetir). Sin más, os dejo con todos los datos del audio. Un saludo y gracias por el apoyo que nos llega por vuestra parte ;).

Al igual que en otras ocasiones, os animamos a dejar cualquier sugerencia sobre temas a tratar en sucesivas entregas del podcast, podéis hacerlo aquí o en nuestros Twitters; @antoniojperez, @daboblog, @foratinfo, @lurphoto, @n1mh,@oreixa donde los días de grabación, solemos anunciar cuando empezamos a grabar para que dejéis vuestras propuestas, comentarios o temas que os gustaría que tocásemos, pero también podéis hacerlas llegar en esta misma entrada.

Contenidos incluidos; (Duración 2,23 h)

> Intro (00:00 hasta el minuto 03:44)

(Por David Hernández, Dabo) Presentación y comentarios sobre este episodio 33.

> Kernel Panic (Minuto 03:45 hasta el 1:16 h)

En Twitter; DaboForat  (Diego aka n1mh estará en el próximo).

Alguno se quedará un tanto K.O cuando escuche a Forat y lo que le pasó con un Vaio y unos ¿drivers? para Windows 7. Hablamos también de las nuevas mejoras que vamos viendo en el Kernel, lógicamente Ubuntu 11.04 tiene un gran protagonismo (hablamos de las novedades y de cambios futuros) damos un repaso a su proyecto “Viejos ordenadores que hacen grandes cosas” (muy bien explicado),  Servers, Software libre en la empresa (o “la falta de”), seguimos con Unity – GNOME, aplicaciones, Distros “diferentes” y otras habituales recién salidas del horno, opinión, (IN) seguridad en DropBox, etc.

El equipo del podcast

DaboBlog Podcast nº33, “Kernel Panic” y “Manzanas traigo”.

Ficha completa en ivoox.com del episodio 33.

Baja >el audio. Escuchar o descargar. (Navegador, lector de feeds o móvil sin Flash)

Suscríbete  En GPodder | iTunes ico.itunes | iGoogle ico.igoogle | tu lector de RSS ico.rss

¿No ves el reproductor integrado vía tu lector de RSS?, entra con tu navegador

Nos volvemos a escuchar en el número 34 del podcast (Fecha “Primeros de Diciembre “).

Tenéis también todos los episodios desde el primero en esta nueva sección del blog y en este link de ivoox.com.

> Manzanas Traigo ( 1:16 h hasta 2:23 h)

 

[short] Vim cumple veinte años

Vim, el que es considerado como uno de los mejores editores de textos y del que soy fiel usuario desde la noche de los tiempos, ha cumplido veinte años. Podría ponerme en plan abuelo, recordando los duros principios, la sensación de abandonar a un amigo (vi) por otro (vim), su empinada curva de aprendizaje inicial y las tardes de gloria que tuvimos. Podía, incluso, sacar a relucir la lucha encarnizada con emacs y las tiras de Bilo y Nano. Pero no. No es el momento.

Porque este editor, Vim, todavía tiene grandes cosas que ofrecer y, aunque veterano, creo que es uno de esos programas que se han hecho imprescindibles para muchísima gente, yo incluido. Y si, como dice el tango, veinte años no es nada, le calculo otros veinte, mínimo.

vía: Two decades of excellence: Vim turns 20! (linux.com).

PD ¿Algún usuario asiduo no lo ha instalado en los equipos windows que tenía que usar? Porque yo los cuento por docenas…

 

Disponible GIMP 2.7 (versión inestable) con la famosa “ventana única”.

Bueno, bueno, esto sí que es una noticia para los que seguimos con atención el desarrollo de GIMP (Programa de manipulación de imágenes GNU). Después de hablar durante tiempo de ello, ya llega la “ventana única” y con ello (a falta de probarlo), entiendo que una mayor usabilidad de GIMP para los que lo prueben por primera vez.

Eso sí, ya lo aclaramos en el título, es tan inestable como una Debian Sid -;), hay que decir que hasta la futura 2.8 estable, la 2.7 es una versión de desarrollo y no un producto final.

De todos modos, lo mejor es que le deis un vistazo a la lista de cambios (ENG) que van más allá de la “ventana única.

¿Piensas también que se notará en los usuarios que llegan por primera vez a GIMP? yo espero que sí ;).