Package: squid3
Version: 3.4.8-5
Severity: grave
Tags: security patch upstream

Upstream fixed a security issue in digest_authentication that can allow 
disabled user or users
with changed password to access the squid service with old credentials.

See http://bugs.squid-cache.org/show_bug.cgi?id=4066 for upstream bug details.

-- System Information:
Debian Release: 8.0
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.16.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: sysvinit (via /sbin/init)

Versions of packages squid3 depends on:
ii  adduser                  3.113+nmu3
ii  libc6                    2.19-13
ii  libcap2                  1:2.24-6
ii  libcomerr2               1.42.12-1
ii  libdb5.3                 5.3.28-9
ii  libecap2                 0.2.0-3
ii  libexpat1                2.1.0-6+b3
ii  libgcc1                  1:4.9.2-10
ii  libgssapi-krb5-2         1.12.1+dfsg-16
ii  libk5crypto3             1.12.1+dfsg-16
ii  libkrb5-3                1.12.1+dfsg-16
ii  libldap-2.4-2            2.4.40-3
ii  libltdl7                 2.4.2-1.11
ii  libnetfilter-conntrack3  1.0.4-1
ii  libnettle4               2.7.1-5
ii  libpam0g                 1.1.8-3.1
ii  libsasl2-2               2.1.26.dfsg1-12
ii  libstdc++6               4.9.2-10
ii  libxml2                  2.9.2+dfsg1-1+b1
ii  logrotate                3.8.7-1+b1
ii  lsb-base                 4.1+Debian13+nmu1
ii  netbase                  5.3
ii  squid3-common            3.4.8-5

squid3 recommends no packages.

Versions of packages squid3 suggests:
pn  resolvconf   <none>
ii  smbclient    2:4.1.13+dfsg-4
pn  squid-cgi    <none>
pn  squid-purge  <none>
pn  squidclient  <none>
pn  ufw          <none>
pn  winbindd     <none>

-- no debconf information
------------------------------------------------------------
revno: 13211
revision-id: squ...@treenet.co.nz-20150119164241-7q1rhjwxjygeq2zf
parent: squ...@treenet.co.nz-20150118110213-zbcrupnx78b4y9mq
fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4066
author: Frederic Bourgeois <fredbm...@free.fr>
committer: Amos Jeffries <squ...@treenet.co.nz>
branch nick: 3.4
timestamp: Mon 2015-01-19 08:42:41 -0800
message:
  Bug 4066: Digest auth nonce indefinite rollover
------------------------------------------------------------
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: squ...@treenet.co.nz-20150119164241-7q1rhjwxjygeq2zf
# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.4
# testament_sha1: ac9315f664d6d3037dcf6119c44bcade866be0a8
# timestamp: 2015-01-19 16:50:57 +0000
# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.4
# base_revision_id: squ...@treenet.co.nz-20150118110213-\
#   zbcrupnx78b4y9mq
# 
# Begin patch
=== modified file 'src/auth/digest/UserRequest.cc'
--- src/auth/digest/UserRequest.cc	2015-01-18 11:02:13 +0000
+++ src/auth/digest/UserRequest.cc	2015-01-19 16:42:41 +0000
@@ -152,10 +152,14 @@
     }
 
     /* check for stale nonce */
-    if (!authDigestNonceIsValid(digest_request->nonce, digest_request->nc)) {
-        debugs(29, 3, "user '" << auth_user->username() << "' validated OK but nonce stale");
-        auth_user->credentials(Auth::Handshake);
-        digest_request->setDenyMessage("Stale nonce");
+    /* check Auth::Pending to avoid loop */
+
+    if (!authDigestNonceIsValid(digest_request->nonce, digest_request->nc) && user()->credentials() != Auth::Pending) {
+        debugs(29, 3, auth_user->username() << "' validated OK but nonce stale: " << digest_request->nonceb64);
+        /* Pending prevent banner and makes a ldap control */
+        auth_user->credentials(Auth::Pending);
+        nonce->flags.valid = false;
+        authDigestNoncePurge(nonce);
         return;
     }
 

=== modified file 'src/auth/digest/auth_digest.cc'
--- src/auth/digest/auth_digest.cc	2014-03-05 02:48:25 +0000
+++ src/auth/digest/auth_digest.cc	2015-01-19 16:42:41 +0000
@@ -1038,12 +1038,7 @@
         debugs(29, 2, "Username for the nonce does not equal the username for the request");
         nonce = NULL;
     }
-    /* check for stale nonce */
-    if (authDigestNonceIsStale(nonce)) {
-        debugs(29, 3, "The received nonce is stale from " << username);
-        digest_request->setDenyMessage("Stale nonce");
-        nonce = NULL;
-    }
+
     if (!nonce) {
         /* we couldn't find a matching nonce! */
         debugs(29, 2, "Unexpected or invalid nonce received from " << username);

Reply via email to