Científicos de la computación de la universidad Carnegie Mellon han diseñado un método para usar múltiples lenguajes de programación en el mismo programa, permitiendo así que los programadores usen el lenguaje más apropiado para cada función. Este concepto permite proteger los servicios contra ataques de inyección de código, una de las amenazas más serias a las que se puede enfrentar una aplicación Web a día de hoy.

En el ISR (Institute for Software Research), el profesor Jonathan Aldrich está desarrollando un lenguaje de programación llamado Wyvern, el cual hace posible construir páginas y aplicaciones Web utilizando múltiples lenguajes de programación en uno, cada uno enfocado en su área. De esa manera, se podría usar SQL para realizar peticiones a las bases de datos, HTML para maquetar páginas... etc. Todos ellos actuarían como una especie de sublenguajes. Para entender mejor el concepto, uno de los desarrolladores hace la siguiente analogía:

>Podríamos decir que Wyvern es un negociador con mucha habilidad, capaz de cambiar entre lenguajes fácilmente con el objetivo de que un grupo de gente puede trabajar bien de forma conjunta. Creo que nuestro nuevo enfoque puede tener un gran impacto en la forma en la que se ha desarrollado hasta ahora.
- Jonathan Aldrich, profesor asociado en el ISR.

Wyvern determina el sublenguaje que se está usando en el programa mediante los tipos de datos que el programador está manipulando. Los tipos especifican el formato de los datos, ya sean caracteres alfanuméricos o estructuras de datos más complejas, como podría ser una petición de datos a una base de datos de una página Web.

Su objetivo es aumentar la seguridad

Cuando construimos una página Web seguramente acabaremos utilizando multitud de lenguajes diferentes. Las letras que leemos y las imágenes que vemos han sido maquetadas utilizando el lenguaje HTML o CSS, quizá mediante peticiones a una base de datos desde PHP o quizá cargando los archivos directamente del servidor. Las sugerencias que aparecen al escribir en la barra de búsqueda de multitud de aplicaciones Web y la página que automáticamente se carga con ello, son posibles mediante JavaScript (normalmente combinándolo con lenguajes como por ejemplo PHP o Python. Es probable que si entramos a nuestras cuentas en los sitios web o si compramos artículos online, lo que estemos haciendo es enviar directamente peticiones SQL a una base de datos.

Una práctica habitual es copiar cadenas de caracteres para formar comandos en un lenguaje especializado, como SQL. Si no se implementa correctamente, esta práctica puede dejar a nuestro proyecto vulnerable frente a dos de las más serias amenazas de seguridad a las que podrían enfrentarse a día de hoy. La primera serían las secuencias de comandos en sitios cruzados (*cross-site scripting o los ataques de inyección de SQL. En este último caso, por ejemplo, un atacante podría usar un simple formulario de acceso para insertar el comando `DROP TABLE`, con el cual podría eliminar información vital de la base de datos.

Evitar este tipo de problemas de seguridad requiere de mucho cuidado, experiencia y realización de pruebas, pero un lenguaje especializado para esto como Wyvern podría facilitarnos el trabajo. Wyvern entiende e identifica los diferentes lenguajes por contexto, trata los datos y objetos como literales (valores fijos). De esa manera, siguiendo el ejemplo anterior, en vez de usar una función especial que pase los valores utilizaría directamente código SQL. Entender el concepto puede ser complicado, pero podemos hacernos una idea viendo algunos ejemplos de código.

Wyvern todavía no está terminado, solo ha sido implementado a un nivel básico por lo que muchas funciones no han sido desarrolladas completamente. Para saber lo que pasa tras las cortinas del proyecto podemos visitar su página en GitHub. Todo lo que ayude a solucionar problemas de seguridad es bienvenido. Sin embargo, echo en falta una documentación más amigable para ver en práctica los conceptos que proponen los desarrolladores del lenguaje Wyvern. Lo que más se acerca a ello son los documentos de investigación y no es que sean muy digeribles. De momento, estaremos atentos a las novedades que vaya trayendo.

Recibe cada mañana nuestra newsletter. Una guía para entender lo que importa en relación con la tecnología, la ciencia y la cultura digital.

Procesando...
¡Listo! Ya estás suscrito

También en Hipertextual: