|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
commit f18ddf5d82de0ab7591a36e465bc24225776940f
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
Author: David Woodhouse <David.Woodhouse@intel.com>
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
Date: Tue Jul 15 12:54:15 2014 -0400
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
Fix double-free in SPNEGO [CVE-2014-4343]
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
In commit cd7d6b08 ("Verify acceptor's mech in SPNEGO initiator") the
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
pointer sc->internal_mech became an alias into sc->mech_set->elements,
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
which should be considered constant for the duration of the SPNEGO
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
context. So don't free it.
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
CVE-2014-4343:
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
In MIT krb5 releases 1.10 and newer, an unauthenticated remote
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
attacker with the ability to spoof packets appearing to be from a
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
GSSAPI acceptor can cause a double-free condition in GSSAPI initiators
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
(clients) which are using the SPNEGO mechanism, by returning a
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
different underlying mechanism than was proposed by the initiator. At
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
this stage of the negotiation, the acceptor is unauthenticated, and
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
the acceptor's response could be spoofed by an attacker with the
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
ability to inject traffic to the initiator.
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
Historically, some double-free vulnerabilities can be translated into
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
remote code execution, though the necessary exploits must be tailored
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
to the individual application and are usually quite
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
complicated. Double-frees can also be exploited to cause an
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
application crash, for a denial of service. However, most GSSAPI
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
client applications are not vulnerable, as the SPNEGO mechanism is not
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
used by default (when GSS_C_NO_OID is passed as the mech_type argument
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
to gss_init_sec_context()). The most common use of SPNEGO is for
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
HTTP-Negotiate, used in web browsers and other web clients. Most such
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
clients are believed to not offer HTTP-Negotiate by default, instead
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
requiring a whitelist of sites for which it may be used to be
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
configured. If the whitelist is configured to only allow
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
HTTP-Negotiate over TLS connections ("https://"), a successful
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
attacker must also spoof the web server's SSL certificate, due to the
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
way the WWW-Authenticate header is sent in a 401 (Unauthorized)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
response message. Unfortunately, many instructions for enabling
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
HTTP-Negotiate in common web browsers do not include a TLS
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
requirement.
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
CVSSv2 Vector: AV:N/AC:H/Au:N/C:C/I:C/A:C/E:POC/RL:OF/RC:C
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
[kaduk@mit.edu: CVE summary and CVSSv2 vector]
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
ticket: 7969 (new)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
target_version: 1.12.2
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
e152901 |
tags: pullup
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
diff --git a/src/lib/gssapi/spnego/spnego_mech.c b/src/lib/gssapi/spnego/spnego_mech.c
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
index 173c6d2..8f829d8 100644
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
--- a/src/lib/gssapi/spnego/spnego_mech.c
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
+++ b/src/lib/gssapi/spnego/spnego_mech.c
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
@@ -818,7 +818,6 @@ init_ctx_reselect(OM_uint32 *minor_status, spnego_gss_ctx_id_t sc,
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
OM_uint32 tmpmin;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
size_t i;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
- generic_gss_release_oid(&tmpmin, &sc->internal_mech);
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
gss_delete_sec_context(&tmpmin, &sc->ctx_handle,
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
GSS_C_NO_BUFFER);
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
1201bf9 |
|