viernes, junio 10, 2016

My WordPress in Paranoid Mode

A pesar de que la agenda de trabajo nos come cada día más, dejar la oportunidad de probar una idea loca con un amigo no entra dentro de los planes de los que amamos la tecnología en general y la seguridad informática y el hacking en particular. Y ese es el motivo principal que nos ha llevado a Pablo González (@pablogonzalezpe) y a mí, a pasar un par de semanas enredando con una idea loca que se me pasó por la cabeza: Configurar un WordPress in Paranoid Mode usando Latch de una forma que no se había utilizado hasta ahora.

Figura 1: WordPress in Paranoid Mode with Latch

La idea, como ya veréis más adelante, tiene más fases, pero digamos que en esta primera etapa consistía en añadir una capa extra en la fortificación de sistemas WordPress aplicando el principio de Defensa en Profundidad. Para ello, como no, decidimos usar Latch a varios niveles y conseguir el resultado que buscábamos: añadir un 2nd Factor Authorization a nivel de consulta SQL en las operaciones realizadas sobre la base de datos MySQL. Estas es la charla que impartí en Open Expo 2016 sobre este tema.


Figura 2: My WordPress in Paranoid Mode

Aquí os dejo un resumen de esta parte de configuración paranoica que hacemos con Latch en WordPress, pero a partir de la semana que viene os vamos a publicar un artículo largo que terminará en un whitepaper no solo con esto configuración, sino con otra PoC que hemos hecho tocando el core de WordPress para fortificar las cadenas de conexión en modo paranoico. A ver si os gusta.

Paso 1: Latch a nivel de usuario de WordPress

Para fortificar un servidor WordPress in Paranoid Mode, primero añadimos el plugin de Latch para WordPress con el objetivo de tener a los usuarios con un 2nd Factor Authentication en el proceso de login, tal y como se explica en este vídeo.


Figura 3: Configuración y uso de Latch para WordPress

Esto no es nada nuevo, y ya lo conocéis todos. De hecho, éste es uno de los procesos más repetidos a lo largo y ancho de Internet entre los medio millón de usuarios de Latch que existen hoy en día, ya que Latch para WordPress es uno de los plugins más utilizados.

Paso 2: Latch a nivel de conexión SSH

El segundo proceso de esta configuración es añadir Latch a nivel del sistema operativo para fortificar el servidor Linux en que corra, para lo que hemos usado el plugin de Latch para UNIX que nos permite configurar Latch en la conexión SSH al servidor donde corre el CMS de WordPress. Nada nuevo bajo el sol.

Figura 4: Latch para UNIX

En este vídeo tienes también un proceso de configuración Latch en UNIX por si lo quieres poner en tanto en el login y como en la conexión SSH de tu servidor y evitar cualquier ataque de fuerza bruta o diccionario contra alguno de tus servidores expuestos en Internet.

Paso 3: Latch en las tablas de WordPress [NEW]

Esta es la parte novedosa del proceso, y consiste en configurar triggers en las operaciones SQL de INSERT, UPDATE y DELETE que se producen sobre las tablas que usa WordPress en MySQL. De esta forma configuramos tres modos: Read Only (Paranoid++), Edition & Administration, que permiten al administrador del sitio configurar un WordPress para que nadie pueda acceder al sistema, comentar o publicar algo nuevo. Configurarlo para que se pueda leer el blog desde Internet, publicar comentarios pero no crear artículos ni gestionar usuarios o abierto para que pueda ser administrado. Aquí tienes las diapositivas de las dos charlas que he dado para presentarlo.


De esta forma, si apareciera un bug de SQL Injection en el CMS de WordPress (o en uno de sus plugins), o se hiciera un ataque de Network Packet Manipulation contra WordPress sobre una consulta realizada sin cifrar contra el motor de bases de datos MySQL, esta estaría protegida por Latch. Aquí puedes descargar este PoC (¡Ojo! no se ha pasado por QA ni se han probado todos los escenarios de instalación y desinstalación, así que tómalo como una PoC que está en proceso de cambios).

Figura 6: PoC de WordPress in Paranoid Mode

Ya tienes disponible el código de esta PoC que hemos preparado para vosotros, y lo mejor de todo es que la idea de poner el 2nd Factor Authorization con Latch a nivel de trigger ha funcionado muy bien, lo que abre una nueva forma de utilizar Latch para proteger aplicaciones web: ¿Qué te parece configurar un Joomla!, un Magento, un PrestaShop o un Moodle en Paranoid Mode?

Saludos Malignos!

Chema Alonso & Pablo Gonzalez

2 comentarios:

  1. Tras ver tu ponencia dejas claro que este programa que ha hecho Pablo Gonzalez (que no lo nombras en dicha ponencia) protege porque tras una intrusión latcheas las tablas de Mysql que quieres... Crees que a un atacante le interesan esas tablas después de que les hayas proveído de una forma de ejecutar comandos en el sistema con la librería UDF?

    ResponderEliminar
  2. ¿Sería posible usarlo en bases de datos NoSQL? Como Cassandra.

    ResponderEliminar