tag 341394 patch
thanks

webmin (1.180-3sarge0) stable-security; urgency=high

  * [SECURITY] CVE-2005-3912 Fix syslog format string vulnerability in
    miniserv.pl (Closes: #341394) This string vulnerability could be used
    to gain access to the account running miniserv.pl by creating a
    specialy crafted username. This vulnerability does not affect machines
    which are running Sys::Syslog >= 0.07.

 -- Don Armstrong <[EMAIL PROTECTED]>  Tue, 27 Dec 2005 04:08:16 -0800


dsc and diff.gz are available if necessary at
http://rzlab.ucr.edu/debian/webmin/

(Note again that this vulernability does not affect testing or
unstable, as Sys::Syslog properly handles two argument syslog calls in
modern versions)


Don Armstrong

-- 
"I was thinking seven figures," he said, "but I would have taken a
hundred grand. I'm not a greedy person." [All for a moldy bottle of
tropicana.]
 -- Sammi Hadzovic [in Andy Newman's 2003/02/14 NYT article.]
 http://www.nytimes.com/2003/02/14/nyregion/14EYEB.html

http://www.donarmstrong.com              http://rzlab.ucr.edu
diff -u webmin-1.180/debian/changelog webmin-1.180/debian/changelog
--- webmin-1.180/debian/changelog
+++ webmin-1.180/debian/changelog
@@ -1,3 +1,13 @@
+webmin (1.180-3sarge0) stable-security; urgency=high
+
+  * [SECURITY] CVE-2005-3912 Fix syslog format string vulnerability in
+    miniserv.pl (Closes: #341394) This string vulnerability could be used
+    to gain access to the account running miniserv.pl by creating a
+    specialy crafted username. This vulnerability does not affect machines
+    which are running Sys::Syslog >= 0.07.
+
+ -- Don Armstrong <[EMAIL PROTECTED]>  Tue, 27 Dec 2005 04:08:16 -0800
+
 webmin (1.180-3) unstable; urgency=high
 
   * The ability to install third-party modules safely has been added.
only in patch2:
unchanged:
--- webmin-1.180.orig/miniserv.pl
+++ webmin-1.180/miniserv.pl
@@ -220,11 +220,11 @@
                }
        else {
                local $msg = ucfirst($config{'pam'})." starting";
-               eval { syslog("info", $msg); };
+               eval { syslog("info", '%s', $msg); };
                if ($@) {
                        eval {
                                setlogsock("inet");
-                               syslog("info", $msg);
+                               syslog("info", '%s', $msg);
                                };
                        if ($@) {
                                # All attempts to use syslog have failed..
@@ -546,7 +546,7 @@
                                &run_logout_script($s, $sdb[0]);
                                delete($sessiondb{$s});
                                if ($use_syslog) {
-                                       syslog("info", "Timeout of $sdb[0]");
+                                       syslog("info", '%s', "Timeout of 
$sdb[0]");
                                        }
                                }
                        }
@@ -712,7 +712,7 @@
                                                        local $logtext = 
"Security alert: Host $2 ".
                                                          "blocked after 
$config{'blockhost_failures'} ".
                                                          "failed logins for 
user $1";
-                                                       syslog("crit", 
$logtext);
+                                                       syslog("crit", '%s', 
$logtext);
                                                        }
                                                }
                                        else {
@@ -1046,12 +1046,12 @@
                        if ($certs{$u} eq $peername) {
                                $authuser = $u;
                                $validated = 2;
-                               #syslog("info", "SSL login as $authuser from 
$acpthost") if ($use_syslog);
+                               #syslog("info", '%s', "SSL login as $authuser 
from $acpthost") if ($use_syslog);
                                last;
                                }
                        }
                if ($use_syslog && !$validated) {
-                       syslog("crit",
+                       syslog("crit", '%s',
                               "Unknown SSL certificate $peername");
                        }
                }
@@ -1084,7 +1084,7 @@
                        $validated = 0;
                        }
                if ($use_syslog && !$validated) {
-                       syslog("crit",
+                       syslog("crit", '%s',
                               ($nonexist ? "Non-existent" :
                                $expired ? "Expired" : "Invalid").
                               " login as $authuser from $acpthost");
@@ -1121,7 +1121,7 @@
                        $authuser = $baseauthuser = undef;
                        if ($louser) {
                                if ($use_syslog) {
-                                       syslog("info", "Logout by $louser from 
$acpthost");
+                                       syslog("info", '%s', "Logout by $louser 
from $acpthost");
                                        }
                                &run_logout_script($louser, $sid,
                                                   $acptip, $localip);
@@ -1211,7 +1211,7 @@
                                &write_keep_alive(0);
                                &write_data("\r\n");
                                &log_request($acpthost, $authuser, $reqline, 
302, 0);
-                               syslog("info", "Successful login as $authuser 
from $acpthost") if ($use_syslog);
+                               syslog("info", '%s', "Successful login as 
$authuser from $acpthost") if ($use_syslog);
                                return 0;
                                }
                        elsif ($ok && $expired &&
@@ -1227,7 +1227,7 @@
                                $page = $config{'password_form'};
                                $logged_code = 401;
                                $miniserv_internal = 2;
-                               syslog("crit",
+                               syslog("crit", '%s',
                                        "Expired login as $in{'user'} ".
                                        "from $acpthost") if ($use_syslog);
                                }
@@ -1239,7 +1239,7 @@
                                $already_session_id = undef;
                                $method = "GET";
                                $authuser = $baseauthuser = undef;
-                               syslog("crit",
+                               syslog("crit", '%s',
                                        ($nonexist ? "Non-existent" :
                                         $expired ? "Expired" : "Invalid").
                                        " login as $in{'user'} from $acpthost")
@@ -1292,13 +1292,13 @@
                        # Local user exists in webmin users file
                        $validated = 1;
                        $authuser = $localauth_user;
-                       # syslog("info", "Local login as $authuser from 
$acpthost") if ($use_syslog);
+                       # syslog("info", '%s', "Local login as $authuser from 
$acpthost") if ($use_syslog);
                        }
                elsif ($config{'unixauth'}) {
                        # Local user must exist
                        $validated = 2;
                        $authuser = $localauth_user;
-                       # syslog("info", "Local login as $authuser from 
$acpthost") if ($use_syslog);
+                       # syslog("info", '%s', "Local login as $authuser from 
$acpthost") if ($use_syslog);
                        }
                else {
                        $localauth_user = undef;

Attachment: signature.asc
Description: Digital signature

Reply via email to