<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/http, branch release-1.15.6</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>gRPC: limited allocations due to ping and settings frames.</title>
<updated>2018-11-06T13:29:59+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-11-06T13:29:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=42043b4ef7e60eabed114164f36c1d2314faef1a'/>
<id>42043b4ef7e60eabed114164f36c1d2314faef1a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: limit the number of idle state switches.</title>
<updated>2018-11-06T13:29:49+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2018-11-06T13:29:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=60b93594cca9cb5d63f26e724c458ccb380ac540'/>
<id>60b93594cca9cb5d63f26e724c458ccb380ac540</id>
<content type='text'>
An attack that continuously switches HTTP/2 connection between
idle and active states can result in excessive CPU usage.
This is because when a connection switches to the idle state,
all of its memory pool caches are freed.

This change limits the maximum allowed number of idle state
switches to 10 * http2_max_requests (i.e., 10000 by default).
This limits possible CPU usage in one connection, and also
imposes a limit on the maximum lifetime of a connection.

Initially reported by Gal Goldshtein from F5 Networks.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
An attack that continuously switches HTTP/2 connection between
idle and active states can result in excessive CPU usage.
This is because when a connection switches to the idle state,
all of its memory pool caches are freed.

This change limits the maximum allowed number of idle state
switches to 10 * http2_max_requests (i.e., 10000 by default).
This limits possible CPU usage in one connection, and also
imposes a limit on the maximum lifetime of a connection.

Initially reported by Gal Goldshtein from F5 Networks.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/2: flood detection.</title>
<updated>2018-11-06T13:29:35+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2018-11-06T13:29:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=8ec4146e1aad3a4fc0b19a024f8ef3516791e30c'/>
<id>8ec4146e1aad3a4fc0b19a024f8ef3516791e30c</id>
<content type='text'>
Fixed uncontrolled memory growth in case peer is flooding us with
some frames (e.g., SETTINGS and PING) and doesn't read data.  Fix
is to limit the number of allocated control frames.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixed uncontrolled memory growth in case peer is flooding us with
some frames (e.g., SETTINGS and PING) and doesn't read data.  Fix
is to limit the number of allocated control frames.
</pre>
</div>
</content>
</entry>
<entry>
<title>Mp4: fixed reading 64-bit atoms.</title>
<updated>2018-11-06T13:29:18+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2018-11-06T13:29:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=9cd9526ba68a3dcfc763a3f7693ccb4f48e855fb'/>
<id>9cd9526ba68a3dcfc763a3f7693ccb4f48e855fb</id>
<content type='text'>
Previously there was no validation for the size of a 64-bit atom
in an mp4 file.  This could lead to a CPU hog when the size is 0,
or various other problems due to integer underflow when calculating
atom data size, including segmentation fault or worker process
memory disclosure.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously there was no validation for the size of a 64-bit atom
in an mp4 file.  This could lead to a CPU hog when the size is 0,
or various other problems due to integer underflow when calculating
atom data size, including segmentation fault or worker process
memory disclosure.
</pre>
</div>
</content>
</entry>
<entry>
<title>Cache: improved keys zone size error reporting.</title>
<updated>2018-10-31T13:49:40+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-10-31T13:49:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=b66ee453cc6bc1832c3f056c9a46240bd390617c'/>
<id>b66ee453cc6bc1832c3f056c9a46240bd390617c</id>
<content type='text'>
After this change, too small keys zones are explicitly reported as such,
much like in the other modules which use shared memory.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After this change, too small keys zones are explicitly reported as such,
much like in the other modules which use shared memory.
</pre>
</div>
</content>
</entry>
<entry>
<title>Cache: fixed minimum cache keys zone size limit.</title>
<updated>2018-10-31T13:49:39+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-10-31T13:49:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=f186a01901fbfe425873a3751f84899df4e28804'/>
<id>f186a01901fbfe425873a3751f84899df4e28804</id>
<content type='text'>
Size of a shared memory zones must be at least two pages - one page
for slab allocator internal data, and another page for actual allocations.
Using 8192 instead is wrong, as there are systems with page sizes other
than 4096.

Note well that two pages is usually too low as well.  In particular, cache
is likely to use two allocations of different sizes for global structures,
and at least four pages will be needed to properly allocate cache nodes.
Except in a few very special cases, with keys zone of just two pages nginx
won't be able to start.  Other uses of shared memory impose a limit
of 8 pages, which provides some room for global allocations.  This patch
doesn't try to address this though.

Inspired by ticket #1665.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Size of a shared memory zones must be at least two pages - one page
for slab allocator internal data, and another page for actual allocations.
Using 8192 instead is wrong, as there are systems with page sizes other
than 4096.

