X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=ChangeLog;h=867cb5d41053df473b702b81a1bd7fb056b2e3c0;hp=8d9029ea271415a49258fcda9998d9338431f8f5;hb=a6df6730b85c3456f90915996bec385f157ba82d;hpb=2136206f9b653922965acb5216251cfce16ff776 diff --git a/ChangeLog b/ChangeLog index 8d9029ea..867cb5d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,345 @@ -------------------------------------------------------------------- ChangeLog for Privoxy -------------------------------------------------------------------- -*** Version 3.0.30 UNRELEASED *** +*** Version 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: + - 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. + - 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. + - 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. + - 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. + - load_config(): Add a space that was missing in a log message. + - read_http_request_body(): Fix two error messages that used an + incorrect variable. + - 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. + +- General improvements: + - 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. + - 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. + - chat(): Log the applied actions before deciding how to forward the request. + - parse_time_header(): Silence a coverity complaint when building without assertions. + - receive_encrypted_request_headers(): Improve a log message. + - 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. + - 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. + - 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 + - OpenSSL generate_host_certificate(): Fix two error messsages. + - Improve description of handle_established_connection() + - OpenSSL ssl_store_cert(): Translate EVP_PKEY_EC to a string. + - OpenSSL ssl_store_cert(): Remove pointless variable initialization. + - OpenSSL ssl_store_cert(): Initialize pointer with NULL instead of 0. + +- Action file improvements: + - Disable fast-redirects for .microsoftonline.com/. + - Disable fast-redirects for idp.springer.com/. + - Disable fast-redirects for .zeit.de/zustimmung. + - Unblock adv-archiv.dfn-cert.de/. + - Block requests to eu-tlp01.kameleoon.eu/. + - Block requests to fpa-events.arstechnica.com/. + - Unblock nlnet.nl/. + - Unblock adguard.com/. + +- Privoxy-Log-Parser: + - Highlight 'Socket timeout 3 reached: http://127.0.0.1:20000/no-filter/chunked-content/36'. + - Improve documentation for inactivity-detection mode. + - Detect date changes when looking for inactivity. + - Add a --passed-request-statistics-threshold option + that can be set to get statistics for requests that + were passed. + - Add a "inactivity detection" mode which can be useful + for debugging purposes. + - Bump version to 0.9.4. + - Only run print_intro() and print_outro() when syntax highlighting. + - Rephrase a sentence in the documentation. + - Highlight 'Client socket 7 is no longer usable. The server socket has been closed.'. + - Clarify --statistics output by explicitly mentioning that + the status codes sent by the server may differ from the ones + in "debug 512" messages. + - Fix typo in the --statistics output. + - Remove an unused variable. + - Highlight 'The peer notified us that the connection on socket 11 is going to be closed'. + +- Privoxy-Regression-Test: + - Remove duplicated word in a comment. + +- regression-tests.action: + - Add fetch test for http://p.p/wpad.dat. + - Bump for-privoxy-version to 3.0.33 which introduced the wpad.dat support. + - Add more tests for the '/send-banner' code. + - Add test for OVE-20210203-0001. + - Add a test for CVE-2021-20217. + +- uagen: + - Bump generated Firefox version to 91 (ESR). + - Bump version to 1.2.3. + - Bump copyright. + +- Build system: + - configure: Bump SOURCE_DATE_EPOCH. + - GNUmakefile.in: Fix typo. + - 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. + - Add configure option to enable MemorySanitizer. + - Add configure option to enable UndefinedBehaviorSanitizer. + - Add configure option to enable AddressSanitizer. + - Bump copyright. + - 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. + - configure: Remove obsolete RPM_BASE check. + +- Windows build system: + - Update the build script to use mbed tls version 2.6.11. + - Update build script to use the final 8.45 pcre library. + - 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. + - contacting: Request that the browser cache is cleared before + producing a log file for submission. + - Sponsor FAQ: Note that Privoxy users may follow sponsor links + without Referer header set. + - newfeatures: Clarify that https inspection also allows to + filter https responses. + - developer-manual: Mention that announce.txt should be updated + when doing a release. + - config: Explicitly mention that the CGI pages disclosing the + ca-password can be blocked and upgrade the disclosure paragraphs + to a warning. + - 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. + - Update TODO list item #184 to note that WolfSSL support will + (hopefully) appear after the 3.0.34 release. + - 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. + - Add a warning that the socket-timeout does not apply + to operations done by TLS libraries. + - Make documentation slightly less "offensive" for some people + by avoiding the word "hell". + +*** Version 3.0.32 stable *** + +- Security/Reliability: + - ssplit(): Remove an assertion that could be triggered with a + crafted CGI request. + Commit 2256d7b4d67. OVE-20210203-0001. CVE-2021-20272. + Reported by: Joshua Rogers (Opera) + - cgi_send_banner(): Overrule invalid image types. Prevents a + crash with a crafted CGI request if Privoxy is toggled off. + Commit e711c505c48. OVE-20210206-0001. CVE-2021-20273. + Reported by: Joshua Rogers (Opera) + - socks5_connect(): Don't try to send credentials when none are + configured. Fixes a crash due to a NULL-pointer dereference + when the socks server misbehaves. + Commit 85817cc55b9. OVE-20210207-0001. CVE-2021-20274. + Reported by: Joshua Rogers (Opera) + - chunked_body_is_complete(): Prevent an invalid read of size two. + Commit a912ba7bc9c. OVE-20210205-0001. CVE-2021-20275. + Reported by: Joshua Rogers (Opera) + - Obsolete pcre: Prevent invalid memory accesses with an invalid + pattern passed to pcre_compile(). Note that the obsolete pcre code + is scheduled to be removed before the 3.0.33 release. There has been + a warning since 2008 already. + Commit 28512e5b624. OVE-20210222-0001. CVE-2021-20276. + Reported by: Joshua Rogers (Opera) + +- Bug fixes: + - Properly parse the client-tag-lifetime directive. Previously it was + not accepted as an obsolete hash value was being used. + Reported by: Joshua Rogers (Opera) + - decompress_iob(): Prevent reading of uninitialized data. + Reported by: Joshua Rogers (Opera). + - decompress_iob(): Don't advance cur past eod when looking + for the end of the file name and comment. + - decompress_iob(): Cast value to unsigned char before shifting. + Prevents a left-shift of a negative value which is undefined behaviour. + Reported by: Joshua Rogers (Opera) + - gif_deanimate(): Confirm that that we have enough data before doing + any work. Fixes a crash when fuzzing with an empty document. + Reported by: Joshua Rogers (Opera). + - buf_copy(): Fail if there's no data to write or nothing to do. + Prevents undefined behaviour "applying zero offset to null pointer". + Reported by: Joshua Rogers (Opera) + - log_error(): Treat LOG_LEVEL_FATAL as fatal even when --stfu is + being used while fuzzing. + Reported by: Joshua Rogers (Opera). + - Respect DESTDIR when considering whether or not to install + config files with ".new" extension. + - OpenSSL ssl_store_cert(): Fix two error messages. + - Fix a couple of format specifiers. + - Silence compiler warnings when compiling with NDEBUG. + - fuzz_server_header(): Fix compiler warning. + - fuzz_client_header(): Fix compiler warning. + - cgi_send_user_manual(): Also reject requests if the user-manual + directive specifies a https:// URL. Previously Privoxy would try and + fail to open a local file. + +- General improvements: + - Log the TLS version and the the cipher when debug 2 is enabled. + - ssl_send_certificate_error(): Respect HEAD requests by not sending a body. + - ssl_send_certificate_error(): End the body with a single new line. + - serve(): Increase the chances that the host is logged when closing + a server socket. + - handle_established_connection(): Add parentheses to clarify an expression + Suggested by: David Binderman + - continue_https_chat(): Explicitly unset CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE + if process_encrypted_request() fails. This makes it more obvious that the + connection will not be reused. Previously serve() relied on + CSP_FLAG_SERVER_CONTENT_LENGTH_SET and CSP_FLAG_CHUNKED being unset. + Inspired by a patch from Joshua Rogers (Opera). + - decompress_iob(): Add periods to a couple of log messages + - Terminate the body of the HTTP snipplets with a single new line + instead of "\r\n". + - configure: Add --with-assertions option and only enable assertions + when it is used + - windows build: Use --with-brotli and --with-mbedtls by default and + enable dynamic error checking. + - gif_deanimate(): Confirm we've got an image before trying to write it + Saves a pointless buf_copy() call. + - OpenSSL ssl_store_cert(): Remove a superfluous space before the serial number. + +- Action file improvements: + - Disable fast-redirects for .golem.de/ + - Unblock requests to adri*. + - Block requests for trc*.taboola.com/ + - Disable fast-redirects for .linkedin.com/ + +- Filter file improvements: + - Make the second pcrs job of the img-reorder filter greedy again. + The ungreedy version broke the img tags on: + https://bulk.fefe.de/scalability/. + +- Privoxy-Log-Parser: + - Highlight a few more messages. + - Clarify the --statistics output. The shown "Reused connections" + are server connections so name them appropriately. + - Bump version to 0.9.3. + +- Privoxy-Regression-Test: + - Add the --check-bad-ssl option to the --help output. + - Bump version to 0.7.3. + +- Documentation: + - Add pushing the created tag to the release steps in the developer manual. + - Clarify that 'debug 32768' should be used in addition to the other debug + directives when reporting problems. + - Add a 'Third-party licenses and copyrights' section to the user manual. + +*** Version 3.0.31 stable *** + +- Security/Reliability: + - Prevent an assertion from getting triggered by a crafted CGI request. + Commit 5bba5b89193fa. OVE-20210130-0001. CVE-2021-20217. + Reported by: Joshua Rogers (Opera) + - Fixed a memory leak when decompression fails "unexpectedly". + Commit f431d61740cc0. OVE-20210128-0001. CVE-2021-20216. + +- Bug fixes: + - Fixed detection of insufficient data for decompression. + Previously Privoxy could try to decompress a partly + uninitialized buffer. + +*** Version 3.0.30 stable *** - Bug fixes: - Check the actual URL for redirects when https inspecting requests. @@ -27,6 +365,8 @@ ChangeLog for Privoxy the TLS backend resources are free'd later on and only if no active connections are left. Prevents crashes when exiting "gracefully" at the wrong time. + - Let the uninstall target remove the config file even if DESTDIR + is set and properly announce the deletion of the configuration files. - General improvements: - Allow to rewrite the request destination for https-inspected @@ -78,9 +418,9 @@ ChangeLog for Privoxy - The configure script will bail out if OpenSSL and mbedTLS are enabled at the same time. - Log a message right before exiting gracefully. - - A couple of structure have been rearranged to require slightly + - A couple of structures have been rearranged to require slightly less memory. - - When HTTPS inspection is enabled and the certificate is invalid + - When https inspection is enabled and the certificate is invalid the error message is now sent with status code 403 instead of 200. - The Slackware rc script template has been renamed to slackware/rc.privoxy.in to silence complaints when building @@ -88,7 +428,6 @@ ChangeLog for Privoxy - When building with MbedTLS support, mbedtls_md5_ret() is used instead of mbedtls_md5() which is deprecated and causes a warning on Debian GNU/Linux. - - The man page has been moved from section 1 to man section 8. - Action file improvements: - Block requests to eu-tlp03.kameleoon.com/. @@ -122,17 +461,17 @@ ChangeLog for Privoxy inserts a link to Privoxy's webinterface and adds a new line at the end of the generated page. -- privoxy-log-parser: +- Privoxy-Log-Parser: - Highlight a few more messages. - Add a handler for tagging messages. - - Bump version to 0.9.2. - Properly deal with 'Certificate error' crunches Previously the error description was highlighted as 'host'. - Log truncated LOG_LEVEL_CLF messages more gracefully and note that the statistics will be imprecise. - Fixed perldoc typo. + - Bump version to 0.9.2. -- privoxy-regression-test: +- Privoxy-Regression-Test: - Use http://127.0.0.1:8118/ as default Privoxy address unless http_proxy is set through the environment. - Add a --privoxy-cgi-prefix option that specifies the prefix @@ -157,6 +496,9 @@ ChangeLog for Privoxy "TAG:^(application|text)/(x-)?javascript$". - When get_cgi_page_or_else() fails, include the URL of the requested page in the log message. + - Added a --check-bad-ssl option that can be used to verify that + Privoxy detects certificate problems when accessing the test + sites from badssl.com. - Bumped version to 0.7.2 - uagen: @@ -167,7 +509,7 @@ ChangeLog for Privoxy - Bumped generated Firefox version to 78 (ESR). - Bumped version to 1.2.2. - - User Documentation: + - User documentation: - Remove reference to 'How to Report Bugs Effectively'. It was only rendered as text without URL in the README anyway and there's no indication that users read it ... @@ -221,7 +563,7 @@ ChangeLog for Privoxy - Replace CVS reference with git. - Mention regression-tests.action in the config file. - Explicitly mention in the config file that access to the - ca key should be limited to Privoxy. + CA key should be limited to Privoxy. - List more client-specific-tag examples for inspiration. - Add additional headers to the client-header-order example. - Note that actions aren't updated after rewrites. @@ -230,8 +572,10 @@ ChangeLog for Privoxy - Note that protocol and host have to be added when rewriting the destination host for https-inspected requests. - Explicitly mention that the CA key is used to sign certificates. + - Put openssl command in 'command' tags. + - The man page has been moved from section 1 to man section 8. -- Developer Manual: +- Developer manual: - Flesh out the build instructions for Debian. - Remove the packaging instructions for RPM-based systems. They don't work and we don't release RPM packages anymore anyway. @@ -267,7 +611,6 @@ ChangeLog for Privoxy They are not actually available through git (yet). - Don't speak of Privoxy version 3 in the past tense. - Update the list of programs required for the release process. - - Put openssl command in 'command' tags. - Update description of the webserver target which uses ssh, not scp. - Remove obsolete reference to config.new. @@ -285,8 +628,10 @@ ChangeLog for Privoxy - Add a link to Privoxy-Regression-Test to regression-tests.action in case it isn't packaged. - Add regression tests for pcre host patterns. + - Fixed a regression test that is executed when + FEATURE_GRACEFUL_TERMINATION is enabled. -- Privoxy Infrastructure: +- Privoxy infrastructure: - Import a Privoxy logo for the website. - Update Tor onion service to HiddenServiceVersion 3. - Display the "model" photos in a single row and remove placeholder images. @@ -300,32 +645,33 @@ ChangeLog for Privoxy - Fixed memory leaks when a response is buffered and the buffer limit is reached or Privoxy is running out of memory. Commits bbd53f1010b and 4490d451f9b. OVE-20201118-0001. + CVE-2020-35502. Sponsored by: Robert Klemme - Fixed a memory leak in the show-status CGI handler when no action files are configured. Commit c62254a686. - OVE-20201118-0002. + OVE-20201118-0002. CVE-2021-20209. Sponsored by: Robert Klemme - Fixed a memory leak in the show-status CGI handler when no filter files are configured. Commit 1b1370f7a8a. - OVE-20201118-0003. + OVE-20201118-0003. CVE-2021-20210. Sponsored by: Robert Klemme - Fixes a memory leak when client tags are active. - Commit 245e1cf32. OVE-20201118-0004. + Commit 245e1cf32. OVE-20201118-0004. CVE-2021-20211. Sponsored by: Robert Klemme - Fixed a memory leak if multiple filters are executed and the last one is skipped due to a pcre error. - Commit 5cfb7bc8fe. OVE-20201118-0005. + Commit 5cfb7bc8fe. OVE-20201118-0005. CVE-2021-20212. - Prevent an unlikely dereference of a NULL-pointer that could result in a crash if accept-intercepted-requests was enabled, Privoxy failed to get the request destination from the Host header and a memory allocation failed. - Commit 7530132349. CID 267165. OVE-20201118-0006. + Commit 7530132349. CID 267165. OVE-20201118-0006. CVE-2021-20213. - Fixed memory leaks in the client-tags CGI handler when client tags are configured and memory allocations fail. - Commit cf5640eb2a. CID 267168. OVE-20201118-0007. + Commit cf5640eb2a. CID 267168. OVE-20201118-0007. CVE-2021-20214. - Fixed memory leaks in the show-status CGI handler when memory allocations fail. Commit 064eac5fd0 and commit fdee85c0bf3. - CID 305233. OVE-20201118-0008. + CID 305233. OVE-20201118-0008. CVE-2021-20215. - General improvements: - Added experimental https inspection support which allows to filter