La versión actual de «mailman» contiene un grave problema de seguridad
que permite que cualquier suscriptor de cualquier lista de correo pueda
acceder a archivos arbitrarios en el servidor que hospede el servicio
«mailman».
Mailman es un gestor de listas de distribución por correo electrónico
muy popular. Programado en Python, está sustituyendo rápidamente a los
viejos entornos «majordomo», por su interfaz gráfica, su buen nivel de
integración de funciones y fácil modificación.
La versión actual de «mailman» contiene una vulnerabilidad que permite
que cualquier suscriptor de una lista de correo pueda leer cualquier
fichero del sistema, accesible al usuario «mailman» o «apache».
La vulnerabilidad afecta a las versiones 2.1 de «mailman», incluyendo la
actual, 2.1.5. Los desarrolladores de «mailman» han publicado la versión
2.1.6b4, que soluciona este problema, pero es aún una versión «beta».
Para aquellos que no quieran actualizar a la versión 2.1.6b4,
experimental, se pueden aplicar las siguientes soluciones:
* Eliminar el fichero «mailman/cgi-bin/private». Hacer esto, no
obstante, impedirá que los usuarios puedan acceder a los archivos de
una lista de correo, si son privados.
* Se puede aplicar el siguiente parche a la versión 2.1.5:
Index: private.py
===================================================================
RCS file: /cvsroot/mailman/mailman/Mailman/Cgi/private.py,v
retrieving revision 2.16.2.1
diff -u -r2.16.2.1 private.py
— private.py 8 Feb 2003 07:13:50 -0000 2.16.2.1
+++ private.py 10 Feb 2005 03:34:21 -0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1998-2003 by the Free Software Foundation, Inc.
+# Copyright (C) 1998-2005 by the Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -35,13 +35,17 @@
_ = i18n._
i18n.set_language(mm_cfg.DEFAULT_SERVER_LANGUAGE)
+SLASH = ‘/’
+
def true_path(path):
«Ensure that the path is safe by removing ..»
– path = path.replace(‘../’, »)
– path = path.replace(‘./’, »)
– return path[1:]
+ parts = path.split(SLASH)
+ safe = [x for x in parts if x not in (‘.’, ‘..’)]
+ if parts safe:
+ syslog(‘mischief’, ‘Directory traversal attack thwarted’)
+ return SLASH.join(safe)[1:]
Se siga la vía que se siga, Hispasec recomienda a los administradores
de sistemas «mailman» que actualicen a la versión 2.1.6 en cuanto esté
disponible.
jcea@hispasec.com
Más información:
Mailman security issues
http://www.list.org/security.html
Parche para «mailman» 2.1.5
http://www.list.org/CAN-2005-0202.txt
Mailman, the GNU Mailing List Manager
http://www.list.org/
Deja una respuesta