Author: bebuild
Date: Mon Oct 20 09:24:06 2014
New Revision: 426015

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=426015
Log:
Merge 425985

Modified:
    tags/1.8.31.1/   (props changed)
    tags/1.8.31.1/ChangeLog
    tags/1.8.31.1/UPGRADE.txt
    tags/1.8.31.1/main/tcptls.c
    tags/1.8.31.1/res/res_jabber.c

Propchange: tags/1.8.31.1/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 20 09:24:06 2014
@@ -1,1 +1,2 @@
+/branches/1.8:425985
 /trunk:394552,394567

Modified: tags/1.8.31.1/ChangeLog
URL: 
http://svnview.digium.com/svn/asterisk/tags/1.8.31.1/ChangeLog?view=diff&rev=426015&r1=426014&r2=426015
==============================================================================
--- tags/1.8.31.1/ChangeLog (original)
+++ tags/1.8.31.1/ChangeLog Mon Oct 20 09:24:06 2014
@@ -1,3 +1,29 @@
+2014-10-20  Asterisk Development Team <[email protected]>
+
+       * Asterisk 1.8.31.1 Released.
+
+       * AST-2014-011: Fix POODLE security issues
+
+         There are two aspects to the vulnerability:
+         (1) res_jabber/res_xmpp use SSLv3 only. This patch updates the module
+             to use TLSv1+. At this time, it does not refactor res_jabber/
+             res_xmpp to use the TCP/TLS core, which should be done as an
+             improvement at a latter date.
+         (2) The TCP/TLS core, when tlsclientmethod/sslclientmethod is left
+             unspecified, will default to the OpenSSL SSLv23_method. This
+             method allows for all encryption methods, including SSLv2/SSLv3.
+             A MITM can exploit this by forcing a fallback to SSLv3, which
+             leaves the server vulnerable to POODLE. This patch adds WARNINGS
+             if a user uses SSLv2/SSLv3 in their configuration, and explicitly
+             disables SSLv2/SSLv3 if using SSLv23_method.
+
+         For TLS clients, Asterisk will default to TLSv1+ and WARN if SSLv2 or
+         SSLv3 is explicitly chosen. For TLS servers, Asterisk will no longer
+         support SSLv2 or SSLv3.
+
+         Much thanks to abelbeck for reporting the vulnerability and providing
+         a patch for the res_jabber/res_xmpp modules.
+
 2014-09-24  Asterisk Development Team <[email protected]>
 
        * Asterisk 1.8.31.0 Released.

Modified: tags/1.8.31.1/UPGRADE.txt
URL: 
http://svnview.digium.com/svn/asterisk/tags/1.8.31.1/UPGRADE.txt?view=diff&rev=426015&r1=426014&r2=426015
==============================================================================
--- tags/1.8.31.1/UPGRADE.txt (original)
+++ tags/1.8.31.1/UPGRADE.txt Mon Oct 20 09:24:06 2014
@@ -18,6 +18,18 @@
 ===
 ===========================================================
 
+from 1.8.31.0 to 1.8.31.1:
+
+* Due to the POODLE vulnerability (see 
+  https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3566), the
+  default TLS method for TLS clients will no longer allow SSLv3. As
+  SSLv2 was already deprecated, it is no longer allowed by default as
+  well. TLS servers no longer allow SSLv2 or SSLv3 connections. This
+  affects the chan_sip channel driver, AMI, and the Asterisk HTTP server.
+
+* The res_jabber resource module no longer uses SSLv3 to connect to an
+  XMPP server. It will now only use TLSv1 or later methods.
+
 from 1.8.28.2 to 1.8.29.0:
 * Added the inband_on_setup_ack compatibility option to chan_dahdi.conf to
   deal with switches that don't send an inband progress indication in the

