X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=doc%2Fsource%2Fchangelog.sgml;h=95f7cfaba880ba1516b1c83032f3ead97243b457;hb=4697cf05fcd27c0c559477f66d82784ebcb60b42;hp=f0afc1b3a0892b9ef0c8cc3823f0be5d83dfa51a;hpb=30cfc09cf02d40c8ec3848e770413d982315cc08;p=privoxy.git diff --git a/doc/source/changelog.sgml b/doc/source/changelog.sgml index f0afc1b3..95f7cfab 100644 --- a/doc/source/changelog.sgml +++ b/doc/source/changelog.sgml @@ -1,11 +1,9 @@ - - Privoxy 3.0.22 stable is mainly a bug-fix - release, it also has a couple of new features, though. - Note that the first two entries in the ChangeLog below refer to security - issues: - + + + Privoxy 3.0.33 fixes an XSS issue + and multiple DoS issues and a couple of other bugs. + The issues also affect earlier Privoxy releases. + Privoxy 3.0.33 also comes with + a couple of general improvements and new features. + + + Changes in Privoxy 3.0.33 stable: + + + + Security/Reliability: + + + + cgi_error_no_template(): Encode the template name to prevent + XSS (cross-site scripting) when Privoxy is configured to servce + the user-manual itself. + Commit 0e668e9409c. OVE-20211102-0001. CVE-2021-44543. + Reported by: Artem Ivanov + + + + + get_url_spec_param(): Free memory of compiled pattern spec + before bailing. + Reported by Joshua Rogers (Opera) who also provided the fix. + Commit 652b4b7cb0. OVE-20211201-0003. CVE-2021-44540. + + + + + process_encrypted_request_headers(): Free header memory when + failing to get the request destination. + Reported by Joshua Rogers (Opera) who also provided the fix. + Commit 0509c58045. OVE-20211201-0002. CVE-2021-44541. + + + + + send_http_request(): Prevent memory leaks when handling errors + Reported by Joshua Rogers (Opera) who also provided the fix. + Commit c48d1d6d08. OVE-20211201-0001. CVE-2021-44542. + + + + + Bug fixes: - Fixed a memory leak when rejecting client connections due to - the socket limit being reached (CID 66382). This affected - Privoxy 3.0.21 when compiled with IPv6 support (on most - platforms this is the default). + handle_established_connection(): Skip the poll()/select() calls + if TLS data is pending on the server socket. The TLS library may + have already consumed all the data from the server response in + which case poll() and select() will not detect that data is + available to be read. + Fixes SF bug #926 reported by Wen Yue. - Fixed an immediate-use-after-free bug (CID 66394) and two - additional unconfirmed use-after-free complaints made by - Coverity scan (CID 66391, CID 66376). + continue_https_chat(): Update csp->server_connection.request_sent + after sending the request to make sure the latency is calculated + correctly. Previously https connections were not reused after + timeout seconds after the first request made on the connection. - Actually show the FORCE_PREFIX value on the show-status page. + free_pattern_spec(): Don't try to free an invalid pointer + when unloading an action file with a TAG pattern while + Privoxy has been compiled without FEATURE_PCRE_HOST_PATTERNS. + Closes: SF patch request #147. Patch by Maxim Antonov. - Properly deal with Keep-Alive headers with timeout= parameters - If the timeout still can't be parsed, use the configured - timeout instead of preventing the client from keeping the - connection alive. Fixes #3615312/#870 reported by Bernard Guillot. + Adjust build_request_line() to create a CONNECT request line when + https-inspecting and forwarding to a HTTP proxy. + Fixes SF bug #925 reported by Wen Yue. - Not using any filter files no longer results in warning messages - unless an action file is referencing header taggers or filters. - Reported by Stefan Kurtz in #3614835. + load_config(): Add a space that was missing in a log message. - Fixed a bug that prevented Privoxy from reusing some reusable - connections. Two bit masks with different purpose unintentionally - shared the same bit. + read_http_request_body(): Fix two error messages that used an + incorrect variable. - A couple of additional bugs were discovered by Coverity Scan. - The fixes that are not expected to affect users are not explicitly - mentioned here, for details please have a look at the CVS logs. + If the the response is chunk-encoded, ignore the Content-Length + header sent by the server. + Allows to load https://redmine.lighttpd.net/ with filtering enabled. @@ -94,86 +138,175 @@ - Introduced negative tag patterns NO-REQUEST-TAG and NO-RESPONSE-TAG. - They apply if no matching tag is found after parsing client or - server headers. + Allow to edit the add-header action through the CGI editor by + generalizing the code that got added with the suppress-tag action. + Closes SF patch request #146. Patch by Maxim Antonov. + + + + + Add a CGI handler for /wpad.dat that returns a + Proxy Auto-Configuration (PAC) file. + Among other things, it can be used to instruct clients + through DHCP to use Privoxy as proxy. + For example with the dnsmasq option: + dhcp-option=252,http://config.privoxy.org/wpad.dat + Initial patch by Richard Schneidt. + + + + + Don't log the applied actions in process_encrypted_request() + Log them in continue_https_chat() instead to mirror chat(). + Prevents the applied actions from getting logged twice + for the first request on an https-inspected connection. + + + + + OpenSSL generate_host_certificate(): Use config.privoxy.org as Common Name + Org and Org Unit if the real host name is too long to get accepted by OpenSSL. + Clients should only care about the Subject Alternative Name + anyway and we can continue to use the real host name for it. + Reported by Miles Wen on privoxy-users@. + + + + + Establish the TLS connection with the client earlier and decide + how to route the request afterwards. This allows to change the + forwarding settings based on information from the https-inspected + request, for example the path. + + + + + listen_loop(): When shutting down gracefully, close listening ports + before waiting for the threads to exit. Allows to start a second + Privoxy with the same config file while the first Privoxy is still + running. + + + + + serve(): Close the client socket as well if the server socket + for an inspected connection has been closed. Privoxy currently + can't establish a new server connection when the client socket + is reused and would drop the connection in continue_https_chat() + anyway. + + + + + Don't disable redirect checkers in redirect_url(). + Disable them in handle_established_connection() instead. + Doing it in redirect_url() prevented the +redirect{} and + +fast-redirects{} actions from being logged with LOG_LEVEL_ACTIONS. + + + + + handle_established_connection(): Slightly improve a comment. + + + + + handle_established_connection(): Fix a comment. + + + + + socks5_connect(): Fix indentation. + + + + + handle_established_connection(): Improve an error message. + + + + + create_pattern_spec(): Fix ifdef indentation. + + + + + Fix comment typos. - Add support for external filters which allow to process the - response body with a script or program written in any language - the platform supports. External filters are enabled with - +external-filter{} after they have been defined in one of the - filter files with a header line starting with "EXTERNAL-FILTER:". - External filter support is experimental, not compiled by default - and known not to work on all platforms. + process_encrypted_request(): Improve a log message. + The function only processes request headers and there + may still be unread request body data left to process. - Add support for the 'PATCH' method as defined in RFC5789. + chat(): Log the applied actions before deciding how to forward the request. - Reject requests with unsupported Expect header values. - Fixes a couple of Co-Advisor tests. + parse_time_header(): Silence a coverity complaint when building without assertions. - Normalize the HTTP-version in forwarded requests and responses. - This is an explicit RFC 2616 MUST and RFC 7230 mandates that - intermediaries send their own HTTP-version in forwarded - messages. + receive_encrypted_request_headers(): Improve a log message. - Server 'Keep-Alive' headers are no longer forwarded. From a user's - point of view it doesn't really matter, but RFC 2616 (obsolete) - mandates that the header is removed and this fixes a Co-Advisor - complaint. + mbedTLS get_ciphersuites_from_string(): Use strlcpy() instead of strncpy(). + Previously the terminating NUL wasn't copied which resulted + in a compiler warning. This didn't cause actual problems as + the target buffer was initialized by zalloc_or_die() so the + last byte of the target buffer was NUL already. + Actually copying the terminating NUL seems clearer, though. - Change declared template file encoding to UTF-8. The templates - already used a subset of UTF-8 anyway and changing the declaration - allows to properly display UTF-8 characters used in the action files. - This change may require existing action files with ISO-8859-1 - characters that aren't valid UTF-8 to be converted to UTF-8. - Requested by Sam Chen in #582. + Remove compiler warnings. "log_error(LOG_LEVEL_FATAL, ..." + doesn't return but apparently the compiler doesn't know that. + Get rid of several "this statement may fall through + [-Wimplicit-fallthrough=]" warnings. - Do not pass rejected keep-alive timeouts to the server. It might - not have caused any problems (we know of), but doing the right - thing shouldn't hurt either. + Store the PEM certificate in a dynamically allocated buffer + when https-inspecting. Should prevent errors like: + 2021-03-16 22:36:19.148 7f47bbfff700 Error: X509 PEM cert len 16694 is larger than buffer len 16383 + As a bonus it should slightly reduce the memory usage as most + certificates are smaller than the previously used fixed buffer. + Reported by: Wen Yue - Let log_error() use its own buffer size #define to make changing - the log buffer size slightly less inconvenient. + OpenSSL generate_host_certificate(): Fix two error messsages. - Turned single-threaded into a "proper" toggle directive with arguments. + Improve description of handle_established_connection() - CGI templates no longer enforce new windows for some links. + OpenSSL ssl_store_cert(): Translate EVP_PKEY_EC to a string. - Remove an undocumented workaround ('HOST' header removal) for - an Apple iTunes bug that according to #729900 got fixed in 2003. + OpenSSL ssl_store_cert(): Remove pointless variable initialization. + + + + + OpenSSL ssl_store_cert(): Initialize pointer with NULL instead of 0. @@ -185,110 +318,119 @@ - The pattern 'promotions.' is no longer being blocked. - Reported by rakista in #3608540. + Disable fast-redirects for .microsoftonline.com/. - Disable fast-redirects for .microsofttranslator.com/. + Disable fast-redirects for idp.springer.com/. - Disable filter{banners-by-size} for .dgb-tagungszentren.de/. + Disable fast-redirects for .zeit.de/zustimmung. - Add adn.speedtest.net as a site-specific unblocker. - Support request #3612908. + Unblock adv-archiv.dfn-cert.de/. - Disable filter{banners-by-size} for creativecommons.org/. + Block requests to eu-tlp01.kameleoon.eu/. - Block requests to data.gosquared.com/. Reported by cbug in #3613653. + Block requests to fpa-events.arstechnica.com/. - Unblock .conrad./newsletter/. Reported by David Bo in #3614238. + Unblock nlnet.nl/. - Unblock .bundestag.de/. + Unblock adguard.com/. + + + + + + + + Privoxy-Log-Parser: + + + + Highlight 'Socket timeout 3 reached: http://127.0.0.1:20000/no-filter/chunked-content/36'. - Unblock .rote-hilfe.de/. + Improve documentation for inactivity-detection mode. - Disable fast-redirects for .facebook.com/plugins/like.php. + Detect date changes when looking for inactivity. - Unblock Stackexchange popup URLs that aren't used to serve ads. - Reported by David Wagner in #3615179. + Add a --passed-request-statistics-threshold option + that can be set to get statistics for requests that + were passed. - Disable fast-redirects for creativecommons.org/. + Add a "inactivity detection" mode which can be useful + for debugging purposes. - Unblock .stopwatchingus.info/. + Bump version to 0.9.4. - Block requests for .adcash.com/script/. - Reported by Tyrexionibus in #3615289. + Only run print_intro() and print_outro() when syntax highlighting. - Disable HTML filters if the response was tagged as JavaScript. - Filtering JavaScript code with filters intended to deal with HTML - is usually a waste of time and, more importantly, may break stuff. + Rephrase a sentence in the documentation. - Use a custom redirect{} for .washingtonpost.com/wp-apps/imrs\.php\?src= - Previously enabling the 'Advanced' settings (or manually enabling - +fast-redirects{}) prevented some images from being loaded properly. + Highlight 'Client socket 7 is no longer usable. The server socket has been closed.'. - Unblock "adina*." Fixes #919 reported by Morton A. Goldberg. + Clarify --statistics output by explicitly mentioning that + the status codes sent by the server may differ from the ones + in "debug 512" messages. - Block '/.*DigiAd'. + Fix typo in the --statistics output. - Unblock 'adele*.'. Reported by Adele Lime in #1663. + Remove an unused variable. - Disable banners-by-size for kggp.de/. + Highlight 'The peer notified us that the connection on socket 11 is going to be closed'. @@ -296,28 +438,43 @@ - Filter file improvements & bug fixes: + Privoxy-Regression-Test: - Decrease the chances that js-annoyances creates invalid JavaScript. - Submitted by John McGowan on ijbswa-users@. + Remove duplicated word in a comment. + + + + + + + + regression-tests.action: + + + + Add fetch test for http://p.p/wpad.dat. - Let the msn filter hide 'related' ads again. + Bump for-privoxy-version to 3.0.33 which introduced the wpad.dat support. - Remove a stray '1' in the 'html-annoyances' filter. + Add more tests for the '/send-banner' code. - Prevent img-reorder from messing up img tags with empty src - attributes. Fixes #880 reported by Duncan. + Add test for OVE-20210203-0001. + + + + + Add a test for CVE-2021-20217. @@ -325,148 +482,193 @@ - Documentation improvements: + uagen: - Updated the 'Would you like to donate?' section. + Bump generated Firefox version to 91 (ESR). - Note that invalid forward-override{} parameter syntax isn't - detected until the parameter is used. + Bump version to 1.2.3. - Add another +redirect{} example: a shortcut for illumos bugs. + Bump copyright. - + + + + + + + Build system: + - Make it more obvious that many operating systems support log - rotation out of the box. + configure: Bump SOURCE_DATE_EPOCH. - Fixed dead links. Reported by Mark Nelson in #3614557. + GNUmakefile.in: Fix typo. - Rephrased the 'Why is the configuration so complicated?' answer - to be slightly less condescending. Anonymously suggested in #3615122. + configure: Add another warning in case --disable-pthread + is used while POSIX threads are available. + Various features don't even compile when not using threads. - Be more explicit about accept-intercepted-requests's lack of MITM support. + Add configure option to enable MemorySanitizer. - Make 'demoronizer' FAQ entries more generic. + Add configure option to enable UndefinedBehaviorSanitizer. - Add an example hostname to the --pre-chroot-nslookup description. + Add configure option to enable AddressSanitizer. - Add an example for a host pattern that matches an IP address. + Bump copyright. - Rename the 'domain pattern' to 'host pattern' as it may - contain IP addresses as well. + Add a configure option to disable pcre JIT compilation. + While JIT compilation makes filtering faster it can + cause false-positive valgrind complaints. + As reported by Gwyn Ciesla in SF bug 924 it also can + cause problems when the SELinux policy does not grant + Privoxy "execmem" privileges. - Recommend forward-socks5t when using Tor. It seems to work fine and - modifying the Tor configuration to profit from it hasn't been necessary - for a while now. + configure: Remove obsolete RPM_BASE check. - + + + + + + + Windows build system: + - Add another redirect{} example to stress that redirect loops can - and should be avoided. + Update the build script to use mbed tls version 2.6.11. - The usual spelling and grammar fixes. Parts of them were - reported by Reuben Thomas in #3615276. + Update build script to use the final 8.45 pcre library. - Mention the PCRS option letters T and D in the filter section. + Put all the '--enable-xxx' options in the configure call together. + + + + + + + + macOS build system: + + + + The OSXPackageBuilder repository has been updated and + can be used to create macOS packages again. + + + + + + + + Documentation: + + + + contacting: Remove obsolete reference to announce.sgml. - Clarify that handle-as-empty-doc-returns-ok is still useful - and will not be removed without replacement. + contacting: Request that the browser cache is cleared before + producing a log file for submission. - Note that security issues shouldn't be reported using the bug tracker. + Sponsor FAQ: Note that Privoxy users may follow sponsor links + without Referer header set. - Clarify what Privoxy does if both +block{} and +redirect{} apply. + newfeatures: Clarify that https inspection also allows to + filter https responses. - Removed the obsolete bookmarklets section. + developer-manual: Mention that announce.txt should be updated + when doing a release. - - - - - - - Build system improvements: - + - Let --with-group properly deal with secondary groups. - Patch submitted by Anatoly Arzhnikov in #3615187. + config: Explicitly mention that the CGI pages disclosing the + ca-password can be blocked and upgrade the disclosure paragraphs + to a warning. - Fix web-actions target. + Put all the requested debug options in the config file. + Section 11.1 of the Privoxy user manual lists all the debug + options that should be enabled when reporting problems or requesting support. + Make it easier for users to do the right thing by having all those + options present in the config. - Add a web-faq target that only updates the FAQ on the webserver. + Update TODO list item #184 to note that WolfSSL support will + (hopefully) appear after the 3.0.34 release. - Remove already-commented-out non-portable DOSFILTER alternatives. + Update max-client-connections's description. + On modern systems other than Windows Privoxy should + use poll() in which case the FD_SETSIZE value isn't + releveant. - Remove the obsolete targets dok-put and dok-get. + Add a warning that the socket-timeout does not apply + to operations done by TLS libraries. - Add a sf-shell target. + Make documentation slightly less "offensive" for some people + by avoiding the word "hell".