Al explotar algunas peculiaridades del popular marco de programación web Ruby on Rails, los investigadores del MIT han desarrollado un sistema que puede analizar rápidamente decenas de miles de líneas de código de aplicación para encontrar fallas de seguridad.
En las pruebas en 50 aplicaciones web populares escritas usando Ruby on Rails, el sistema encontró 23 fallas de seguridad no diagnosticadas previamente, y no tardó más de 64 segundos en analizar cualquier programa dado.
Los investigadores presentarán sus resultados en la Conferencia Internacional sobre Ingeniería de Software, en mayo.
Según Daniel Jackson, profesor del Departamento de Ingeniería Eléctrica y Ciencias de la Computación, el nuevo sistema utiliza una técnica llamada análisis estático, que busca describir, de manera muy general, cómo fluyen los datos a través de un programa.
"El ejemplo clásico de esto es que si quisieras hacer un análisis abstracto de un programa que manipula enteros, podrías dividir los enteros en enteros positivos, los enteros negativos y cero", explica Jackson. El análisis estático entoncesevalúe cada operación en el programa de acuerdo con su efecto en los signos de enteros. Agregar dos positivos produce un positivo; agregar dos negativos produce un negativo; multiplicar dos negativos produce un positivo; y así sucesivamente.
"El problema con esto es que no puede ser completamente preciso, porque pierde información", dice Jackson. "Si agrega un número entero positivo y negativo, no sabe si la respuesta será positiva, negativa, o cero. La mayoría del trabajo en análisis estático se centra en tratar de hacer que el análisis sea más escalable y preciso para superar ese tipo de problemas ".
Sin embargo, con las aplicaciones web, el costo de la precisión es prohibitivamente alto, dice Jackson. "El programa bajo análisis es simplemente enorme", dice. "Incluso si escribiste un programa pequeño, se asienta sobre un vasto edificio de bibliotecas yplug-ins y frameworks. Entonces, cuando miras algo así como una aplicación web escrita en un lenguaje como Ruby on Rails, si intentas hacer un análisis estático convencional, generalmente te encuentras atrapado en este enorme pantano. Y esto lo hace realmente inviableen la práctica."
Ese vasto edificio de bibliotecas, sin embargo, también le dio a Jackson y a su antiguo alumno Joseph Near, quien se graduó del MIT la primavera pasada y ahora está haciendo un postdoctorado en la Universidad de California en Berkeley, una forma de hacer un análisis estático de los programasescrito en Ruby on Rails práctico.
Una biblioteca es un compendio de código que los programadores tienden a usar una y otra vez. En lugar de reescribir las mismas funciones para cada nuevo programa, un programador puede importarlas desde una biblioteca.
Ruby on Rails, o Rails, como se llama para abreviar, tiene la peculiaridad de definir incluso sus operaciones más básicas en las bibliotecas. Cada adición, cada asignación de un valor particular a una variable, importa el código de una biblioteca.
Near reescribió esas bibliotecas para que las operaciones definidas en ellas describan su propio comportamiento en un lenguaje lógico. Eso convierte al intérprete de Rails, que convierte los programas de Rails de alto nivel en código legible por máquina, en una herramienta de análisis estático.bibliotecas, ejecutar un programa Rails a través del intérprete produce una descripción formal, línea por línea, de cómo el programa maneja los datos.
En su trabajo de doctorado, Near usó esta maquinaria general para construir tres depuradores diferentes para aplicaciones de Ruby on Rails, cada uno de los cuales requiere diferentes grados de participación del programador. El que se describe en el nuevo documento, que los investigadores llaman Space, evalúa el acceso a los datos de un programaprocedimientos.
Casi identificó siete formas diferentes en que las aplicaciones web generalmente controlan el acceso a los datos. Algunos datos están disponibles públicamente, algunos están disponibles solo para usuarios que actualmente están conectados, algunos son privados para usuarios individuales, algunos usuarios - administradores - tienenacceso a aspectos seleccionados de los datos de todos, etc.
Para cada uno de estos patrones de acceso a datos, Near desarrolló un modelo lógico simple que describe qué operaciones puede realizar un usuario sobre qué datos, en qué circunstancias. A partir de las descripciones generadas por las bibliotecas pirateadas, Space puede determinar automáticamente si el programa se adhierea esos modelos. Si no es así, es probable que haya una falla de seguridad.
El uso de Space requiere que alguien con acceso al código de la aplicación determine qué variables y funciones del programa corresponden a qué aspectos de los modelos de Near. Pero eso no es un requisito oneroso: Near pudo mapear correspondencias para las 50 aplicaciones queevaluado. Y ese mapeo debería ser aún más fácil para un programador involucrado en el desarrollo de una aplicación desde el principio, en lugar de llegar desde afuera como lo hizo Near.
Fuente de la historia :
Materiales proporcionado por Instituto de Tecnología de Massachusetts . Nota: El contenido puede ser editado por estilo y longitud.
Cite esta página :