T20A: SENDMAIL
Autor: Alejandro Cabrera
E-Mail: acabrera@sede.arn.gov.ar
1. INTRODUCCION
SENDMAIL es un programa de correo electónico en ambientes UNIX. Contiene una vulnerabilidad que permite a los usuarios remotos y locales ejecutar comandos con privilegios. Es posible acceder a una máquina mediante TELNET y conectarse con el puerto de correo electrónico (puerto 25) para luego ejecutar desde allí comandos del protocolo SMTP. Este problema se detectó en todas las versiones de SENDMAIL anteriores a la versión 8.6.10, incluyendo SENDMAIL 5.67+IDA-1.5 y la mayoría de las versiones que proveen los vendedores. En consecuencia, esta vulnerabilidad está siendo ampliamente explotada en Internet.
2. CONCEPTOS GENERALES DE FUNCIONAMIENTO
Las ventajas de usar SENDMAIL son obvias:
SENDMAIL hace uso de DNS. Incluso clientes pequeños sin disco pueden enviar mensajes de mail hacia cualquier lugar en forma fácil y directa.
2.1. DIRECCIONES
Básicamente SENDMAIL tiene dos funciones: recibir y enviar mensajes de correo elctrónico. Las direcciones que un e-mail requiere son una de remitente y otra de destinatario. Recordemos que una dirección requiere de un nombre de usuario y un nombre de dominio de correo.
2.2. ENVIANDO E-MAIL
Para enviar un e-mail necesitamos una dirección de destinatario. Esta dirección puede ser local (sin nombre de dominio de mail) o externa (con nombre de dominio de mail). Si la dirección es local, el e-mail se envía en forma directa. Si la dirección es externa, entonces, con la ayuda de la información del DNS, el mailexchange es seleccionado y se establece un contacto directo con él. "Directo" significa que el e-mail es enviado sin intervención de ninguna estación intermedia. Entre el SENDMAIL que envía el e-mail y el demonio del SENDMAIL externo que lo recibe, hay una cierta información intercambiada siguiente a un protocolo SMTP bien definido.
2.3. RECIBIENDO E-MAIL
Para recibir un e-mail se necesita una dirección de recepción. Esta dirección usualmente es un nombre de usuario sobre mailexchange. Gracias a los alias es posible no sólo enviar e-mails no sólo a sobrenombres sino también a programas destinatarios.
2.4. MAILEXCHANGE
El mailexchange es la parte receptora de la transmisión. El mailexchange puede ser contactado en el port 25 por cualquier máquina externa que envia e-mails. Los mensajes son almacenados in /var/spool/mail de los mailboxes de los destinatarios o ser enviados a esclavos adecuados, dependiendo del sistema de alias.
El SENDMAIL del mailexchange puede, por supuesto, enviar cualquier e-mail a cualquier destino externo o interno.
La línea más importante del archivo sendmail.cf es la "Dj", la cual debería contener el nombre de dominio de mail.
2.5. CLIENTE
Un cliente no es un esclavo ni tampoco un mailexchange. Es un host que monta (importa) /var/spool/mail desde el mailexchange. Un cliente puede enviar mail a cualquier destino externo válido y que es totalmete independiente de su mailexchange. Un cliente no necesita un demonio SENDMAIL ya que no es el mailexchange y por lo tanto no recibe e-mail en forma directa. Se recomienda tener el mínimo número de estaciones corriendo un demonio SENDMAIL.
La línea más importante del archivo sendmail.cf para un cliente es la línea con "DM", la cual debería contener el nombre de dominio de mail.
2.6. ESCLAVO
Un esclavo es un mailexchange, pero recibe mail externo sólo por medio de su mailexchange de los nombres de dominio de mail, mastermailexchange. Por lo tanto, el esclavo recibe e-mail via port 25 desde el mastermailexchange. El mail es almacenado en /var/spool/mail de los mailboxes de los destinatarios. El esclavo puede enviar e-mail a cualquier destino interno o externo.
2.7. MANEJO Y DETECCION DE ERRORES
La siguiente es un lista simple de chequeo o procedimiento:
3. VULNERABILIDAD DEL SENDMAIL
3.1. ANTECEDENTES
3.2. IMPACTO
3.3. EJEMPLOS
4. PREGUNTAS