summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--README2
-rw-r--r--configure.ac2
-rw-r--r--dtls.c4
-rw-r--r--radsecproxy.conf.5.xml19
5 files changed, 29 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 5f044df..938b911 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,15 @@
-2012-09-14 1.6.1-dev
+2012-10-25 1.6.2
+ Bug fixes (security):
+ - Fix the issue with verification of clients when using multiple
+ 'tls' config blocks (RADSECPROXY-43) for DTLS too. Fixes
+ CVE-2012-4523. Reported by Raphael Geissert.
+
+2012-09-14 1.6.1
Bug fixes (security):
- When verifying clients, don't consider config blocks with CA
settings ('tls') which differ from the one used for verifying the
- certificate chain. Reported by Ralf Paffrath. (RADSECPROXY-43)
+ certificate chain. Reported by Ralf Paffrath. (RADSECPROXY-43,
+ CVE-2012-4523).
Bug fixes:
- Make naptr-eduroam.sh check NAPTR type case insensitively.
diff --git a/README b/README
index 2423dda..b15ec68 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-This is unreleased radsecproxy 1.6.1-dev.
+This is unreleased radsecproxy 1.7-dev.
radsecproxy is a generic RADIUS proxy that supports both UDP and TLS
(RadSec) RADIUS transports. There is also experimental support for
diff --git a/configure.ac b/configure.ac
index 4326ecc..e5df020 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ dnl Copyright (c) 2006-2010, UNINETT AS
dnl Copyright (c) 2010-2012, NORDUnet A/S
dnl See LICENSE for licensing information.
-AC_INIT(radsecproxy, 1.6.1-dev, radsecproxy@uninett.no)
+AC_INIT(radsecproxy, 1.7-dev, radsecproxy@uninett.no)
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE
AC_PROG_CC
diff --git a/dtls.c b/dtls.c
index 9e769fc..fdc99ab 100644
--- a/dtls.c
+++ b/dtls.c
@@ -350,6 +350,7 @@ void *dtlsservernew(void *arg) {
X509 *cert = NULL;
SSL_CTX *ctx = NULL;
uint8_t delay = 60;
+ struct tls *accepted_tls = NULL;
debug(DBG_DBG, "dtlsservernew: starting");
conf = find_clconf(handle, (struct sockaddr *)&params->addr, NULL);
@@ -363,10 +364,11 @@ void *dtlsservernew(void *arg) {
cert = verifytlscert(ssl);
if (!cert)
goto exit;
+ accepted_tls = conf->tlsconf;
}
while (conf) {
- if (verifyconfcert(cert, conf)) {
+ if (accepted_tls == conf->tlsconf && verifyconfcert(cert, conf)) {
X509_free(cert);
client = addclient(conf, 1);
if (client) {
diff --git a/radsecproxy.conf.5.xml b/radsecproxy.conf.5.xml
index 44ea1c7..0c713ea 100644
--- a/radsecproxy.conf.5.xml
+++ b/radsecproxy.conf.5.xml
@@ -2,14 +2,14 @@
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<refentry>
<refentryinfo>
- <date>2012-05-23</date>
+ <date>2012-10-25</date>
</refentryinfo>
<refmeta>
<refentrytitle>
<application>radsecproxy.conf</application>
</refentrytitle>
<manvolnum>5</manvolnum>
- <refmiscinfo>radsecproxy 1.6.1-dev</refmiscinfo>
+ <refmiscinfo>radsecproxy 1.7-dev</refmiscinfo>
</refmeta>
<refnamediv>
<refname>
@@ -531,8 +531,10 @@ blocktype name {
<literal>secret</literal> is the shared RADIUS key used with
this client. If the secret contains whitespace, the value must
be quoted. This option is optional for TLS/DTLS and if omitted
- will default to "mysecret". Note that the default value of
- <literal>secret</literal> will change in an upcoming release.
+ will default to "radsec". (Note that using a secret other than
+ "radsec" for TLS is a violation of the standard (RFC 6614) and
+ that the proposed standard for DTLS stipulates that the secret
+ must be "radius/dtls".)
</para>
<para>
For a TLS/DTLS client you may also specify the
@@ -544,6 +546,15 @@ blocktype name {
<literal>default</literal>. If the specified TLS block name does
not exist, or the option is not specified and none of the
defaults exist, the proxy will exit with an error.
+
+ NOTE: All versions of radsecproxy up to and including 1.6
+ erroneously verify client certificate chains using the CA in the
+ very first matching client block regardless of which block is
+ used for the final decision. This was changed in version 1.6.1
+ so that a client block with a different <literal>tls</literal>
+ option than the first matching client block is no longer
+ considered for verification of clients.
+
</para>
<para>
For a TLS/DTLS client, the option