Cómo evitar que descarrile Rails: neutralice los ataques de inyección de código
En Akamai, nos comprometemos a mejorar continuamente nuestro firewall de aplicaciones web (WAF) para garantizar los máximos niveles de seguridad a nuestros clientes. Como parte de este compromiso, nos complace anunciar el lanzamiento de una nueva función de detección para ataques de inyección de código específica para aplicaciones de Ruby on Rails (Rails).
¿Por qué es crucial proteger las aplicaciones de Ruby on Rails?
Ruby on Rails es un marco de trabajo popular de desarrollo de aplicaciones web por su facilidad de uso, flexibilidad y la solidez de su ecosistema. Rails acelera el tiempo de desarrollo y mantiene un código base limpio y aceptable, por lo que resulta muy atractivo para programadores de organizaciones de todos los tamaños. Muchas marcas reconocidas, como GitHub, Shopify, Airbnb y Basecamp han creado sus plataformas con Ruby on Rails, lo que pone de manifiesto su importancia en el sector tecnológico.
No obstante, Rails también se ha convertido en un atractivo objetivo para los ciberataques por estos mismos motivos. El aumento de procesos más automatizados y la necesidad de interoperabilidad de las aplicaciones, que no deja de crecer, crean nuevos espacios en los que los atacantes se pueden esconder. Proteger las aplicaciones de Rails es esencial para salvaguardar los datos y las operaciones empresariales confidenciales de estas plataformas tan importantes.
Aumento de amenazas contra Ruby on Rails
A lo largo de los años, Rails se ha enfrentado a numerosas vulnerabilidades de seguridad y vectores de ataque importantes. El Proyecto Abierto de Seguridad de Aplicaciones Web (OWASP, por sus siglas en inglés) incluye una hoja de referencia sobre la protección de Rails que muestra lo crucial que es que tanto desarrolladores como equipos de seguridad estén alerta.
Si bien la mayoría de las vulnerabilidades con un perfil de alto riesgo en Rails estaban relacionadas con la deserialización insegura de los formatos de datos JSON y YAML , es posible que los programadores expongan accidentalmente la aplicación y los datos de los usuarios a otras clases de ataques, como la inyección de código. Esto se aplica especialmente a la función "eval" en el lenguaje de Ruby. Esta función escribe dinámicamente código de Ruby introduciendo texto en una cadena. Si lo que introduzca un atacante termina dentro de esta función, podrá ejecutar cualquier código arbitrario de Ruby.
Le mostramos un ejemplo:
def calculate
calc = params[:calc]
result = eval(calc)
render plain: result
End
En este ejemplo, que es extremadamente sencillo, la acción calcular toma un parámetro calc de lo que ha introducido el usuario, lo que incluye una operación matemática, como "1+2", y usa el método eval de Ruby que, a su vez, devuelve el resultado de la operación matemática. De esta forma, se origina una vulnerabilidad de inyección de código, puesto que los atacantes pueden introducir código arbitrario en Ruby para que se ejecute.
Cómo pueden explotar esta vulnerabilidad los atacantes
Un atacante puede explotar esta vulnerabilidad enviando una solicitud especialmente diseñada con código malicioso de Ruby, como:
POST /calculate?ip=IO.popen('cat%20%2Fetc%2Fpasswd').read%20%23
O, en su versión descodificada:
IO.popen('cat /etc/passwd').read #
Este comando acabaría leyendo el contenido del archivo /etc/passwd del sistema (que contiene información confidencial sobre los usuarios del sistema). El símbolo # del final es un comentario de Ruby que ignora todo lo que haya detrás, evitando los errores de sintaxis en el resto del código.
Mitigación con Akamai Adaptive Security Engine
Debido a la prevalencia cada vez mayor de ciberamenazas sofisticadas, es necesario tener implantadas sólidas medidas de seguridad. Nuestra regla más reciente de Adaptive Security Engine, 3000404: Ataque de inyección en operación confidencial en Ruby on Rails detectado, ofrece un mayor nivel de precisión y cobertura a la hora de detectar y mitigar ataques de inyección de código en aplicaciones de Rails (Figura 1).
Ventajas clave
Precisión mejorada: las técnicas de detección avanzadas identifican de forma precisa y bloquean los intentos de inyección de código, minimizando así los falsos positivos y garantizando que no se vea afectado el tráfico legítimo.
Amplia cobertura: una amplia cobertura de una variedad de vectores de inyección de código ofrece una protección sólida para las aplicaciones de Rails.
Ataques de inyección de código en Ruby on Rails contra nuestros clientes
Nuestra nueva regla específica para Rails detecta decenas de miles de intentos de inyección de código a diario en todo el mundo. En las últimas semanas, esta regla de Adaptive Security Engine alcanzó un pico de casi 250 000 detecciones en un solo día y al día mitiga de media unos 70 000 ataques (Figura 2).
Hasta ahora, hemos observado más de 3000 direcciones IP únicas de ataque y más de 21 000 hosts han sido el objetivo de estos intentos de ataque. Estos intentos se han producido en todo el mundo; pero la mayoría se han originado en Alemania (Figura 3).
Miramos hacia el futuro
La seguridad es un aspecto crucial de su negocio, y nos comprometemos a ofrecer soluciones que no solo cumplan sus expectativas, sino que las superen. Nuestro firewall de aplicaciones web (WAF) está diseñado para ofrecer una protección completa y, con esta regla de detección de inyección de código en Rails, nuestros mecanismos de defensa quedan aún más reforzados para salvaguardar sus aplicaciones y datos.
A medida que seguimos innovando y ampliando nuestras funciones de WAF, seguimos centrándonos en ofrecer a nuestros clientes las soluciones de seguridad más eficaces y fiables. No se pierda las actualizaciones, ya que seguimos trabajando sin descanso para mejorar nuestra oferta de productos y mantener nuestro liderazgo en seguridad de aplicaciones web.
Para más información sobre Adaptive Security Engine y las soluciones de seguridad para API y aplicaciones web de Akamai, póngase en contacto con su representante de Akamai.