--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: wheezy
User: release.debian....@packages.debian.org
Usertags: pu
I prepared a patch against privoxy 3.0.19-2+deb7u3, which closes the
CVE-2013-2503, see
https://security-tracker.debian.org/tracker/CVE-2013-2503
The patch is attached.
The security team asked me to place it here, since it's a minor issue
and no DSA is required.
Please tell me, if I'm allowed to upload
Tschoeeee
Roland
diff -Nru privoxy-3.0.19/debian/changelog privoxy-3.0.19/debian/changelog
--- privoxy-3.0.19/debian/changelog 2016-01-22 17:51:41.000000000 +0100
+++ privoxy-3.0.19/debian/changelog 2016-03-09 14:56:58.000000000 +0100
@@ -1,3 +1,12 @@
+privoxy (3.0.19-2+deb7u4) stable; urgency=high
+
+ * 42_CVE-2013-2503: Proxy authentication headers are removed unless the
+ new directive enable-proxy-authentication-forwarding is used.
+ Forwarding the headers potentionally allows malicious sites to trick
+ the user into providing it with login information (Closes: #702896).
+
+ -- Roland Rosenfeld <rol...@debian.org> Tue, 08 Mar 2016 08:52:26 +0100
+
privoxy (3.0.19-2+deb7u3) wheezy-security; urgency=high
* 40_CVE-2016-1982: Prevent invalid reads in case of corrupt
diff -Nru privoxy-3.0.19/debian/patches/42_CVE-2013-2503.patch privoxy-3.0.19/debian/patches/42_CVE-2013-2503.patch
--- privoxy-3.0.19/debian/patches/42_CVE-2013-2503.patch 1970-01-01 01:00:00.000000000 +0100
+++ privoxy-3.0.19/debian/patches/42_CVE-2013-2503.patch 2016-03-09 14:56:58.000000000 +0100
@@ -0,0 +1,238 @@
+Author: Fabian Keil <f...@fabiankeil.de>
+Description: CVE-2013-2503: Proxy authentication headers are removed
+ unless the new directive enable-proxy-authentication-forwarding is
+ used. Forwarding the headers potentionally allows malicious sites to
+ trick the user into providing it with login information.
+Origin: upstream, picked from CVS
+--- a/config
++++ b/config
+@@ -1125,6 +1125,46 @@ enforce-blocks 0
+ #
+ buffer-limit 4096
+ #
++# 4.9. enable-proxy-authentication-forwarding
++# ============================================
++#
++# Specifies:
++#
++# Whether or not proxy authentication through Privoxy should
++# work.
++#
++# Type of value:
++#
++# 0 or 1
++#
++# Default value:
++#
++# 0
++#
++# Effect if unset:
++#
++# Proxy authentication headers are removed.
++#
++# Notes:
++#
++# Privoxy itself does not support proxy authentication, but can
++# allow clients to authenticate against Privoxy's parent proxy.
++#
++# By default Privoxy (3.0.21 and later) don't do that and remove
++# Proxy-Authorization headers in requests and Proxy-Authenticate
++# headers in responses to make it harder for malicious sites to
++# trick inexperienced users into providing login information.
++#
++# If this option is enabled the headers are forwarded.
++#
++# Enabling this option is not recommended if there is no parent
++# proxy that requires authentication or if the local network
++# between Privoxy and the parent proxy isn't trustworthy. If
++# proxy authentication is only required for some requests, it is
++# recommended to use a client header filter to remove the
++# authentication headers for requests where they aren't needed.
++#
++enable-proxy-authentication-forwarding 0
+ #
+ # 5. FORWARDING
+ # ==============
+--- a/doc/source/p-config.sgml
++++ b/doc/source/p-config.sgml
+@@ -1888,6 +1888,67 @@ ACLs: permit-access and deny-access</tit
+ <![%config-file;[<literallayout>@@buffer-limit 4096</literallayout>]]>
+ </sect3>
+
++<!-- ~~~~~ New section ~~~~~ -->
++<sect3 renderas="sect4" id="enable-proxy-authentication-forwarding"><title>enable-proxy-authentication-forwarding</title>
++<variablelist>
++ <varlistentry>
++ <term>Specifies:</term>
++ <listitem>
++ <para>
++ Whether or not proxy authentication through &my-app; should work.
++ </para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term>Type of value:</term>
++ <listitem>
++ <para>0 or 1</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term>Default value:</term>
++ <listitem>
++ <para>0</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term>Effect if unset:</term>
++ <listitem>
++ <para>
++ Proxy authentication headers are removed.
++ </para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term>Notes:</term>
++ <listitem>
++ <para>
++ Privoxy itself does not support proxy authentication, but can
++ allow clients to authenticate against Privoxy's parent proxy.
++ </para>
++ <para>
++ By default Privoxy (3.0.21 and later) don't do that and remove
++ Proxy-Authorization headers in requests and Proxy-Authenticate
++ headers in responses to make it harder for malicious sites to
++ trick inexperienced users into providing login information.
++ </para>
++ <para>
++ If this option is enabled the headers are forwarded.
++ </para>
++ <para>
++ Enabling this option is <emphasis>not recommended</emphasis> if there is
++ no parent proxy that requires authentication or if the local network between
++ Privoxy and the parent proxy isn't trustworthy. If proxy authentication is
++ only required for some requests, it is recommended to use a client header filter
++ to remove the authentication headers for requests where they aren't needed.
++ </para>
++ </listitem>
++ </varlistentry>
++</variablelist>
++
++<![%config-file;[<literallayout>@@enable-proxy-authentication-forwarding 0</literallayout>]]>
++</sect3>
++
+ </sect2>
+
+ <!-- ~ End section ~ -->
+--- a/loadcfg.c
++++ b/loadcfg.c
+@@ -141,6 +141,7 @@ static struct file_list *current_configf
+ #define hash_deny_access 1227333715ul /* "deny-access" */
+ #define hash_enable_edit_actions 2517097536ul /* "enable-edit-actions" */
+ #define hash_enable_compression 3943696946ul /* "enable-compression" */
++#define hash_enable_proxy_authentication_forwarding 4040610791ul /* enable-proxy-authentication-forwarding */
+ #define hash_enable_remote_toggle 2979744683ul /* "enable-remote-toggle" */
+ #define hash_enable_remote_http_toggle 110543988ul /* "enable-remote-http-toggle" */
+ #define hash_enforce_blocks 1862427469ul /* "enforce-blocks" */
+@@ -414,6 +415,7 @@ struct configuration_spec * load_config(
+ config->feature_flags &= ~RUNTIME_FEATURE_SPLIT_LARGE_FORMS;
+ config->feature_flags &= ~RUNTIME_FEATURE_ACCEPT_INTERCEPTED_REQUESTS;
+ config->feature_flags &= ~RUNTIME_FEATURE_EMPTY_DOC_RETURNS_OK;
++ config->feature_flags &= ~RUNTIME_FEATURE_FORWARD_PROXY_AUTHENTICATION_HEADERS;
+ #ifdef FEATURE_COMPRESSION
+ config->feature_flags &= ~RUNTIME_FEATURE_COMPRESSION;
+ /*
+@@ -742,6 +744,19 @@ struct configuration_spec * load_config(
+ break;
+ #endif /* def FEATURE_COMPRESSION */
+
++/* *************************************************************************
++ * enable-proxy-authentication-forwarding 0|1
++ * *************************************************************************/
++ case hash_enable_proxy_authentication_forwarding:
++ if (parse_toggle_state(cmd, arg) == 1)
++ {
++ config->feature_flags |= RUNTIME_FEATURE_FORWARD_PROXY_AUTHENTICATION_HEADERS;
++ }
++ else
++ {
++ config->feature_flags &= ~RUNTIME_FEATURE_FORWARD_PROXY_AUTHENTICATION_HEADERS;
++ }
++ break;
+
+ /* *************************************************************************
+ * enable-remote-toggle 0|1
+--- a/parsers.c
++++ b/parsers.c
+@@ -173,6 +173,7 @@ static jb_err server_connection_adder(st
+ #ifdef FEATURE_CONNECTION_KEEP_ALIVE
+ static jb_err server_proxy_connection_adder(struct client_state *csp);
+ #endif /* def FEATURE_CONNECTION_KEEP_ALIVE */
++static jb_err proxy_authentication(struct client_state *csp, char **header);
+
+ static jb_err create_forged_referrer(char **header, const char *hostport);
+ static jb_err create_fake_referrer(char **header, const char *fake_referrer);
+@@ -222,6 +223,7 @@ static const struct parsers client_patte
+ { "Request-Range:", 14, client_range },
+ { "If-Range:", 9, client_range },
+ { "X-Filter:", 9, client_x_filter },
++ { "Proxy-Authorization:", 20, proxy_authentication },
+ { "*", 0, crunch_client_header },
+ { "*", 0, filter_header },
+ { NULL, 0, NULL }
+@@ -244,6 +246,7 @@ static const struct parsers server_patte
+ { "Transfer-Encoding:", 18, server_transfer_coding },
+ { "content-disposition:", 20, server_content_disposition },
+ { "Last-Modified:", 14, server_last_modified },
++ { "Proxy-Authenticate:", 19, proxy_authentication },
+ { "*", 0, crunch_server_header },
+ { "*", 0, filter_header },
+ { NULL, 0, NULL }
+@@ -1688,6 +1691,36 @@ static jb_err server_proxy_connection(st
+ return JB_ERR_OK;
+ }
+
++
++/*********************************************************************
++ *
++ * Function : proxy_authentication
++ *
++ * Description : Removes headers that are relevant for proxy
++ * authentication unless forwarding them has
++ * been explicitly requested.
++ *
++ * Parameters :
++ * 1 : csp = Current client state (buffers, headers, etc...)
++ * 2 : header = On input, pointer to header to modify.
++ * On output, pointer to the modified header, or NULL
++ * to remove the header. This function frees the
++ * original string if necessary.
++ *
++ * Returns : JB_ERR_OK.
++ *
++ *********************************************************************/
++static jb_err proxy_authentication(struct client_state *csp, char **header)
++{
++ if ((csp->config->feature_flags &
++ RUNTIME_FEATURE_FORWARD_PROXY_AUTHENTICATION_HEADERS) == 0) {
++ log_error(LOG_LEVEL_HEADER,
++ "Forwarding proxy authentication headers is disabled. Crunching: %s", *header);
++ freez(*header);
++ }
++ return JB_ERR_OK;
++}
++
+
+ /*********************************************************************
+ *
+--- a/project.h
++++ b/project.h
+@@ -1199,6 +1199,9 @@ struct access_control_list
+ /** configuration_spec::feature_flags: Buffered content is sent compressed if the client supports it. */
+ #define RUNTIME_FEATURE_COMPRESSION 1024U
+
++/** configuration_spec::feature_flags: Proxy authentication headers are forwarded instead of removed. */
++#define RUNTIME_FEATURE_FORWARD_PROXY_AUTHENTICATION_HEADERS 4096U
++
+ /**
+ * Data loaded from the configuration file.
+ *
diff -Nru privoxy-3.0.19/debian/patches/series privoxy-3.0.19/debian/patches/series
--- privoxy-3.0.19/debian/patches/series 2016-01-22 17:50:51.000000000 +0100
+++ privoxy-3.0.19/debian/patches/series 2016-03-09 14:56:58.000000000 +0100
@@ -14,3 +14,4 @@
39_CVE-2015-1382.patch
40_CVE-2016-1982.patch
41_CVE-2016-1983.patch
+42_CVE-2013-2503.patch
--- End Message ---