Modified: tags/1.8.31.1/main/tcptls.c
URL: 
http://svnview.digium.com/svn/asterisk/tags/1.8.31.1/main/tcptls.c?view=diff&rev=426015&r1=426014&r2=426015
==============================================================================
--- tags/1.8.31.1/main/tcptls.c (original)
+++ tags/1.8.31.1/main/tcptls.c Mon Oct 20 09:24:06 2014
@@ -741,6 +741,8 @@
        cfg->enabled = 0;
        return 0;
 #else
+       int disable_ssl = 0;
+
        if (!cfg->enabled)
                return 0;
 
@@ -755,22 +757,21 @@
        if (client) {
 #ifndef OPENSSL_NO_SSL2
                if (ast_test_flag(&cfg->flags, AST_SSL_SSLV2_CLIENT)) {
+                       ast_log(LOG_WARNING, "Usage of SSLv2 is discouraged due 
to known vulnerabilities. Please use 'tlsv1' or leave the TLS method 
unspecified!\n");
                        cfg->ssl_ctx = SSL_CTX_new(SSLv2_client_method());
                } else
 #endif
                if (ast_test_flag(&cfg->flags, AST_SSL_SSLV3_CLIENT)) {
+                       ast_log(LOG_WARNING, "Usage of SSLv3 is discouraged due 
to known vulnerabilities. Please use 'tlsv1' or leave the TLS method 
unspecified!\n");
                        cfg->ssl_ctx = SSL_CTX_new(SSLv3_client_method());
                } else if (ast_test_flag(&cfg->flags, AST_SSL_TLSV1_CLIENT)) {
                        cfg->ssl_ctx = SSL_CTX_new(TLSv1_client_method());
                } else {
-                       /* SSLv23_client_method() sends SSLv2, this was the 
original
-                        * default for ssl clients before the option was given 
to
-                        * pick what protocol a client should use.  In order not
-                        * to break expected behavior it remains the default. */
+                       disable_ssl = 1;
                        cfg->ssl_ctx = SSL_CTX_new(SSLv23_client_method());
                }
        } else {
-               /* SSLv23_server_method() supports TLSv1, SSLv2, and SSLv3 
inbound connections. */
+               disable_ssl = 1;
                cfg->ssl_ctx = SSL_CTX_new(SSLv23_server_method());
        }
 
@@ -778,6 +779,17 @@
                ast_debug(1, "Sorry, SSL_CTX_new call returned null...\n");
                cfg->enabled = 0;
                return 0;
+       }
+
+       /* Due to the POODLE vulnerability, completely disable
+        * SSLv2 and SSLv3 if we are not explicitly told to use
+        * them. SSLv23_*_method supports TLSv1+.
+        */
+       if (disable_ssl) {
+               long ssl_opts;
+
+               ssl_opts = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
+               SSL_CTX_set_options(cfg->ssl_ctx, ssl_opts);
        }
 
        SSL_CTX_set_verify(cfg->ssl_ctx,

Modified: tags/1.8.31.1/res/res_jabber.c
URL: 
http://svnview.digium.com/svn/asterisk/tags/1.8.31.1/res/res_jabber.c?view=diff&rev=426015&r1=426014&r2=426015
==============================================================================
--- tags/1.8.31.1/res/res_jabber.c (original)
+++ tags/1.8.31.1/res/res_jabber.c Mon Oct 20 09:24:06 2014
@@ -1240,14 +1240,17 @@
 {
        int ret;
        int sock;
+       long ssl_opts;
 
        ast_debug(1, "Starting TLS handshake\n");
 
        /* Choose an SSL/TLS protocol version, create SSL_CTX */
-       client->ssl_method = SSLv3_method();
+       client->ssl_method = SSLv23_method();
        if (!(client->ssl_context = SSL_CTX_new((SSL_METHOD *) 
client->ssl_method))) {
                return IKS_NET_TLSFAIL;
        }
+       ssl_opts = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
+       SSL_CTX_set_options(client->ssl_context, ssl_opts);
 
        /* Create new SSL session */
        if (!(client->ssl_session = SSL_new(client->ssl_context))) {


-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

svn-commits mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/svn-commits

Reply via email to