Valid XHTML 1.0 Strict
Valid CSS!

[ Docs | Tools | Advisories | Full-Disclosure ]

Date: Wed, 9 Feb 2005 18:15:02 +0000
From: John Cartwright <johnc@grok.org.uk>
To: full-disclosure@lists.netsys.com
Subject: [Full-Disclosure] Administrivia: List Compromised due to Mailman Vulnerability

Hi

On 7th February 2005 I was notified of a number of potentially -
compromised Full-Disclosure subscriber accounts. Following an 
investigation it appears that the Mailman configuration database was 
obtained from lists.netsys.com on 2nd January 2005 using a remote 
directory traversal exploit for a previously unpublished 
vulnerability in Mailman 2.1.5. 

Subscriber addresses and passwords have been compromised. All list 
members are advised to change their password immediately. There do
not appear to be further signs of intrusion although investigations
continue.

The vulnerability lies in the Mailman/Cgi/private.py file:

def true_path(path):
    "Ensure that the path is safe by removing .."
    path = path.replace('../', '')
    path = path.replace('./', '')
    return path[1:]

A crafted URL fragment of the form ".../....///" will pass through the 
above function and return as "../", thus allowing directory traversal 
to occur using the following URL syntax to retrieve an arbitrary path.

/mailman/private/<list>/<path>?username=<username>&password=<password>

Expect vendor advisories nearer the end of the week, for now here is a 
suggested fix from Barry Warsaw:

SLASH = '/'

def true_path(path):
    "Ensure that the path is safe by removing .."
    parts = [x for x in path.split(SLASH) if x not in ('.', '..')]
    return SLASH.join(parts)[1:]

This issue only affects Mailman installations running on web servers
that don't strip extraneous slashes from URLs, such as Apache 1.3.x.

The Common Vulnerabilities and Exposures project (cve.mitre.org) has 
assigned the name CAN-2005-0202 to this mailman issue.

Cheers
- John