Creación de plugin de seguridad para OJS

Integrantes

  • Lia Fialho, ABEC

  • Oscar Sandoval, Tricahue Solutions

  • Omar Villa, eScire

Antecedentes

Hemos notado que se suele prestar poca atención a temas de seguridad, ya que se centra la atención en otros aspectos de las plataformas PKP, como el propio proceso editorial o el diseño. Esto suele provocar que las medidas de seguridad que se llegan a implementar solo sean correctivas, es decir, después de que la plataforma es atacada y/o ya fue vulnerada.

Objetivos

Al final del sprint se espera haber desarrollado un plugin de seguridad para la versión más reciente de OJS, que detecte problemas básicos de seguridad en la instalación y dé sugerencias para su corrección.

Discusión y comentarios

Durante el primer día del sprint, los miembros del equipo hablamos sobre las características ideales para este nuevo plugin de seguridad, así como de la importancia de contar con más documentación sobre seguridad que pueda servirle a toda la comunidad PKP. Asimismo, hablamos sobre diferentes tipos de ataques que pueden recibir los sistemas web en general.

Durante el segundo día, nos dividimos las tareas para trabajar, por una parte, en elaborar documentación y, por otra, en crear el plugin para OJS.

Resultados

Cuando hablamos sobre los diferentes tipos de ataques hicimos un listado de estos indicando la vulnerabilidad que se aprovecha en cada caso y la(s) contramedida(s). Este documento quedó como un borrador, que se puede consultar en https://docs.google.com/document/d/12n-0sT_4cC0PyyQIHRB0i8qsc9joHAyGYYjj4GfVowA/edit?usp=sharing.

Se trató de traducir a español la documentación oficial sobre seguridad que hay en la ayuda de PKP. La idea, además de traducirla, era ampliarla o mejorarla; esto también quedó como un borrador que se puede consultar en https://docs.google.com/document/d/1Bm_keLf8efxKOjnkoyCSMyAaggPe-oNi-tBwKeQNMUY/edit?usp=sharing.

Respecto al desarrollo del plugin, se definió que debía ser de tipo “reporte”. Se creó la estructura de archivos necesarios para que funcione, pero debido al tiempo solo se alcanzó a dar una funcionalidad que detecta si en el servidor donde está instalado OJS está habilitada una configuración de PHP que expone la versión de este y con esto hace vulnerable al servidor. A continuación, se muestra un ejemplo del plugin en funcionamiento:

El código fuente del plugin puede consultarse desde https://github.com/ovilla7/ojs-security y fue desarrollado y probado con OJS versión 3.3.0-11 LTS.

Siguientes pasos

Si bien se logró el objetivo inicial de crear un plugin de seguridad, este quedó muy básico debido a las limitaciones de tiempo. Aun así, sienta las bases para continuar con este desarrollo agregando más funcionalidades que permitan detectar vulnerabilidades y emitir recomendaciones a los (las) usuarios(as) finales para reforzar la seguridad de sus instalaciones. Algunas funcionalidades deseables para una futura versión son:

  1. Detección de permisos de escritura en carpetas y archivos para identificar si se han configurado de forma adecuada.
  2. Identificar tanto como sea factible la ubicación y correcta configuración de la carpeta Files donde se almacenan los archivos que se suben a OJS, considerando que no debe ser accesible por http.
  3. Detectar si el servidor expone la versión del servidor web (Apache, nginx, etc.) y/o del sistema operativo que se está usando en el servidor donde está instalado OJS.
  4. Detectar la correcta configuración de otras características:
    1. Evitar que los errores de PHP se muestren en la página ya que pueden exponer datos sensibles.
    2. La existencia de archivos que expongan el resultado de la función phpinfo de PHP sin exigir permisos de administrador(a) de OJS.
    3. De manera general, que se estén usando opciones de configuración para ambientes de producción tanto en el servidor web (Apache, nginx, etc.), como en php y en última instancia en la propia configuración de OJS.
  5. Recomendar configuraciones adicionales que ayuden a reforzar la seguridad y vayan más allá de lo que es posible detectar de forma automática con este plugin.

 

También sería ideal continuar trabajando en el borrador de la documentación y dejarlo lo suficientemente completo para solicitar que sea agregado a la documentación oficial de PKP.