Guía de seguridad de WordPress (Parte II: Malware)

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. En la segunda parte de esta serie de artículos sobre el tema, ofrezco una lista de definiciones de los más importantes tipos de malware.

Guia de referencia para la seguridad de WordPress- Parte 2: Malware

 
 

Definiciones de malware

Para entender el modus operandi del malware de tipo web, hay que tener en claro una definición del problema. En orden de importancia con respecto a la seguridad de WordPress:

 

Remote Code Execution (RCE)

En español, “ejecución remota de código”. Es uno de las mayores riesgos en informática. Puede afectar a todo tipo de software, desde WordPress hasta teclados de teléfonos.

Recientemente, el fabricante LG lanzó un patch para prevenir que una vulnerabilidad de este tipo fuera explotada en casi todos sus modelos.

La cadena de ataque involucraba varios factores. En primer lugar, tenía que ocurrir la descarga de un archivo de configuración del teclado a través de una conexión no segura (HTTP simple).

Luego, ésta era interceptada por un “hombre en el medio” para sustituir el último fichero por otro que iba cargado con comandos maliciosos.

A continuación, se engañaba a Android para que los inicie a través de una falla del tipo directory traversal.

Foto de David Werbrouck en Unsplash
Foto de David Werbrouck en Unsplash

Vale decir que una falla de seguridad es multifactorial. Eran necesarias una conexión no segura que posibilitara la inserción de un payload, y un agujero típico de los sistemas basados en Linux para poder ejectuarlo.

En WordPress, la naturaleza del RCE es similar. Afecta por lo general a todo el ecosistema.

El más reciente bug de este tipo tuvo que ver con una librería PHP muy popular, en uso no sólo por el CMS sino por multitud de otros scripts: PHPMailer.

La seguridad de WordPress demostró ser muy sólida en este aspecto, ya que una función nativa impedía la explotación por parte de cualquier tipo de malware.

Pero este tipo de errores, una vez reportados, deben ser solucionados de inmediato mediante el parche oficial.

 

Inyección SQL (SQLi)

Es un intento de intrusión por medio de un formulario. Su objetivo es engañar a la aplicación que lo recibe y lo procesa.

Como la mayoría de los sitios usan un servidor de base de datos controlado mediante SQL (Structured Query Language), la “inyección” sería la parte deformada de un campo rellenado mal a propósito.

Por ejemplo, en lugar de un nombre de usuario, una instrucción SQL oculta que comenzara por ” OR 1=1…”

Si el script utilizara este texto en cualquier parámetro de comunicación con la base, correría el peligro de ejecutar alguna query. Ya que estas simples letras siempre serían verdad: como decir “si uno es igual a uno…”

A partir de este log se puede ver un ejemplo concreto, realizado en este caso con parámetros en la dirección URL:

/(script).php?&language=31111111111111%27%20UNION%20SELECT%20CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45),CHAR(45,120,49,57,45,81,45),CHAR(45,120,50,48,45,81,45),CHAR(45,120,50,49,45,81,45),CHAR(45,120,50,50,45,81,45),CHAR(45,120,50,51,45,81,45),CHAR(45,120,50,52,45,81,45)%20--%20/*%20order%20by%20%27as

Foto de Luana Azevedo en Unsplash
Foto de Luana Azevedo en Unsplash

 

Cross Site Scripting (XSS)

Se trata de un peligroso malware que se aprovecha de la confianza que un usuario tiene en un sitio web. Puede ser de tipo reflejado o almacenado.

La versión “reflejada” (o no persistente) suele usar un enlace enmascarado. En éste se incluye algún parámetro con código JavaScript oculto. Así se pueden robar las cookies del usuario, por ejemplo. Y a través de ellas es posible replicar una sesión autenticada.

La “almacenada” (o persistente) logra escribirse de alguna manera en algún lugar del sitio web. Generalmente un comentario que permite HTML, y que no es validado por completo.

Si dentro de este campo de texto, con etiquetas de formato, alguien introduce una sentencia JavaScript, esta queda almacenada en la base de datos, ejecutándose al ser leída por el navegador del usuario.

 

Cross Site Request Forgery (CSRF or XSRF)

Este ataque es sofisticado. Difiere de otros en que “en lugar de explotar la confianza que un usuario tiene en sus sitios web preferidos, lo hace con la que el sitio web tiene en el navegador del usuario“.

Tiene que ser tenido en cuenta más que nada por desarrolladores de plugins y themes con interacción con el Dashboard. Para prevenirlo los programadores deben implementar una característica de WordPress llamada nonces.

Es una medida más dentro de las que conforman la autenticación, que se especializa en identificar la consistencia de una serie de acciones, dada una sesión única. Su explicación es altamente técnica.

Foto de Cullan Smith en Unsplash
Foto de Cullan Smith en Unsplash

 

Remote File Inclusion (RFI) y Local File Inclusion (LFI)

En el código subyacente de WordPress, que utiliza PHP como lenguaje, desde determinado script es posible incluir otros internos o externos (mediante include, include_once, fopen, file_get_contents, require y require_once). Los últimos residen en un URL.

Es fundamental para programar sitios web, puesto que gran parte del código es repetitivo y estas inclusiones permiten reutilizarlo.

Debido a que PHP es cada vez más seguro, la RFI es cada vez menos frecuente. Resulta muchas veces imposible pretender ejecutar cualquier archivo desparramado por la web.

En cambio, la LFI es peligrosa porque, aprovechada de cierta manera, puede revelar los contenidos de wp-config.php.

 

Phishing, Baiting, Pretexting (Social engineering)

Phishing es la contrapartida digital del “cuento del tío”. De ahí que se denomine como “ingeniería social”.

Es engañar a un usuario para que provea voluntariamente información valiosa. Puede ser una contraseña o su número de tarjeta de crédito.

Foto de Aaron Mello en Unsplash
Foto de Aaron Mello en Unsplash

Generalmente utiliza correos falsos que pretenden venir de servicios conocidos. En el 2015, Google Play Books vio comprometidos sus archivos instalables con un malware que iniciaba una rutina de envíos de mails de este tipo.

Pretexting y baiting son variaciones un poco más elaboradas de esta técnica. Un ejemplo del primero sería hacerse pasar por un operador de una mesa de ayuda. Baiting involucra, por lo general, falsas promesas de servicios y productos gratuitos.

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

[Antes] < Guía de seguridad de WordPress (Parte I: La Dark Web)

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

1.10.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!