--- dspam-3.6.8/debian/changelog +++ dspam-3.6.8/debian/changelog @@ -1,3 +1,16 @@ +dspam (3.6.8-5ubuntu1.2) gutsy-security; urgency=low + + * SECURITY UPDATE: The libdspam7-drv-mysql cron job includes the MySQL + dspam database password in a command line argument, which might allow + local users to read the password by listing the process and its arguments. + * debian/libdspam7-drv-mysql.cron.daily: applied patch from Debian to use a + password file instead. + * References + - LP: #195691 + - CVE-2007-6418 + + -- Daniel Hahler Tue, 25 Mar 2008 23:58:09 +0100 + dspam (3.6.8-5ubuntu1.1) gutsy-proposed; urgency=low * debian/dspam.init: make sure directory for PIDFILE (/var/run/dspam) exists --- dspam-3.6.8/debian/libdspam7-drv-mysql.cron.daily +++ dspam-3.6.8/debian/libdspam7-drv-mysql.cron.daily @@ -5,6 +5,7 @@ DSPAMCONF=/etc/dspam/dspam.conf MYSQLCONF=/etc/dspam/dspam.d/mysql.conf PURGE=/usr/share/doc/libdspam7-drv-mysql/purge-4.1.sql +MYSQLCONF_PASSWD=/var/run/libdspam7-drv-mysql.cron.passwd if grep -q "^StorageDriver.*mysql_drv.so" $DSPAMCONF; then if [ -x /usr/bin/mysql ]; then @@ -13,17 +14,25 @@ MYSQL_DB="`grep "^MySQLDb" $MYSQLCONF | awk '{print $2}'`" MYSQL_HOST="`grep "^MySQLServer" $MYSQLCONF | awk '{print $2}'`" + UMASK_OLD="`umask`" + umask 077 + [ -e "$MYSQLCONF_PASSWD" ] && rm "$MYSQLCONF_PASSWD" + echo -e "[client]\npassword=$MYSQL_PASS" > "$MYSQLCONF_PASSWD" + umask "$UMASK_OLD" + # If host is empty or starting with a / assume it's localhost. if [ -z "$MYSQL_HOST" ] || [ ` echo "${MYSQL_HOST}" | cut -c1 ` = "/" ]; then - /usr/bin/mysql --user=$MYSQL_USER --password=$MYSQL_PASS $MYSQL_DB < $PURGE + /usr/bin/mysql --defaults-file=$MYSQLCONF_PASSWD --user=$MYSQL_USER $MYSQL_DB < $PURGE else if echo "$MYSQL_HOST" | grep "^/" > /dev/null 2>&1 ; then # Assume it is a socket: - /usr/bin/mysql --socket=$MYSQL_HOST --user=$MYSQL_USER --password=$MYSQL_PASS $MYSQL_DB < $PURGE + /usr/bin/mysql --defaults-file=$MYSQLCONF_PASSWD --socket=$MYSQL_HOST --user=$MYSQL_USER $MYSQL_DB < $PURGE else - /usr/bin/mysql --host=$MYSQL_HOST --user=$MYSQL_USER --password=$MYSQL_PASS $MYSQL_DB < $PURGE + /usr/bin/mysql --defaults-file=$MYSQLCONF_PASSWD --host=$MYSQL_HOST --user=$MYSQL_USER $MYSQL_DB < $PURGE fi fi + + rm "$MYSQLCONF_PASSWD" fi fi