Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package apache2 for openSUSE:Factory checked in at 2022-06-13 13:01:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/apache2 (Old) and /work/SRC/openSUSE:Factory/.apache2.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "apache2" Mon Jun 13 13:01:51 2022 rev:194 rq:981545 version:2.4.54 Changes: -------- --- /work/SRC/openSUSE:Factory/apache2/apache2.changes 2022-03-15 19:04:57.912949956 +0100 +++ /work/SRC/openSUSE:Factory/.apache2.new.1548/apache2.changes 2022-06-13 13:01:53.073062883 +0200 @@ -1,0 +2,143 @@ +Wed Jun 8 11:26:13 UTC 2022 - pgaj...@suse.com + +- update httpd-framework to svn revision 1898917 + +------------------------------------------------------------------- +Wed Jun 8 10:06:34 UTC 2022 - pgaj...@suse.com + +- version update to 2.4.54 + Changes with Apache 2.4.54 + *) SECURITY: CVE-2022-31813: mod_proxy X-Forwarded-For dropped by + hop-by-hop mechanism (cve.mitre.org) + Apache HTTP Server 2.4.53 and earlier may not send the + X-Forwarded-* headers to the origin server based on client side + Connection header hop-by-hop mechanism. + This may be used to bypass IP based authentication on the origin + server/application. + Credits: The Apache HTTP Server project would like to thank + Gaetan Ferry (Synacktiv) for reporting this issue + *) SECURITY: CVE-2022-30556: Information Disclosure in mod_lua with + websockets (cve.mitre.org) + Apache HTTP Server 2.4.53 and earlier may return lengths to + applications calling r:wsread() that point past the end of the + storage allocated for the buffer. + Credits: The Apache HTTP Server project would like to thank + Ronald Crane (Zippenhop LLC) for reporting this issue + *) SECURITY: CVE-2022-30522: mod_sed denial of service + (cve.mitre.org) + If Apache HTTP Server 2.4.53 is configured to do transformations + with mod_sed in contexts where the input to mod_sed may be very + large, mod_sed may make excessively large memory allocations and + trigger an abort. + Credits: This issue was found by Brian Moussalli from the JFrog + Security Research team + *) SECURITY: CVE-2022-29404: Denial of service in mod_lua + r:parsebody (cve.mitre.org) + In Apache HTTP Server 2.4.53 and earlier, a malicious request to + a lua script that calls r:parsebody(0) may cause a denial of + service due to no default limit on possible input size. + Credits: The Apache HTTP Server project would like to thank + Ronald Crane (Zippenhop LLC) for reporting this issue + *) SECURITY: CVE-2022-28615: Read beyond bounds in + ap_strcmp_match() (cve.mitre.org) + Apache HTTP Server 2.4.53 and earlier may crash or disclose + information due to a read beyond bounds in ap_strcmp_match() + when provided with an extremely large input buffer. While no + code distributed with the server can be coerced into such a + call, third-party modules or lua scripts that use + ap_strcmp_match() may hypothetically be affected. + Credits: The Apache HTTP Server project would like to thank + Ronald Crane (Zippenhop LLC) for reporting this issue + *) SECURITY: CVE-2022-28614: read beyond bounds via ap_rwrite() + (cve.mitre.org) + The ap_rwrite() function in Apache HTTP Server 2.4.53 and + earlier may read unintended memory if an attacker can cause the + server to reflect very large input using ap_rwrite() or + ap_rputs(), such as with mod_luas r:puts() function. + Credits: The Apache HTTP Server project would like to thank + Ronald Crane (Zippenhop LLC) for reporting this issue + *) SECURITY: CVE-2022-28330: read beyond bounds in mod_isapi + (cve.mitre.org) + Apache HTTP Server 2.4.53 and earlier on Windows may read beyond + bounds when configured to process requests with the mod_isapi + module. + Credits: The Apache HTTP Server project would like to thank + Ronald Crane (Zippenhop LLC) for reporting this issue + *) SECURITY: CVE-2022-26377: mod_proxy_ajp: Possible request + smuggling (cve.mitre.org) + Inconsistent Interpretation of HTTP Requests ('HTTP Request + Smuggling') vulnerability in mod_proxy_ajp of Apache HTTP Server + allows an attacker to smuggle requests to the AJP server it + forwards requests to. This issue affects Apache HTTP Server + Apache HTTP Server 2.4 version 2.4.53 and prior versions. + Credits: Ricter Z @ 360 Noah Lab + *) mod_ssl: SSLFIPS compatible with OpenSSL 3.0. PR 66063. + [Petr Sumbera <petr.sumbera oracle.com>, Yann Ylavic] + *) mod_proxy_http: Avoid 417 responses for non forwardable 100-continue. + PR 65666. [Yann Ylavic] + *) mod_md: a bug was fixed that caused very large MDomains + with the combined DNS names exceeding ~7k to fail, as + request bodies would contain partially wrong data from + uninitialized memory. This would have appeared as failure + in signing-up/renewing such configurations. + [Stefan Eissing, Ronald Crane (Zippenhop LLC)] + *) mod_proxy_http: Avoid 417 responses for non forwardable 100-continue. + PR 65666. [Yann Ylavic] + *) MPM event: Restart children processes killed before idle maintenance. + PR 65769. [Yann Ylavic, Ruediger Pluem] + *) ab: Allow for TLSv1.3 when the SSL library supports it. + [abhilash1232 gmail.com, xiaolongx.jiang intel.com, Yann Ylavic] + *) core: Disable TCP_NOPUSH optimization on OSX since it might introduce + transmission delays. PR 66019. [Yann Ylavic] + *) MPM event: Fix accounting of active/total processes on ungraceful restart, + PR 66004 (follow up to PR 65626 from 2.4.52). [Yann Ylavic] + *) core: make ap_escape_quotes() work correctly on strings + with more than MAX_INT/2 characters, counting quotes double. + Credit to <generalb...@zippenhop.com> for finding this. + [Stefan Eissing] + *) mod_md: the `MDCertificateAuthority` directive can take more than one URL/name of + an ACME CA. This gives a failover for renewals when several consecutive attempts + to get a certificate failed. + A new directive was added: `MDRetryDelay` sets the delay of retries. + A new directive was added: `MDRetryFailover` sets the number of errored + attempts before an alternate CA is selected for certificate renewals. + [Stefan Eissing] + *) mod_http2: remove unused and insecure code. Fixes PR66037. + Thanks to Ronald Crane (Zippenhop LLC) for reporting this. + [Stefan Eissing] + *) mod_proxy: Add backend port to log messages to + ease identification of involved service. [Rainer Jung] + *) mod_http2: removing unscheduling of ongoing tasks when + connection shows potential abuse by a client. This proved + counter-productive and the abuse detection can false flag + requests using server-side-events. + Fixes <https://github.com/icing/mod_h2/issues/231>. + [Stefan Eissing] + *) mod_md: Implement full auto status ("key: value" type status output). + Especially not only status summary counts for certificates and + OCSP stapling but also lists. Auto status format is similar to + what was used for mod_proxy_balancer. + [Rainer Jung] + *) mod_md: fixed a bug leading to failed transfers for OCSP + stapling information when more than 6 certificates needed + updates in the same run. [Stefan Eissing] + *) mod_proxy: Set a status code of 502 in case the backend just closed the + connection in reply to our forwarded request. [Ruediger Pluem] + *) mod_md: a possible NULL pointer deref was fixed in + the JSON code for persisting time periods (start+end). + Fixes #282 on mod_md's github. + Thanks to @marcstern for finding this. [Stefan Eissing] + *) mod_heartmonitor: Set the documented default value + "10" for HeartbeatMaxServers instead of "0". With "0" + no shared memory slotmem was initialized. [Rainer Jung] + *) mod_md: added support for managing certificates via a + local tailscale daemon for users of that secure networking. + This gives trusted certificates for tailscale assigned + domain names in the *.ts.net space. + [Stefan Eissing] +- modified patches + % apache-test-application-xml-type.patch (refreshed) + % apache-test-turn-off-variables-in-ssl-var-lookup.patch (refreshed) + % apache2-HttpContentLengthHeadZero-HttpExpectStrict.patch (refreshed) + +------------------------------------------------------------------- Old: ---- httpd-2.4.53.tar.bz2 httpd-2.4.53.tar.bz2.asc httpd-framework-svn1898917.tar.bz2 New: ---- httpd-2.4.54.tar.bz2 httpd-2.4.54.tar.bz2.asc httpd-framework-svn1901574.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ apache2.spec ++++++ --- /var/tmp/diff_new_pack.6fxOtP/_old 2022-06-13 13:01:55.157065794 +0200 +++ /var/tmp/diff_new_pack.6fxOtP/_new 2022-06-13 13:01:55.165065805 +0200 @@ -18,7 +18,7 @@ %global upstream_name httpd %global testsuite_name %{upstream_name}-framework -%global tversion svn1898917 +%global tversion svn1901574 %global flavor @BUILD_FLAVOR@%{nil} %define mpm %{nil} %if "%{flavor}" == "prefork" || "%{flavor}" == "test_prefork" @@ -103,19 +103,11 @@ %define psuffix -%{flavor} %endif -%if 0%{?suse_version} >= 1500 %define use_firewalld 1 -%else -%define use_firewalld 0 -%endif -%if 0%{?suse_version} >= 1500 || 0%{?is_opensuse} %define build_http2 1 -%else -%define build_http2 0 -%endif Name: apache2%{psuffix} -Version: 2.4.53 +Version: 2.4.54 Release: 0 Summary: The Apache HTTPD Server License: Apache-2.0 ++++++ httpd-2.4.53.tar.bz2 -> httpd-2.4.54.tar.bz2 ++++++ /work/SRC/openSUSE:Factory/apache2/httpd-2.4.53.tar.bz2 /work/SRC/openSUSE:Factory/.apache2.new.1548/httpd-2.4.54.tar.bz2 differ: char 11, line 1 ++++++ httpd-framework-svn1898917.tar.bz2 -> httpd-framework-svn1901574.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpd-framework/README new/httpd-framework/README --- old/httpd-framework/README 2022-03-14 12:48:22.142186913 +0100 +++ new/httpd-framework/README 2022-06-08 13:07:45.628354895 +0200 @@ -36,7 +36,7 @@ HTTP::DAV DateTime Time::HiRes \ Test::Harness Crypt::SSLeay Net::SSLeay IO::Socket::SSL \ IO::Socket::IP IO::Select LWP::Protocol::https AnyEvent \ - AnyEvent::WebSocket::Client FCGI + AnyEvent::WebSocket::Client LWP::Protocol::AnyEvent::http FCGI ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpd-framework/t/conf/extra.conf.in new/httpd-framework/t/conf/extra.conf.in --- old/httpd-framework/t/conf/extra.conf.in 2022-03-14 12:48:21.594183689 +0100 +++ new/httpd-framework/t/conf/extra.conf.in 2022-06-08 13:07:45.728355485 +0200 @@ -1462,6 +1462,11 @@ <IfModule mod_sed.c> AliasMatch /apache/sed/[^/]+/(.*) @DocumentRoot@/$1 + <Location /apache/sed-echo> + SetHandler echo_post + SetInputFilter sed + </Location> + <Location /apache/sed/> AddOutputFilter sed .html </Location> @@ -1469,6 +1474,13 @@ <Location /apache/sed/out-foo> OutputSed "s/foo/bar/g" </Location> + <Location /apache/sed-echo/input> + InputSed "s/foo/bar/g" + </Location> + <Location /apache/sed-echo/out-foo-grow> + SetOutputFilter sed + OutputSed "s/foo/barbarbarbar/g" + </Location> </IfModule> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpd-framework/t/conf/ssl/proxyssl.conf.in new/httpd-framework/t/conf/ssl/proxyssl.conf.in --- old/httpd-framework/t/conf/ssl/proxyssl.conf.in 2022-03-14 12:48:21.594183689 +0100 +++ new/httpd-framework/t/conf/ssl/proxyssl.conf.in 2022-06-08 13:07:45.728355485 +0200 @@ -51,6 +51,8 @@ ProxyPass / https://@proxyssl_url@/ ProxyPassReverse / https://@proxyssl_url@/ + + ProxyPass /proxy/wsoc wss://localhost:@proxy_https_https_port@/modules/lua/websockets.lua </VirtualHost> #here we can test http <-> https using SSLProxyMachine* inside <Proxy> @@ -118,7 +120,6 @@ ProxyPass / http://@servername@:@port@/ ProxyPassReverse / http://@servername@:@port@/ </VirtualHost> - </IfModule> </IfModule> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpd-framework/t/htdocs/modules/lua/websockets.lua new/httpd-framework/t/htdocs/modules/lua/websockets.lua --- old/httpd-framework/t/htdocs/modules/lua/websockets.lua 2022-03-14 12:48:21.726184465 +0100 +++ new/httpd-framework/t/htdocs/modules/lua/websockets.lua 2022-06-08 13:07:45.696355296 +0200 @@ -2,6 +2,11 @@ if r:wsupgrade() then -- if we can upgrade: while true do local line, isFinal = r:wsread() + local len = string.len(line); + r:debug(string.format("writing line of len %d: %s", len, line)) + if len >= 1024 then + r:debug("writing line ending in '" .. string.sub(line, -127, -1) .. "'") + end r:wswrite(line) if line == "quit" then r:wsclose() -- goodbye! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpd-framework/t/modules/proxy_websockets.t new/httpd-framework/t/modules/proxy_websockets.t --- old/httpd-framework/t/modules/proxy_websockets.t 2022-03-14 12:48:21.654184041 +0100 +++ new/httpd-framework/t/modules/proxy_websockets.t 2022-06-08 13:07:45.728355485 +0200 @@ -6,7 +6,10 @@ use Apache::TestUtil; use Apache::TestConfig (); -my $total_tests = 1; +# not reliable, hangs for some people: +# my @test_cases = ( "ping0", "ping1" x 10, "ping2" x 100, "ping3" x 1024, "ping4" x 4096, "sendquit"); +my @test_cases = ( "ping0", "ping1" x 10, "ping2" x 100, "ping3" x 1024, "sendquit"); +my $total_tests = 2; plan tests => $total_tests, need 'AnyEvent::WebSocket::Client', need_module('proxy_http', 'lua'), need_min_apache_version('2.4.47'); @@ -21,7 +24,8 @@ my $quit_program = AnyEvent->condvar; -my $pingok = 0; +my $responses = 0; +my $surprised = 0; $client->connect("ws://$hostport/proxy/wsoc")->cb(sub { our $connection = eval { shift->recv }; @@ -33,21 +37,45 @@ return; } - $connection->send('ping'); + # AnyEvent::WebSocket::Connection does not pass the PONG message down to the callback + # my $actualpingmsg = AnyEvent::WebSocket::Message->new(opcode => 0x09, body => "xxx"); + # $connection->send($actualpingmsg); + + foreach (@test_cases){ + $connection->send($_); + } + + $connection->on(finish => sub { + t_debug("finish"); + }); + # recieve message from the websocket... $connection->on(each_message => sub { # $connection is the same connection object # $message isa AnyEvent::WebSocket::Message my($connection, $message) = @_; - t_debug("wsoc msg received: " . $message->body); - if ("ping" eq $message->body) { - $pingok = 1; + $responses++; + t_debug("wsoc msg received: " . substr($message->body, 0, 5). " opcode " . $message->opcode); + if ("sendquit" eq $message->body) { + $connection->send('quit'); + t_debug("closing"); + $connection->close; # doesn't seem to close TCP. + $quit_program->send(); + } + elsif ($message->body =~ /^ping(\d)/) { + my $offset = $1; + if ($message->body ne $test_cases[$offset]) { + $surprised++; + } + } + else { + $surprised++; } - $connection->send('quit'); - $quit_program->send(); }); + }); $quit_program->recv; -ok t_cmp($pingok, 1); +ok t_cmp($surprised, 0); +ok t_cmp($responses, scalar(@test_cases) ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpd-framework/t/modules/proxy_websockets_ssl.t new/httpd-framework/t/modules/proxy_websockets_ssl.t --- old/httpd-framework/t/modules/proxy_websockets_ssl.t 1970-01-01 01:00:00.000000000 +0100 +++ new/httpd-framework/t/modules/proxy_websockets_ssl.t 2022-06-08 13:07:45.728355485 +0200 @@ -0,0 +1,86 @@ +use strict; +use warnings FATAL => 'all'; + +use Apache::Test; +use Apache::TestRequest; +use Apache::TestUtil; +use Apache::TestConfig (); + +# my @test_cases = ( "ping0", "ping1" x 10, "ping2" x 100, "ping3" x 1024, "ping4" x 4000, "sendquit"); +my @test_cases = ( "ping0", "ping1" x 10, "ping2" x 100, "ping3" x 1024, "sendquit"); +my $total_tests = 2; + +plan tests => $total_tests, need 'AnyEvent::WebSocket::Client', + need_module('ssl', 'proxy_http', 'lua'), need_min_apache_version('2.4.47'); + +require AnyEvent; +require AnyEvent::WebSocket::Client; + +my $config = Apache::Test::config(); +#my $hostport = $config->{vhosts}->{proxy_https_https}->{hostport}; +my $hostport = $config->{vhosts}->{$config->{vars}->{ssl_module_name}}->{hostport}; +my $client = AnyEvent::WebSocket::Client->new(timeout => 5, ssl_ca_file => $config->{vars}->{sslca} . "/" . $config->{vars}->{sslcaorg} . "/certs/ca.crt"); + +my $quit_program = AnyEvent->condvar; + +my $responses = 0; +my $surprised = 0; + +t_debug("wss://$hostport/modules/lua/websockets.lua"); + +# $client->connect("wss://$hostport/proxy/wsoc")->cb(sub { +$client->connect("wss://$hostport/modules/lua/websockets.lua")->cb(sub { + our $connection = eval { shift->recv }; + t_debug("wsoc connected"); + if($@) { + # handle error... + warn $@; + $quit_program->send(); + return; + } + + + # AnyEvent::WebSocket::Connection does not pass the PONG message down to the callback + # my $actualpingmsg = AnyEvent::WebSocket::Message->new(opcode => 0x09, body => "xxx"); + # $connection->send($actualpingmsg); + + foreach (@test_cases){ + $connection->send($_); + } + + $connection->on(finish => sub { + t_debug("finish"); + $quit_program->send(); + }); + + # recieve message from the websocket... + $connection->on(each_message => sub { + # $connection is the same connection object + # $message isa AnyEvent::WebSocket::Message + my($connection, $message) = @_; + $responses++; + t_debug("wsoc msg received: " . substr($message->body, 0, 5). " opcode " . $message->opcode); + if ("sendquit" eq $message->body) { + $connection->send('quit'); + t_debug("closing"); + $connection->close; # doesn't seem to close TCP. + $quit_program->send(); + } + elsif ($message->body =~ /^ping(\d)/) { + my $offset = $1; + if ($message->body ne $test_cases[$offset]) { + t_debug("wrong data"); + $surprised++; + } + } + else { + $surprised++; + } + }); + +}); + +$quit_program->recv; +ok t_cmp($surprised, 0); +# We don't expect the 20k over SSL to work, and we won't read the "sendquit" echoed back either. +ok t_cmp($responses, scalar(@test_cases)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpd-framework/t/modules/sed.t new/httpd-framework/t/modules/sed.t --- old/httpd-framework/t/modules/sed.t 2022-03-14 12:48:21.702184323 +0100 +++ new/httpd-framework/t/modules/sed.t 2022-06-08 13:07:45.728355485 +0200 @@ -7,20 +7,42 @@ my @ts = ( # see t/conf/extra.conf.in - { url => "/apache/sed/out-foo/foobar.html", content => 'barbar', msg => "sed output filter", code => 200 } + { url => "/apache/sed/out-foo/foobar.html", content => 'barbar', msg => "sed output filter", code => '200' }, + # error after status sent + { url => "/apache/sed-echo/out-foo-grow/foobar.html", content => "", msg => "sed output filter too large", code => '200', body=>"foo" x (8192*1024), resplen=>0}, + { url => "/apache/sed-echo/input", content => 'barbar', msg => "sed input filter", code => '200', body=>"foobar" }, + { url => "/apache/sed-echo/input", content => undef, msg => "sed input filter", code => '200', body=>"foo" x (1024)}, + # fixme: returns 400 default error doc for some people instead + # { url => "/apache/sed-echo/input", content => '!!!ERROR!!!', msg => "sed input filter", code => '200', skippable=>true body=>"foo" x (1024*4096)} ); my $tests = 2*scalar @ts; -plan tests => $tests, need_module('sed'); +plan tests => $tests, need 'LWP::Protocol::AnyEvent::http', need_module('sed'); +# Hack to allow streaming of data in/out of mod_echo +require LWP::Protocol::AnyEvent::http; for my $t (@ts) { - my $req = GET $t->{'url'}; + my $req; + if (defined($t->{'body'})) { + t_debug "posting body of size ". length($t->{'body'}); + $req = POST $t->{'url'}, content => $t->{'body'}; + t_debug "... posted body of size ". length($t->{'body'}); + } + else { + $req = GET $t->{'url'}; + } + t_debug "Content Length " . length $req->content; ok t_cmp($req->code, $t->{'code'}, "status code for " . $t->{'url'}); - my $content = $req->content; - chomp($content); - ok t_cmp($content, $t->{content}, $t->{msg}); + if (defined($t->{content})) { + my $content = $req->content; + chomp($content); + ok t_cmp($content, $t->{content}, $t->{msg}); + } + else { + ok "no body check"; + } }