
SA-CORE-2014-005 Drupal core: SQL injection (15/10/2014)

Drupal se basa en una API mediante la cual abstrae la ejecución de todas las sentencias SQL realizando al mismo tiempo una verificación de dichas sentencias para evitar ataques por SQL.
El bug detectado se encuentra en esta API que no realiza correctamente su trabajo y permite a un atacante con suficientes conocimientos la ejecución de instrucciones SQL. Esta vulnerabilidad puede ser explotada por usuarios anónimos.
Versiones afectadas: versiones del núcleo anteriores a la 7.32
En https://www.drupal.org/SA-CORE-2014-005 puede encontrarse más información sobre esta vulnerabilidad.
Los ataques automatizados a los sitios de Drupal 7 se iniciaron horas después de que se anunciase la vulnerabilidad de seguridad. Algunos de los ataques llevados a cabo con un enfoque en esta vulnerabilidad son los siguientes:
crear un archivo al azar en uno de los directorios de módulos del núcleo que permite al atacante ejecutar código PHP.
ruta /user: este ataque permite activar el módulo PHP y actualizar la ruta /user para que el atacante pueda ejecutar cualquier código PHP a través de cualquier tipo de petición. La ventaja para el atacante es que no requiere acceso de escritura. Este tipo de ataque se puede neutralizar limpiando las cachés de Drupal.
crear un bloque personalizado con código PHP en el cuerpo
resetear el usuario y la contraseña de admin o insertar un nuevo usuario admin. Este tipo de ataque fue el primero en aparecer.
El bug detectado tiene la calificación de "altamente crítico" por lo que se recomienda a cualquier sitio Drupal que esté funcionando con Drupal 7.31 o inferior la inmediata actualización del sitio web a la versión 7.32 o posterior.
En el caso de no poder actualizar, por seguridad, se recomienda aplicar un parche temporal para mitigar la vulnerabilidad de nuestro sitio. Para aplicar este parche consulta este enlace: https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch
Maneras en las que actualizar nuestro sitio Drupal 7 para hacerlo seguro:
- Opción 1: Actualizar el Core de Drupal usando Drush
Si tenemos acceso por terminal al código de nuestro portal, esta es una opción muy cómoda ya que nos permite actualizar el núcleo de Drupal ejecutando un solo comando.
Para ello tenemos que ir a la raíz de nuestro portal Drupal usando la terminal y ejecutar el comando: drush up drupal.
- Opción 2: Actualizar el Core de Drupal Manualmente
Para actualizar el core de nuestro Drupal manualmente tenemos que descargar la última versión del núcleo de Drupal.org, reemplazar los archivos en nuestra instalación y acceder desde el navegador a la ruta update para ejecutar las actualizaciones de base de datos necesarias.
Opción 3: Parche
Aunque no es la opción más recomendable, este parche puede servir para proteger del agujero de seguridad.
Para aplicar el parche hay que modificar una línea en el archivo database.inc. Este archivo se encuentra en la ruta /includes/database/database.inc. El código vulnerable está a partir de la línea 735:
Reemplazar la siguiente línea en el archivo database.inc:
foreach ($data as $i => $value) {
Con esta línea:
foreach (array_values($data) as $i => $value) {
El archivo debería quedar de la siguiente manera:
- Usando Drupalgeddon para verificar si el sitio fue atacado
Drupalgeddon no es un módulo Drupal, es un módulo Drush que comprueba si nuestro sitio presenta alguno de los síntomas de los ataques detectados a partir de SA-CORE-2014-005.
Para instalar Drupalgeddon tendremos que ejecutar el siguiente comando en el directorio ~/.drush/commands(esta dirección varía dependiendo como se tenga configurado drush):
drush dl drupalgeddon
Limpiar la caché de drush con el siguiente comando:
drush cache-clear drush
Una vez instalado tendremos que ir al directorio del sitio web con un terminal y ejecutar el siguiente comando:
drush drupalgeddon-test
La salida de la ejecución de este comando nos listará los problemas detectados, en caso de que encuentre alguno o un mensaje indicando que no se han detectado problemas.
Estos comandos sirven para revisar donde está el problema pero no borran nada, eso se tiene que hacer por cuenta propia.