SPECT Research

Security and Software Development


Home About us Projects Education

Para la constitución, una conversación (sobre seguridad)

El día de ayer fue lanzado un exploit para MySQL que permite escalar privilegios dada una serie de condiciones. El peor caso es que una simple inyección SQL puede llevar a un atacante a obtener privilegios de administrador a nivel de sistema operativo en el servidor donde reside la base de datos.

Lo que hoy hablaré es una historia sobre seguridad, una aplicación vulnerable a inyección SQL y el proyecto estrella del actual gobierno: "Una Constitución para Chile". Este post trata sobre cómo se puede llegar a comprometer un proceso democrático por la falta de medidas de seguridad.

En busca de la vulnerabilidad

Cuando participé como ciudadano en "Una Constitución para Chile" esta ofrecía una funcionalidad limitada, solo era posible responder una encuesta y organizar un encuentro comunal. A simple vista parecía una aplicación con buenas validaciones donde encontrar una vulnerabilidad que afecte a los demás ciudadanos requería tiempo y no parecía una tarea fácil. Entonces tomé otro camino.

La plataforma estaba balanceada y otra aplicación estaba siendo hospedada en los mismos servidores: la aplicación X, vulnerable a inyección SQL sobre un motor MySQL. No pretendo dar mayores detalles sobre esto ya que la aplicación sigue vulnerable.

Después de ese descubrimiento, lo reporté immediatamente a través de los canales de comunicación respectivos (Abril 2016). Pedí explícitamente que movieran la aplicación X a otro servidor ya que sus vulnerabilidades podían comprometer "Una Constitución para Chile". La transición fue realizada rápidamente.

Respecto a las vulnerabilidades en la aplicación X, que podían ser fácilmente explotadas con herramientas como sqlmap, los desarrolladores consideraron que no eran graves ya que la información que estaba en la base de datos era acotada. Una especie de SQL-Injection-Driven development (SQLIDD).

Hipótesis

Para los que trabajamos en seguridad, sabemos que el peor caso es posible. Y no solo es posible, sino que buscado por ciertas personas. El caso hipótetico que quiero plantear es simple: aplicar éxitosamente el exploit a la aplicación X, obtener privilegios de administrador y tomar el control de la plataforma "Una Constitución para Chile", ya sea porque están en el mismo servidor (como en un inicio) o porque comparten el servidor de base de datos. Como sea, esto compromete la validez del proceso democrático ya que la información en la base de datos puede ser adulterada.

Hay muchas teorías más sobre posibles escenarios, sin embargo hay una premisa irremplazable para contrarrestar todo esto: no dar ventajas. Esta historia es un ejemplo claro de dos cosas que nos encontramos hoy en día:

  1. Desarrolladores con poco entendimiento de seguridad y por lo tanto no responden de forma adecuada a incidentes de seguridad.

  2. Falta de gestión del riesgo en procesos democráticos realizados a través de Internet.

Quizás esta vez no paso nada, quizás para la próxima se tenga que declarar nulo un proceso completo por falta de garantías, y de ingeniería.