Add #201: Add an action to change the trusted-cas-file for a section
[privoxy.git] / doc / webserver / announce.txt
1                Announcing Privoxy 3.0.33 stable
2 --------------------------------------------------------------------
3
4 Privoxy 3.0.33 fixes an XSS issue, multiple DoS issues and a
5 couple of other bugs. The issues also affect earlier Privoxy releases.
6 Privoxy 3.0.33 also comes with a couple of general improvements and
7 new features.
8
9 --------------------------------------------------------------------
10 ChangeLog for Privoxy 3.0.33
11 --------------------------------------------------------------------
12 - Security/Reliability:
13   - cgi_error_no_template(): Encode the template name to prevent
14     XSS (cross-site scripting) when Privoxy is configured to servce
15     the user-manual itself.
16     Commit 0e668e9409c. OVE-20211102-0001. CVE-2021-44543.
17     Reported by: Artem Ivanov
18   - get_url_spec_param(): Free memory of compiled pattern spec
19     before bailing.
20     Reported by Joshua Rogers (Opera) who also provided the fix.
21     Commit 652b4b7cb0. OVE-20211201-0003. CVE-2021-44540.
22   - process_encrypted_request_headers(): Free header memory when
23     failing to get the request destination.
24     Reported by Joshua Rogers (Opera) who also provided the fix.
25     Commit 0509c58045. OVE-20211201-0002. CVE-2021-44541.
26   - send_http_request(): Prevent memory leaks when handling errors
27     Reported by Joshua Rogers (Opera) who also provided the fix.
28     Commit c48d1d6d08. OVE-20211201-0001. CVE-2021-44542.
29
30 - Bug fixes:
31   - handle_established_connection(): Skip the poll()/select() calls
32     if TLS data is pending on the server socket. The TLS library may
33     have already consumed all the data from the server response in
34     which case poll() and select() will not detect that data is
35     available to be read.
36     Fixes SF bug #926 reported by Wen Yue.
37   - continue_https_chat(): Update csp->server_connection.request_sent
38     after sending the request to make sure the latency is calculated
39     correctly. Previously https connections were not reused after
40     timeout seconds after the first request made on the connection.
41   - free_pattern_spec(): Don't try to free an invalid pointer
42     when unloading an action file with a TAG pattern while
43     Privoxy has been compiled without FEATURE_PCRE_HOST_PATTERNS.
44     Closes: SF patch request #147. Patch by Maxim Antonov.
45   - Adjust build_request_line() to create a CONNECT request line when
46     https-inspecting and forwarding to a HTTP proxy.
47     Fixes SF bug #925 reported by Wen Yue.
48   - load_config(): Add a space that was missing in a log message.
49   - read_http_request_body(): Fix two error messages that used an
50     incorrect variable.
51   - If the the response is chunk-encoded, ignore the Content-Length
52     header sent by the server.
53     Allows to load https://redmine.lighttpd.net/ with filtering enabled.
54
55 - General improvements:
56   - Allow to edit the add-header action through the CGI editor by
57     generalizing the code that got added with the suppress-tag action.
58     Closes SF patch request #146. Patch by Maxim Antonov.
59   - Add a CGI handler for /wpad.dat that returns a
60     Proxy Auto-Configuration (PAC) file.
61     Among other things, it can be used to instruct clients
62     through DHCP to use Privoxy as proxy.
63     For example with the dnsmasq option:
64     dhcp-option=252,http://config.privoxy.org/wpad.dat
65     Initial patch by Richard Schneidt.
66   - Don't log the applied actions in process_encrypted_request()
67     Log them in continue_https_chat() instead to mirror chat().
68     Prevents the applied actions from getting logged twice
69     for the first request on an https-inspected connection.
70   - OpenSSL generate_host_certificate(): Use config.privoxy.org as Common Name
71     Org and Org Unit if the real host name is too long to get accepted by OpenSSL.
72     Clients should only care about the Subject Alternative Name
73     anyway and we can continue to use the real host name for it.
74     Reported by Miles Wen on privoxy-users@.
75   - Establish the TLS connection with the client earlier and decide
76     how to route the request afterwards. This allows to change the
77     forwarding settings based on information from the https-inspected
78     request, for example the path.
79   - listen_loop(): When shutting down gracefully, close listening ports
80     before waiting for the threads to exit. Allows to start a second
81     Privoxy with the same config file while the first Privoxy is still
82     running.
83   - serve(): Close the client socket as well if the server socket
84     for an inspected connection has been closed. Privoxy currently
85     can't establish a new server connection when the client socket
86     is reused and would drop the connection in continue_https_chat()
87     anyway.
88   - Don't disable redirect checkers in redirect_url().
89     Disable them in handle_established_connection() instead.
90     Doing it in redirect_url() prevented the +redirect{} and
91     +fast-redirects{} actions from being logged with LOG_LEVEL_ACTIONS.
92   - handle_established_connection(): Slightly improve a comment.
93   - handle_established_connection(): Fix a comment.
94   - socks5_connect(): Fix indentation.
95   - handle_established_connection(): Improve an error message.
96   - create_pattern_spec(): Fix ifdef indentation.
97   - Fix comment typos.
98   - process_encrypted_request(): Improve a log message.
99     The function only processes request headers and there
100     may still be unread request body data left to process.
101   - chat(): Log the applied actions before deciding how to forward the request.
102   - parse_time_header(): Silence a coverity complaint when building without assertions.
103   - receive_encrypted_request_headers(): Improve a log message.
104   - mbedTLS get_ciphersuites_from_string(): Use strlcpy() instead of strncpy().
105     Previously the terminating NUL wasn't copied which resulted
106     in a compiler warning. This didn't cause actual problems as
107     the target buffer was initialized by zalloc_or_die() so the
108     last byte of the target buffer was NUL already.
109     Actually copying the terminating NUL seems clearer, though.
110   - Remove compiler warnings. "log_error(LOG_LEVEL_FATAL, ..."
111     doesn't return but apparently the compiler doesn't know that.
112     Get rid of several "this statement may fall through
113     [-Wimplicit-fallthrough=]" warnings.
114   - Store the PEM certificate in a dynamically allocated buffer
115     when https-inspecting. Should prevent errors like:
116     2021-03-16 22:36:19.148 7f47bbfff700 Error: X509 PEM cert len 16694 is larger than buffer len 16383
117     As a bonus it should slightly reduce the memory usage as most
118     certificates are smaller than the previously used fixed buffer.
119     Reported by: Wen Yue
120   - OpenSSL generate_host_certificate(): Fix two error messsages.
121   - Improve description of handle_established_connection()
122   - OpenSSL ssl_store_cert(): Translate EVP_PKEY_EC to a string.
123   - OpenSSL ssl_store_cert(): Remove pointless variable initialization.
124   - OpenSSL ssl_store_cert(): Initialize pointer with NULL instead of 0.
125
126 - Action file improvements:
127   - Disable fast-redirects for .microsoftonline.com/.
128   - Disable fast-redirects for idp.springer.com/.
129   - Disable fast-redirects for .zeit.de/zustimmung.
130   - Unblock adv-archiv.dfn-cert.de/.
131   - Block requests to eu-tlp01.kameleoon.eu/.
132   - Block requests to fpa-events.arstechnica.com/.
133   - Unblock nlnet.nl/.
134   - Unblock adguard.com/.
135
136 - Privoxy-Log-Parser:
137   - Highlight 'Socket timeout 3 reached: http://127.0.0.1:20000/no-filter/chunked-content/36'.
138   - Improve documentation for inactivity-detection mode.
139   - Detect date changes when looking for inactivity.
140   - Add a --passed-request-statistics-threshold option
141     that can be set to get statistics for requests that
142     were passed.
143   - Add a "inactivity detection" mode which can be useful
144     for debugging purposes.
145   - Bump version to 0.9.4.
146   - Only run print_intro() and print_outro() when syntax highlighting.
147   - Rephrase a sentence in the documentation.
148   - Highlight 'Client socket 7 is no longer usable. The server socket has been closed.'.
149   - Clarify --statistics output by explicitly mentioning that
150     the status codes sent by the server may differ from the ones
151     in "debug 512" messages.
152   - Fix typo in the --statistics output.
153   - Remove an unused variable.
154   - Highlight 'The peer notified us that the connection on socket 11 is going to be closed'.
155
156 - Privoxy-Regression-Test:
157   - Remove duplicated word in a comment.
158
159 - regression-tests.action:
160   - Add fetch test for http://p.p/wpad.dat.
161   - Bump for-privoxy-version to 3.0.33 which introduced the wpad.dat support.
162   - Add more tests for the '/send-banner' code.
163   - Add test for OVE-20210203-0001.
164   - Add a test for CVE-2021-20217.
165
166 - uagen:
167   - Bump generated Firefox version to 91 (ESR).
168   - Bump version to 1.2.3.
169   - Bump copyright.
170
171 - Build system:
172   - configure: Bump SOURCE_DATE_EPOCH.
173   - GNUmakefile.in: Fix typo.
174   - configure: Add another warning in case --disable-pthread
175     is used while POSIX threads are available.
176     Various features don't even compile when not using threads.
177   - Add configure option to enable MemorySanitizer.
178   - Add configure option to enable UndefinedBehaviorSanitizer.
179   - Add configure option to enable AddressSanitizer.
180   - Bump copyright.
181   - Add a configure option to disable pcre JIT compilation.
182     While JIT compilation makes filtering faster it can
183     cause false-positive valgrind complaints.
184     As reported by Gwyn Ciesla in SF bug 924 it also can
185     cause problems when the SELinux policy does not grant
186     Privoxy "execmem" privileges.
187   - configure: Remove obsolete RPM_BASE check.
188
189 - Windows build system:
190   - Update the build script to use mbed tls version 2.6.11.
191   - Update build script to use the final 8.45 pcre library.
192   - Put all the '--enable-xxx' options in the configure call together.
193
194 - macOS build system:
195   - The OSXPackageBuilder repository has been updated and
196     can be used to create macOS packages again.
197
198 - Documentation:
199   - contacting: Remove obsolete reference to announce.sgml.
200   - contacting: Request that the browser cache is cleared before
201     producing a log file for submission.
202   - Sponsor FAQ: Note that Privoxy users may follow sponsor links
203     without Referer header set.
204   - newfeatures: Clarify that https inspection also allows to
205     filter https responses.
206   - developer-manual: Mention that announce.txt should be updated
207     when doing a release.
208   - config: Explicitly mention that the CGI pages disclosing the
209     ca-password can be blocked and upgrade the disclosure paragraphs
210     to a warning.
211   - Put all the requested debug options in the config file.
212     Section 11.1 of the Privoxy user manual lists all the debug
213     options that should be enabled when reporting problems or requesting support.
214     Make it easier for users to do the right thing by having all those
215     options present in the config.
216   - Update TODO list item #184 to note that WolfSSL support will
217     (hopefully) appear after the 3.0.34 release.
218   - Update max-client-connections's description.
219     On modern systems other than Windows Privoxy should
220     use poll() in which case the FD_SETSIZE value isn't
221     releveant.
222   - Add a warning that the socket-timeout does not apply
223     to operations done by TLS libraries.
224   - Make documentation slightly less "offensive" for some people
225     by avoiding the word "hell".
226
227 -----------------------------------------------------------------
228 About Privoxy:
229 -----------------------------------------------------------------
230
231 Privoxy is a non-caching web proxy with advanced filtering capabilities for
232 enhancing privacy, modifying web page data and HTTP headers, controlling
233 access, and removing ads and other obnoxious Internet junk. Privoxy has a
234 flexible configuration and can be customized to suit individual needs and
235 tastes. It has application for both stand-alone systems and multi-user
236 networks.
237
238 Privoxy is Free Software and licensed under the GNU GPLv2.
239
240 Our TODO list is rather long. Helping hands and donations are welcome:
241
242   * https://www.privoxy.org/participate
243
244   * https://www.privoxy.org/donate
245
246 At present, Privoxy is known to run on Windows 95 and later versions
247 (98, ME, 2000, XP, Vista, Windows 7, Windows 10 etc.), GNU/Linux
248 (RedHat, SuSE, Debian, Fedora, Gentoo, Slackware and others),
249 Mac OS X (10.4 and upwards on PPC and Intel processors), Haiku,
250 DragonFly, ElectroBSD, FreeBSD, NetBSD, OpenBSD, Solaris,
251 and various other flavors of Unix.
252
253 In addition to the core features of ad blocking and cookie management,
254 Privoxy provides many supplemental features, that give the end-user
255 more control, more privacy and more freedom:
256
257   *  Supports "Connection: keep-alive". Outgoing connections can be kept
258      alive independently from the client. Currently not available on all
259      platforms.
260
261   *  Supports IPv6, provided the operating system does so too,
262      and the configure script detects it.
263
264   *  Supports tagging which allows to change the behaviour based on client
265      and server headers.
266
267   *  Supports https inspection which allows to filter https requests.
268
269   *  Can be run as an "intercepting" proxy, which obviates the need to
270      configure browsers individually.
271
272   *  Sophisticated actions and filters for manipulating both server and
273      client headers.
274
275   *  Can be chained with other proxies.
276
277   *  Integrated browser based configuration and control utility at
278      http://config.privoxy.org/ (shortcut: http://p.p/). Browser-based
279      tracing of rule and filter effects. Remote toggling.
280
281   *  Web page filtering (text replacements, removes banners based on size,
282      invisible "web-bugs" and HTML annoyances, etc.)
283
284   *  Modularized configuration that allows for standard settings and user
285      settings to reside in separate files, so that installing updated actions
286      files won't overwrite individual user settings.
287
288   *  Support for Perl Compatible Regular Expressions in the configuration
289      files, and a more sophisticated and flexible configuration syntax.
290
291   *  GIF de-animation.
292
293   *  Bypass many click-tracking scripts (avoids script redirection).
294
295   *  User-customizable HTML templates for most proxy-generated pages (e.g.
296      "blocked" page).
297
298   *  Auto-detection and re-reading of config file changes.
299     
300   *  Most features are controllable on a per-site or per-location basis.
301
302
303 Home Page: 
304    https://www.privoxy.org/
305
306   - Privoxy Developers <privoxy-devel@lists.privoxy.org>