Quizás algunos de ustedes ya conocían o habían escuchado sobre BrakemanScanner, BrakemanPro promete ser mucho mas que Brakeman Scanner y convertir su uso en algo mas frecuente y popular entre los desarrolladores de Ruby On Rails y analistas de seguridad. Para quienes no conocían nada sobre Brakeman Scanner, es ,según su propia web, un Scanner de vulnerabilidades específicamente diseñado para aplicaciones desarrolladas en Ruby On Rails. Realiza un análisis estático del código de la aplicación para encontrar posibles problemas de seguridad en cualquier etapa del desarrollo.

portada report

BrakemanPro viene a ser una extensión de este Brakeman Scanner, que nos permite visualizar de mejor manera el resultado del análisis realizado, brindándonos una serie de beneficios en el camino de cara a entregar a nuestro equipo de desarrollo o a nuestros cliente un informe mas elaborado de lo encontrado.

Brakeman Scanner solo funciona desde consola, una vez instalada como una gema (gem install brakeman) debemos, desde la raíz del proyecto a evaluar, ejecutar “brakeman”, para el reporte en consola o:

brakeman -o report.html

brakeman -o report.json

que generaría en este mismo directorio el informe resultante del análisis, en el formato deseado.

Existen otra cantidad de opciones que podemos configurar en Brakeman Scanner, como por ejemplo poner nuestro propio Css al reporte para que sea mas vistoso, limitar el largo del reporte, o evitar algunos archivos para que no sean evaluados. Todas las opciones en: brakemanscanner.org/docs/options/

Brakeman coloca niveles a las alertas arrojadas en el informe, High, medium y weak, como guía para nuestra evaluación posterior, lo que representa el nivel y probabilidad de que la falla que produce la alerta, pueda ser usada perjudicialmente (severidad).

Brakeman tiene configurados unos tipos de alertas que vienen a ser los tipos de ataques que se pueden registrar como consecuencia de alguna brecha en un proyecto Ruby On Rails, estas alertas son las siguientes:

  • Cross Site Scripting
  • Cross Site Scripting (JSON)
  • Cross Site Scripting (Content Tag)
  • SQL Injection
  • Command Injection
  • Mass Assignment
  • Attribute Restriction
  • Cross-Site Request Forgery
  • Unsafe Redirects
  • Default Routes
  • Format Validation
  • Denial of Service
  • Dynamic Render Paths
  • Dangerous Evaluation
  • Unsafe Deserialization
  • File Access
  • Basic Authentication
  • Session Settings
  • Information Disclosure
  • Dangerous Send
  • Mail Link
  • Remote Code Execution
  • Remote Execution in YAML.load
  • SSL Verification Bypass
  • Unscoped Find

Esta lista sigue ampliandose o profundizandose en cada actualización. Dicha lista es tomada de la pagina oficial de Brakeman, la mas reciente versión liberada es la 3.1.0.

-Ejemplo- Al examinar el código de un proyecto que no tiene Alertas en consola se vería algo así en la consola:

Output Reporte consola

Si lo que queremos es que arroje el reporte en html, la salida en consola sería algo como esto:

output console Reporte html

Abriendo el reporte en html con las configuraciones por defecto el reporte luciría así:

Reporte html

Y podríamos expandir los mensajes que nos entrega Brakeman Scanner de cada Security Warning:

Detalle Security warnings

Básicamente eso es todo lo que nos ofrece Brakeman Scanner.

Finalizada la introducción a Brakeman Scanner, podemos comenzar a examinar qué podemos hacer con BrakemanPro.

Brakeman Pro es una iniciativa que parte de los mismos creadores y mantenedores del proyecto BrakemanScanner, para crear una interfaz gráfica que permita obtener mejores y mas elegantes estadísticas acerca de nuestro proyecto en cualquier etapa del mismo.

Al ejecutar el archivo .jar se despliega una pantalla que luce así:

pantalla inicial

En la parte izquierda podemos añadir proyectos para escanear, haciendo clic en el botón “+”, se nos abrirá, entonces, una ventana donde podremos dar la ubicación de la carpeta del proyecto:

Start scan

Una vez hemos seleccionado la carpeta deseada, podemos editar el nombre que llevará el proyecto en el panel de Brakemanpro, y si deseamos un grupo de proyectos ya existente, ahí podremos indicarlo.

Al dar clic en ‘Start scan’, se iniciará el proceso de escaneo de Brakemanpro, cuyo tiempo de ejecución dependerá de complejidad y tamaño de cada proyecto.

Al terminar este proceso ya tendremos en pantalla una mirada general del resultado del escaneo (Overview). En esta pantalla observaremos una gráfica con las Alertas por nivel de severidad, y debajo un resumen estadístico del escaneo.

overview

En la parte superior tenemos la opción de hacer el escaneo nuevamente, generar reporte y configurar las opciones de reporte, las opciones que se pueden editar se ven la siguiente imagen:

report options

Se puede seleccionar un logo, que saldría en la portada del reporte, el título, el nombre de nuestro cliente, el nombre que se le dará al archivo pdf de salida, y podremos escoger el lugar donde queremos que el reporte sea guardado.

Si escogemos la opción generar reporte, obtendremos un archivo pdf que tendrá una portada como la que se ve en la imagen.

portada report

Luego tendremos un resumen muy general del escaneo, la versión de Brakeman pro, el tiempo que duró el escaneo, la versión de Rails usada y la fecha. Después encontraremos los gráficos de Alertas por nivel de severidad, y por categorías.

Warnings by severityWarnings by category

Luego comenzarán con una descripción de cada una de las alertas encontradas por categorías y nivel de severidad, la ubicación del código considerado inseguro y el fragmento de código que generó la alerta.

warning

Ahora escogemos, al lado de ‘Overview’, la opción ‘Triage’, en la cual podremos hacer nuestra tarea de revisión del escaneo realizado, observaremos una lista de las alertas y al escoger cada una en la parte de abajo podremos observar el código que Brakemanpro consideró inseguro.

Triage

En esta parte podremos Validar el nivel de alerta considerado por Brakeman o por el contrario considerarlo un ‘falso positivo’, también podremos editar el nivel de la alerta dado por Brakemanpro, a uno que se ajuste a la realidad encontrada.

triage2

En la parte de arriba de la lista de Alertas tenemos una especie de filtros que nos permitirán determinar qué alertas se listarán y cuales no, separando las aún no examinadas, las que ya hemos examinado y los falsos positivos. Adicionalmente tenemos un campo de búsqueda general.

filtros

Y finalizamos con la opción ‘filter Chains’, en donde podremos revisar las partes del proyecto, de forma rápida, teniendo en cuenta las relaciones entre controladores, es decir que si estamos revisando determina acción y queremos saber en qué otra parte del proyecto se está utlizando y de qué manera, por medio de esta opción lo lograremos mas fácilmente.

filter chains

Por ahora esto es lo que Brakeman Pro 0.1.0 BETA, nos ofrece, con la promesa de continuar mejorando y de adicionar funcionalidades que impacten positivamente la experiencia de los usuarios.

Articulo escrito por Vicky Perez (CEH – ISO 27001 – @vit0y4) en exclusiva para La Comunidad DragonJAR