¿Es seguro Drupal?

Hace unos días recibí un email de una persona en donde me consultaba cuan seguro era Drupal pues querían evaluarlo como candidato para nuevos desarrollos en su empresa.

El mail me llevó a pensar un poco sobre este asunto y de esas reflexiones surgió este artículo para analizar cuan seguro es Drupal.

Consideraciones previas

Lo de siempre, todo software tiene sus fallas, el software libre no está exento de esto, con el agravante de que es posible revisar el código fuente en busca de potenciales fallas.

Por supuesto, la disponibilidad del código fuente hace posible detectar errores y corregirlos. En general, hay mucha más gente del lado del bien, que del mal en la comunidad de Drupal por lo que es raro ver 0-days críticos en Drupal (aunque los ha habido).

Drupal vs código PHP puro

Me gustaría comenzar con una comparación simple pero que no deja de ser importante. En general, cualquier CMS o Framework va a ser mucho más seguro que escribir código PHP puro. Más allá de que alguien pueda sentirse ofendido, la realidad indica que es mejor tener mil ojos revisando el código y aportando mejoras en torno a la seguridad, que escribir nuestras propias funciones de validación.

Además, salvo que seamos expertos en seguridad informática, siempre hay casos que escapan a nuestro conocimiento y que es mejor que sean contemplados por gente que sabe y se dedica a eso.

Capas de seguridad de Drupal

Una de las cosas que hace que Drupal sea seguro, son sus APIs pensadas en torno a la seguridad.

Por ejemplo, todo el núcleo está programado usando el API de bases de datos que está diseñado para evitar ataques de inyección SQL.

<?php

// La variable $nid es preprocesada a través del %d
db_query("SELECT n.nid FROM {node} n WHERE n.nid > %d", $nid);

?>

Así como esta el API de bases de datos, también está el API de formularios que evita ataques de CSRF.

<?php

$form['name'] = array(
  '#type' => 'textfield',
  '#title' => t('User name'),
); 

?>

Y algunas funciones para evitar ataques XSS como check_plain, filter_xss y los filtros de entrada.

Drupal es seguro, pero no puede leer tu mente

Con todo el API mencionado anteriormente, la mayoría de los problemas de seguridad están cubiertos. Pero debemos usar siempre ese API. Hacer cosas como:

<?php

print '<h2>' . $node->title . '</h2>';

?>

Es desconocer como escribir código seguro. El ejemplo correcto sería:

<?php

print '<h2>' . check_plain($node->title) . '</h2>';

?>

Para evitar que un usuario malintencionado ingrese un script como título del nodo.

Mantenerse cerca del núcleo

La calidad del núcleo de Drupal en materia de seguridad es mucho mejor que en los módulos contribuidos. Esto no significa que los módulos contribuidos sean un caos en materia de seguridad.

El equipo de seguridad de Drupal un equipo de más de 35 personas se encarga de revisar la seguridad de los módulos que tengan una versión estable. Estable implica, 1.0, 1.1, 2.1, etc. No release candidate, no versiones beta ni alfa. Con ese criterio, siempre que sea posible, es deseable utilizar versiones beta de los módulos. Pues estos son los que están sujetos a revisiones de seguridad.

Drupal tiene una política de actualizaciones seria

Las actualizaciones de seguridad, ocurren los miércoles. En general, salvo que exista un 0-day que implique la urgencia, no hay versiones de seguridad fuera de los días miércoles, lo cual da tiempo para organizarse.

Sumado a esto, las nuevas versiones del núcleo de Drupal son liberadas siguiendo este cronograma:

Esta política está definida en el siguiente documento: http://drupal.org/documentation/version-info#when

Sobre la criticidad de las vulnerabilidades

Otro punto interesante a considerar es, cuan grave es una vulnerabilidad.

Por ejemplo, un error en el módulo Views, puede representar una falla de seguridad grave, pues Views es un módulo muy utilizado en la comunidad de Drupal. Sin embargo, muchos de estos problemas de seguridad están mitigados por el hecho de que el usuario debe poseer permisos para administrar Views. Estos permisos son solo concedidos a administradores de los sitios o muchas solo el usuario admin tiene estas capacidades.

Por lo tanto, no es tan simple analizar la calidad de un CMS basado en el número de vulnerabilidades.

Drupal 8 en materia de seguridad

Con la próxima llega de Drupal 8 y la incorporación de Twig como sistema base para los temas visuales, muchas de las vulnerabilidades del tipo ataques XSS serán mitigadas por el sistema de seguridad de Twig.

Además, muchos componentes no reemplazables de Drupal 7 y anteriores, ahora son plugins o servicios intercambiables, lo que permitirá mejorar aún más la seguridad de los sitios basados en Drupal.

Responsabilidad de los líderes de equipo

Para cerrar este artículo, me gustaría hacer mención sobre la responsabilidad de los líderes de equipo en materia de seguridad al momento de desarrollar código propio en Drupal.

No es raro ver que en un equipo de desarrollo de unas diez personas, tres o cuatro estén comenzando a aprender Drupal. Esto es normal, y la flexibilidad de este CMS hace posible la convivencia entre desarrolladores de distintos niveles de experiencia.

Aquellos desarrolladores con más experiencia deben estar más atentos al correcto uso de las APIs, más que nada por el hecho de que hay muchas, y algunas son desconocidas. Se deben revisar con especial atención los templates de los temas visuales (que son a menudo lugar de auténticas atrocidades en materia de seguridad).

Conclusiones

Te invito a leer también...

Compartir este material en...

Comentarios

Creo que como indicas, el problema no suele venir por el "propio" Drupal, sino mas bien por el uso que se le da, como la carga de nuevos modulos que no se encuentran dentro de la comunidad.
Pepe Gigantografia

Para evitar problemas con la seguridad de Drupal, se puede usar el modulo "security review" de Acquia. Este modulo revisa que esten configurados una serie de parametros para asegurar un poco mas nuestra web.
Bebe

Aunque puedan surgir dudas en torno a la seguridad, pero habiendo tantas personas revisando el código y aportando en cuanto a seguridad se refiere, a mí la verdad me da bastante confianza

Añadir nuevo comentario