Note well that two pages is usually too low as well.  In particular, cache
is likely to use two allocations of different sizes for global structures,
and at least four pages will be needed to properly allocate cache nodes.
Except in a few very special cases, with keys zone of just two pages nginx
won't be able to start.  Other uses of shared memory impose a limit
of 8 pages, which provides some room for global allocations.  This patch
doesn't try to address this though.

Inspired by ticket #1665.
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream: proxy_socket_keepalive and friends.</title>
<updated>2018-10-03T11:08:51+00:00</updated>
<author>
<name>Vladimir Homutov</name>
<email>vl@nginx.com</email>
</author>
<published>2018-10-03T11:08:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=1305b8414d22610b0820f6df5841418bf98fc370'/>
<id>1305b8414d22610b0820f6df5841418bf98fc370</id>
<content type='text'>
The directives enable the use of the SO_KEEPALIVE option on
upstream connections.  By default, the value is left unchanged.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The directives enable the use of the SO_KEEPALIVE option on
upstream connections.  By default, the value is left unchanged.
</pre>
</div>
</content>
</entry>
<entry>
<title>SSL: fixed segfault on renegotiation (ticket #1646).</title>
<updated>2018-10-02T14:46:18+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2018-10-02T14:46:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=53803b4780be15d8014be183d4161091fd5f3376'/>
<id>53803b4780be15d8014be183d4161091fd5f3376</id>
<content type='text'>
In e3ba4026c02d (1.15.4) nginx own renegotiation checks were disabled
if SSL_OP_NO_RENEGOTIATION is available.  But since SSL_OP_NO_RENEGOTIATION
is only set on a connection, not in an SSL context, SSL_clear_option()
removed it as long as a matching virtual server was found.  This resulted
in a segmentation fault similar to the one fixed in a6902a941279 (1.9.8),
affecting nginx built with OpenSSL 1.1.0h or higher.

To fix this, SSL_OP_NO_RENEGOTIATION is now explicitly set in
ngx_http_ssl_servername() after adjusting options.  Additionally, instead
of c-&gt;ssl-&gt;renegotiation we now check c-&gt;ssl-&gt;handshaked, which seems
to be a more correct flag to test, and will prevent the segmentation fault
from happening even if SSL_OP_NO_RENEGOTIATION is not working.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In e3ba4026c02d (1.15.4) nginx own renegotiation checks were disabled
if SSL_OP_NO_RENEGOTIATION is available.  But since SSL_OP_NO_RENEGOTIATION
is only set on a connection, not in an SSL context, SSL_clear_option()
removed it as long as a matching virtual server was found.  This resulted
in a segmentation fault similar to the one fixed in a6902a941279 (1.9.8),
affecting nginx built with OpenSSL 1.1.0h or higher.

To fix this, SSL_OP_NO_RENEGOTIATION is now explicitly set in
ngx_http_ssl_servername() after adjusting options.  Additionally, instead
of c-&gt;ssl-&gt;renegotiation we now check c-&gt;ssl-&gt;handshaked, which seems
to be a more correct flag to test, and will prevent the segmentation fault
from happening even if SSL_OP_NO_RENEGOTIATION is not working.
</pre>
</div>
</content>
</entry>
<entry>
<title>Cache: status must be less then 599 in *_cache_valid directives.</title>
<updated>2018-09-24T17:26:46+00:00</updated>
<author>
<name>Gena Makhomed</name>
<email>gmm@csdoc.com</email>
</author>
<published>2018-09-24T17:26:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=1065455289d72b140f9e63a420b531eaae2d4039'/>
<id>1065455289d72b140f9e63a420b531eaae2d4039</id>
<content type='text'>
Previously, configurations with typo, for example

    fastcgi_cache_valid 200301 302 5m;

successfully pass configuration test. Adding check for status
codes &gt; 599, and such configurations are now properly rejected.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, configurations with typo, for example

    fastcgi_cache_valid 200301 302 5m;

successfully pass configuration test. Adding check for status
codes &gt; 599, and such configurations are now properly rejected.
</pre>
</div>
</content>
</entry>
<entry>
<title>Removed bgcolor attribute on body in error pages and autoindex.</title>
<updated>2018-09-19T14:26:47+00:00</updated>
<author>
<name>Nova DasSarma</name>
<email>nova@novalinium.com</email>
</author>
<published>2018-09-19T14:26:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=8117b3f5a06b68afb292ddd19bf6ee6000707232'/>
<id>8117b3f5a06b68afb292ddd19bf6ee6000707232</id>
<content type='text'>
The bgcolor attribute overrides compatibility settings in browsers
and leads to undesirable behavior when the default font color is set
to white in the browser, since font-color is not also overridden.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The bgcolor attribute overrides compatibility settings in browsers
and leads to undesirable behavior when the default font color is set
to white in the browser, since font-color is not also overridden.
</pre>
</div>
</content>
</entry>
</feed>
