95f7cfaba880ba1516b1c83032f3ead97243b457
[privoxy.git] / doc / source / changelog.sgml
1 <!--
2  File        :  doc/source/changelog.sgml
3
4  Purpose     :  Entity included in other project documents.
5
6  Copyright (C) 2013-2021 Privoxy Developers https://www.privoxy.org/
7  See LICENSE.
8
9  ======================================================================
10   This file used for inclusion with other documents only.
11  ======================================================================
12
13  If you make changes to this file, please verify the finished
14  docs all display as intended.
15
16  This file is included into:
17
18   user-manual
19 -->
20
21
22 <!--
23  The SGML ChangeLog can be generated with: utils/changelog2doc.pl ChangeLog
24 -->
25
26 <para>
27   <application>Privoxy 3.0.33</application> fixes an XSS issue
28   and multiple DoS issues and a couple of other bugs.
29   The issues also affect earlier Privoxy releases.
30   <application>Privoxy 3.0.33</application> also comes with
31   a couple of general improvements and new features.
32 </para>
33 <para>
34   Changes in <application>Privoxy 3.0.33</application> stable:
35 </para>
36 <para>
37  <itemizedlist>
38   <listitem>
39    <para>
40     Security/Reliability:
41     <itemizedlist>
42     <listitem>
43      <para>
44       cgi_error_no_template(): Encode the template name to prevent
45       XSS (cross-site scripting) when Privoxy is configured to servce
46       the user-manual itself.
47       Commit 0e668e9409c. OVE-20211102-0001. CVE-2021-44543.
48       Reported by: Artem Ivanov
49      </para>
50     </listitem>
51     <listitem>
52      <para>
53       get_url_spec_param(): Free memory of compiled pattern spec
54       before bailing.
55       Reported by Joshua Rogers (Opera) who also provided the fix.
56       Commit 652b4b7cb0. OVE-20211201-0003. CVE-2021-44540.
57      </para>
58     </listitem>
59     <listitem>
60      <para>
61       process_encrypted_request_headers(): Free header memory when
62       failing to get the request destination.
63       Reported by Joshua Rogers (Opera) who also provided the fix.
64       Commit 0509c58045. OVE-20211201-0002. CVE-2021-44541.
65      </para>
66     </listitem>
67     <listitem>
68      <para>
69       send_http_request(): Prevent memory leaks when handling errors
70       Reported by Joshua Rogers (Opera) who also provided the fix.
71       Commit c48d1d6d08. OVE-20211201-0001. CVE-2021-44542.
72      </para>
73      </listitem>
74     </itemizedlist>
75    </para>
76   </listitem>
77   <listitem>
78    <para>
79     Bug fixes:
80     <itemizedlist>
81     <listitem>
82      <para>
83       handle_established_connection(): Skip the poll()/select() calls
84       if TLS data is pending on the server socket. The TLS library may
85       have already consumed all the data from the server response in
86       which case poll() and select() will not detect that data is
87       available to be read.
88       Fixes SF bug #926 reported by Wen Yue.
89      </para>
90     </listitem>
91     <listitem>
92      <para>
93       continue_https_chat(): Update csp->server_connection.request_sent
94       after sending the request to make sure the latency is calculated
95       correctly. Previously https connections were not reused after
96       timeout seconds after the first request made on the connection.
97      </para>
98     </listitem>
99     <listitem>
100      <para>
101       free_pattern_spec(): Don't try to free an invalid pointer
102       when unloading an action file with a TAG pattern while
103       Privoxy has been compiled without FEATURE_PCRE_HOST_PATTERNS.
104       Closes: SF patch request #147. Patch by Maxim Antonov.
105      </para>
106     </listitem>
107     <listitem>
108      <para>
109       Adjust build_request_line() to create a CONNECT request line when
110       https-inspecting and forwarding to a HTTP proxy.
111       Fixes SF bug #925 reported by Wen Yue.
112      </para>
113     </listitem>
114     <listitem>
115      <para>
116       load_config(): Add a space that was missing in a log message.
117      </para>
118     </listitem>
119     <listitem>
120      <para>
121       read_http_request_body(): Fix two error messages that used an
122       incorrect variable.
123      </para>
124     </listitem>
125     <listitem>
126      <para>
127       If the the response is chunk-encoded, ignore the Content-Length
128       header sent by the server.
129       Allows to load https://redmine.lighttpd.net/ with filtering enabled.
130      </para>
131      </listitem>
132     </itemizedlist>
133    </para>
134   </listitem>
135   <listitem>
136    <para>
137     General improvements:
138     <itemizedlist>
139     <listitem>
140      <para>
141       Allow to edit the add-header action through the CGI editor by
142       generalizing the code that got added with the suppress-tag action.
143       Closes SF patch request #146. Patch by Maxim Antonov.
144      </para>
145     </listitem>
146     <listitem>
147      <para>
148       Add a CGI handler for /wpad.dat that returns a
149       Proxy Auto-Configuration (PAC) file.
150       Among other things, it can be used to instruct clients
151       through DHCP to use Privoxy as proxy.
152       For example with the dnsmasq option:
153       dhcp-option=252,http://config.privoxy.org/wpad.dat
154       Initial patch by Richard Schneidt.
155      </para>
156     </listitem>
157     <listitem>
158      <para>
159       Don't log the applied actions in process_encrypted_request()
160       Log them in continue_https_chat() instead to mirror chat().
161       Prevents the applied actions from getting logged twice
162       for the first request on an https-inspected connection.
163      </para>
164     </listitem>
165     <listitem>
166      <para>
167       OpenSSL generate_host_certificate(): Use config.privoxy.org as Common Name
168       Org and Org Unit if the real host name is too long to get accepted by OpenSSL.
169       Clients should only care about the Subject Alternative Name
170       anyway and we can continue to use the real host name for it.
171       Reported by Miles Wen on privoxy-users@.
172      </para>
173     </listitem>
174     <listitem>
175      <para>
176       Establish the TLS connection with the client earlier and decide
177       how to route the request afterwards. This allows to change the
178       forwarding settings based on information from the https-inspected
179       request, for example the path.
180      </para>
181     </listitem>
182     <listitem>
183      <para>
184       listen_loop(): When shutting down gracefully, close listening ports
185       before waiting for the threads to exit. Allows to start a second
186       Privoxy with the same config file while the first Privoxy is still
187       running.
188      </para>
189     </listitem>
190     <listitem>
191      <para>
192       serve(): Close the client socket as well if the server socket
193       for an inspected connection has been closed. Privoxy currently
194       can't establish a new server connection when the client socket
195       is reused and would drop the connection in continue_https_chat()
196       anyway.
197      </para>
198     </listitem>
199     <listitem>
200      <para>
201       Don't disable redirect checkers in redirect_url().
202       Disable them in handle_established_connection() instead.
203       Doing it in redirect_url() prevented the +redirect{} and
204       +fast-redirects{} actions from being logged with LOG_LEVEL_ACTIONS.
205      </para>
206     </listitem>
207     <listitem>
208      <para>
209       handle_established_connection(): Slightly improve a comment.
210      </para>
211     </listitem>
212     <listitem>
213      <para>
214       handle_established_connection(): Fix a comment.
215      </para>
216     </listitem>
217     <listitem>
218      <para>
219       socks5_connect(): Fix indentation.
220      </para>
221     </listitem>
222     <listitem>
223      <para>
224       handle_established_connection(): Improve an error message.
225      </para>
226     </listitem>
227     <listitem>
228      <para>
229       create_pattern_spec(): Fix ifdef indentation.
230      </para>
231     </listitem>
232     <listitem>
233      <para>
234       Fix comment typos.
235      </para>
236     </listitem>
237     <listitem>
238      <para>
239       process_encrypted_request(): Improve a log message.
240       The function only processes request headers and there
241       may still be unread request body data left to process.
242      </para>
243     </listitem>
244     <listitem>
245      <para>
246       chat(): Log the applied actions before deciding how to forward the request.
247      </para>
248     </listitem>
249     <listitem>
250      <para>
251       parse_time_header(): Silence a coverity complaint when building without assertions.
252      </para>
253     </listitem>
254     <listitem>
255      <para>
256       receive_encrypted_request_headers(): Improve a log message.
257      </para>
258     </listitem>
259     <listitem>
260      <para>
261       mbedTLS get_ciphersuites_from_string(): Use strlcpy() instead of strncpy().
262       Previously the terminating NUL wasn't copied which resulted
263       in a compiler warning. This didn't cause actual problems as
264       the target buffer was initialized by zalloc_or_die() so the
265       last byte of the target buffer was NUL already.
266       Actually copying the terminating NUL seems clearer, though.
267      </para>
268     </listitem>
269     <listitem>
270      <para>
271       Remove compiler warnings. "log_error(LOG_LEVEL_FATAL, ..."
272       doesn't return but apparently the compiler doesn't know that.
273       Get rid of several "this statement may fall through
274       [-Wimplicit-fallthrough=]" warnings.
275      </para>
276     </listitem>
277     <listitem>
278      <para>
279       Store the PEM certificate in a dynamically allocated buffer
280       when https-inspecting. Should prevent errors like:
281       2021-03-16 22:36:19.148 7f47bbfff700 Error: X509 PEM cert len 16694 is larger than buffer len 16383
282       As a bonus it should slightly reduce the memory usage as most
283       certificates are smaller than the previously used fixed buffer.
284       Reported by: Wen Yue
285      </para>
286     </listitem>
287     <listitem>
288      <para>
289       OpenSSL generate_host_certificate(): Fix two error messsages.
290      </para>
291     </listitem>
292     <listitem>
293      <para>
294       Improve description of handle_established_connection()
295      </para>
296     </listitem>
297     <listitem>
298      <para>
299       OpenSSL ssl_store_cert(): Translate EVP_PKEY_EC to a string.
300      </para>
301     </listitem>
302     <listitem>
303      <para>
304       OpenSSL ssl_store_cert(): Remove pointless variable initialization.
305      </para>
306     </listitem>
307     <listitem>
308      <para>
309       OpenSSL ssl_store_cert(): Initialize pointer with NULL instead of 0.
310      </para>
311      </listitem>
312     </itemizedlist>
313    </para>
314   </listitem>
315   <listitem>
316    <para>
317     Action file improvements:
318     <itemizedlist>
319     <listitem>
320      <para>
321       Disable fast-redirects for .microsoftonline.com/.
322      </para>
323     </listitem>
324     <listitem>
325      <para>
326       Disable fast-redirects for idp.springer.com/.
327      </para>
328     </listitem>
329     <listitem>
330      <para>
331       Disable fast-redirects for .zeit.de/zustimmung.
332      </para>
333     </listitem>
334     <listitem>
335      <para>
336       Unblock adv-archiv.dfn-cert.de/.
337      </para>
338     </listitem>
339     <listitem>
340      <para>
341       Block requests to eu-tlp01.kameleoon.eu/.
342      </para>
343     </listitem>
344     <listitem>
345      <para>
346       Block requests to fpa-events.arstechnica.com/.
347      </para>
348     </listitem>
349     <listitem>
350      <para>
351       Unblock nlnet.nl/.
352      </para>
353     </listitem>
354     <listitem>
355      <para>
356       Unblock adguard.com/.
357      </para>
358      </listitem>
359     </itemizedlist>
360    </para>
361   </listitem>
362   <listitem>
363    <para>
364     Privoxy-Log-Parser:
365     <itemizedlist>
366     <listitem>
367      <para>
368       Highlight 'Socket timeout 3 reached: http://127.0.0.1:20000/no-filter/chunked-content/36'.
369      </para>
370     </listitem>
371     <listitem>
372      <para>
373       Improve documentation for inactivity-detection mode.
374      </para>
375     </listitem>
376     <listitem>
377      <para>
378       Detect date changes when looking for inactivity.
379      </para>
380     </listitem>
381     <listitem>
382      <para>
383       Add a --passed-request-statistics-threshold option
384       that can be set to get statistics for requests that
385       were passed.
386      </para>
387     </listitem>
388     <listitem>
389      <para>
390       Add a "inactivity detection" mode which can be useful
391       for debugging purposes.
392      </para>
393     </listitem>
394     <listitem>
395      <para>
396       Bump version to 0.9.4.
397      </para>
398     </listitem>
399     <listitem>
400      <para>
401       Only run print_intro() and print_outro() when syntax highlighting.
402      </para>
403     </listitem>
404     <listitem>
405      <para>
406       Rephrase a sentence in the documentation.
407      </para>
408     </listitem>
409     <listitem>
410      <para>
411       Highlight 'Client socket 7 is no longer usable. The server socket has been closed.'.
412      </para>
413     </listitem>
414     <listitem>
415      <para>
416       Clarify --statistics output by explicitly mentioning that
417       the status codes sent by the server may differ from the ones
418       in "debug 512" messages.
419      </para>
420     </listitem>
421     <listitem>
422      <para>
423       Fix typo in the --statistics output.
424      </para>
425     </listitem>
426     <listitem>
427      <para>
428       Remove an unused variable.
429      </para>
430     </listitem>
431     <listitem>
432      <para>
433       Highlight 'The peer notified us that the connection on socket 11 is going to be closed'.
434      </para>
435      </listitem>
436     </itemizedlist>
437    </para>
438   </listitem>
439   <listitem>
440    <para>
441     Privoxy-Regression-Test:
442     <itemizedlist>
443     <listitem>
444      <para>
445       Remove duplicated word in a comment.
446      </para>
447      </listitem>
448     </itemizedlist>
449    </para>
450   </listitem>
451   <listitem>
452    <para>
453     regression-tests.action:
454     <itemizedlist>
455     <listitem>
456      <para>
457       Add fetch test for http://p.p/wpad.dat.
458      </para>
459     </listitem>
460     <listitem>
461      <para>
462       Bump for-privoxy-version to 3.0.33 which introduced the wpad.dat support.
463      </para>
464     </listitem>
465     <listitem>
466      <para>
467       Add more tests for the '/send-banner' code.
468      </para>
469     </listitem>
470     <listitem>
471      <para>
472       Add test for OVE-20210203-0001.
473      </para>
474     </listitem>
475     <listitem>
476      <para>
477       Add a test for CVE-2021-20217.
478      </para>
479      </listitem>
480     </itemizedlist>
481    </para>
482   </listitem>
483   <listitem>
484    <para>
485     uagen:
486     <itemizedlist>
487     <listitem>
488      <para>
489       Bump generated Firefox version to 91 (ESR).
490      </para>
491     </listitem>
492     <listitem>
493      <para>
494       Bump version to 1.2.3.
495      </para>
496     </listitem>
497     <listitem>
498      <para>
499       Bump copyright.
500      </para>
501      </listitem>
502     </itemizedlist>
503    </para>
504   </listitem>
505   <listitem>
506    <para>
507     Build system:
508     <itemizedlist>
509     <listitem>
510      <para>
511       configure: Bump SOURCE_DATE_EPOCH.
512      </para>
513     </listitem>
514     <listitem>
515      <para>
516       GNUmakefile.in: Fix typo.
517      </para>
518     </listitem>
519     <listitem>
520      <para>
521       configure: Add another warning in case --disable-pthread
522       is used while POSIX threads are available.
523       Various features don't even compile when not using threads.
524      </para>
525     </listitem>
526     <listitem>
527      <para>
528       Add configure option to enable MemorySanitizer.
529      </para>
530     </listitem>
531     <listitem>
532      <para>
533       Add configure option to enable UndefinedBehaviorSanitizer.
534      </para>
535     </listitem>
536     <listitem>
537      <para>
538       Add configure option to enable AddressSanitizer.
539      </para>
540     </listitem>
541     <listitem>
542      <para>
543       Bump copyright.
544      </para>
545     </listitem>
546     <listitem>
547      <para>
548       Add a configure option to disable pcre JIT compilation.
549       While JIT compilation makes filtering faster it can
550       cause false-positive valgrind complaints.
551       As reported by Gwyn Ciesla in SF bug 924 it also can
552       cause problems when the SELinux policy does not grant
553       Privoxy "execmem" privileges.
554      </para>
555     </listitem>
556     <listitem>
557      <para>
558       configure: Remove obsolete RPM_BASE check.
559      </para>
560      </listitem>
561     </itemizedlist>
562    </para>
563   </listitem>
564   <listitem>
565    <para>
566     Windows build system:
567     <itemizedlist>
568     <listitem>
569      <para>
570       Update the build script to use mbed tls version 2.6.11.
571      </para>
572     </listitem>
573     <listitem>
574      <para>
575       Update build script to use the final 8.45 pcre library.
576      </para>
577     </listitem>
578     <listitem>
579      <para>
580       Put all the '--enable-xxx' options in the configure call together.
581      </para>
582      </listitem>
583     </itemizedlist>
584    </para>
585   </listitem>
586   <listitem>
587    <para>
588     macOS build system:
589     <itemizedlist>
590     <listitem>
591      <para>
592       The OSXPackageBuilder repository has been updated and
593       can be used to create macOS packages again.
594      </para>
595      </listitem>
596     </itemizedlist>
597    </para>
598   </listitem>
599   <listitem>
600    <para>
601     Documentation:
602     <itemizedlist>
603     <listitem>
604      <para>
605       contacting: Remove obsolete reference to announce.sgml.
606      </para>
607     </listitem>
608     <listitem>
609      <para>
610       contacting: Request that the browser cache is cleared before
611       producing a log file for submission.
612      </para>
613     </listitem>
614     <listitem>
615      <para>
616       Sponsor FAQ: Note that Privoxy users may follow sponsor links
617       without Referer header set.
618      </para>
619     </listitem>
620     <listitem>
621      <para>
622       newfeatures: Clarify that https inspection also allows to
623       filter https responses.
624      </para>
625     </listitem>
626     <listitem>
627      <para>
628       developer-manual: Mention that announce.txt should be updated
629       when doing a release.
630      </para>
631     </listitem>
632     <listitem>
633      <para>
634       config: Explicitly mention that the CGI pages disclosing the
635       ca-password can be blocked and upgrade the disclosure paragraphs
636       to a warning.
637      </para>
638     </listitem>
639     <listitem>
640      <para>
641       Put all the requested debug options in the config file.
642       Section 11.1 of the Privoxy user manual lists all the debug
643       options that should be enabled when reporting problems or requesting support.
644       Make it easier for users to do the right thing by having all those
645       options present in the config.
646      </para>
647     </listitem>
648     <listitem>
649      <para>
650       Update TODO list item #184 to note that WolfSSL support will
651       (hopefully) appear after the 3.0.34 release.
652      </para>
653     </listitem>
654     <listitem>
655      <para>
656       Update max-client-connections's description.
657       On modern systems other than Windows Privoxy should
658       use poll() in which case the FD_SETSIZE value isn't
659       releveant.
660      </para>
661     </listitem>
662     <listitem>
663      <para>
664       Add a warning that the socket-timeout does not apply
665       to operations done by TLS libraries.
666      </para>
667     </listitem>
668     <listitem>
669      <para>
670       Make documentation slightly less "offensive" for some people
671       by avoiding the word "hell".
672      </para>
673      </listitem>
674     </itemizedlist>
675    </para>
676   </listitem>
677  </itemizedlist>
678 </para>