Skip to content

Commit 6e28307

Browse files
committed
pdate nginx to v1.27.3
1 parent 07dc400 commit 6e28307

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+2880
-133
lines changed

CHANGES

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,31 @@
11

2+
Changes with nginx 1.27.3 26 Nov 2024
3+
4+
*) Feature: the "server" directive in the "upstream" block supports the
5+
"resolve" parameter.
6+
7+
*) Feature: the "resolver" and "resolver_timeout" directives in the
8+
"upstream" block.
9+
10+
*) Feature: SmarterMail specific mode support for IMAP LOGIN with
11+
untagged CAPABILITY response in the mail proxy module.
12+
13+
*) Change: now TLSv1 and TLSv1.1 protocols are disabled by default.
14+
15+
*) Change: an IPv6 address in square brackets and no port can be
16+
specified in the "proxy_bind", "fastcgi_bind", "grpc_bind",
17+
"memcached_bind", "scgi_bind", and "uwsgi_bind" directives, and as
18+
client address in ngx_http_realip_module.
19+
20+
*) Bugfix: in the ngx_http_mp4_module.
21+
Thanks to Nils Bars.
22+
23+
*) Bugfix: the "so_keepalive" parameter of the "listen" directive might
24+
be handled incorrectly on DragonFly BSD.
25+
26+
*) Bugfix: in the "proxy_store" directive.
27+
28+
229
Changes with nginx 1.27.2 02 Oct 2024
330

431
*) Feature: SSL certificates, secret keys, and CRLs are now cached on

CHANGES.ru

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,30 @@
11

2+
Изменения в nginx 1.27.3 26.11.2024
3+
4+
*) Добавление: директива server в блоке upstream поддерживает параметр
5+
resolve.
6+
7+
*) Добавление: директивы resolver и resolver_timeout в блоке upstream.
8+
9+
*) Добавление: поддержка SmarterMail-специфичного режима IMAP LOGIN с
10+
нетегированным ответом CAPABILITY в почтовом прокси-сервере.
11+
12+
*) Изменение: теперь протоколы TLSv1 и TLSv1.1 по умолчанию запрещены.
13+
14+
*) Изменение: IPv6-адрес в квадратных скобках без порта теперь можно
15+
указывать в директивах proxy_bind, fastcgi_bind, grpc_bind,
16+
memcached_bind, scgi_bind и uwsgi_bind, а также как адрес клиента в
17+
модуле ngx_http_realip_module.
18+
19+
*) Исправление: в модуле ngx_http_mp4_module.
20+
Спасибо Nils Bars.
21+
22+
*) Исправление: параметр so_keepalive директивы listen мог работать
23+
некорректно на DragonFly BSD.
24+
25+
*) Исправление: в директиве proxy_store.
26+
27+
228
Изменения в nginx 1.27.2 02.10.2024
329

430
*) Добавление: SSL-сертификаты, секретные ключи и списки CRL теперь

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,4 @@ server {
8080
}
8181
8282
83-
```
83+
```

SECURITY.md

Lines changed: 89 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,104 @@
11
# Security Policy
22

3-
## Latest Versions
4-
5-
We advise users to run the most recent mainline or stable release of nginx.
3+
This document provides an overview of security concerns related to nginx
4+
deployments, focusing on confidentiality, integrity, availability, and the
5+
implications of configurations and misconfigurations.
66

77
## Reporting a Vulnerability
88

99
Please report any vulnerabilities via one of the following methods
1010
(in order of preference):
1111

1212
1. [Report a vulnerability](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability)
13-
within this repository. We are using the Github workflow that allows us to
14-
manage vulnerabilities in a private manner and to interact with reporters
13+
within this repository. We are using the GitHub workflow that allows us to
14+
manage vulnerabilities in a private manner and interact with reporters
1515
securely.
1616

1717
2. [Report directly to F5](https://www.f5.com/services/support/report-a-vulnerability).
1818

1919
3. Report via email to security-alert@nginx.org.
2020
This method will be deprecated in the future.
21+
22+
### Vulnerability Disclosure and Fix Process
23+
24+
The nginx team expects that all suspected vulnerabilities be reported
25+
privately via the
26+
[Reporting a Vulnerability](SECURITY.md#reporting-a-vulnerability) guidelines.
27+
If a publicly released vulnerability is reported, we
28+
may request to handle it according to the private disclosure process.
29+
If the reporter agrees, we will follow the private disclosure process.
30+
31+
Security fixes will be applied to all supported stable releases, as well
32+
as the mainline version, as applicable. We recommend using the most recent
33+
mainline or stable release of nginx. Fixes are created and tested by the core
34+
team using a GitHub private fork for security. If necessary, the reporter
35+
may be invited to contribute to the fork and assist with the solution.
36+
37+
The nginx team is committed to responsible information disclosure with
38+
sufficient detail, such as the CVSS score and vector. Privately disclosed
39+
vulnerabilities are embargoed by default until the fix is released.
40+
Communications and fixes remain private until made public. As nginx is
41+
supported by F5, we generally follow the
42+
[F5 security vulnerability response policy](https://my.f5.com/manage/s/article/K4602).
43+
44+
### Vulnerability Disclosure and Fix Service Level Objectives
45+
46+
- We will acknowledge all vulnerability reports within 1 to 3 days.
47+
- Fixes will be developed and released within 90 days from the date of
48+
disclosure. If an extension is needed, we will work with the disclosing person.
49+
- Publicly disclosed (i.e., Zero-Day vulnerabilities) will be addressed ASAP.
50+
51+
## Confidentiality, Integrity, and Availability
52+
53+
### Confidentiality and Integrity
54+
55+
Vulnerabilities compromising data confidentiality or integrity are considered
56+
the highest priority. Any issue leading to unauthorized data access, leaks, or
57+
manipulation will trigger the security release process.
58+
59+
### Availability
60+
61+
Availability issues must meet the following criteria to trigger the security
62+
release process:
63+
- Is present in a standard module included with nginx.
64+
- Arises from traffic that the module is designed to handle.
65+
- Resource exhaustion issues are not mitigated by existing timeout, rate
66+
limiting, or buffer size configurations, or applying changes is impractical.
67+
- Results in highly asymmetric, extreme resource consumption.
68+
69+
Availability issues excluded from the security release process:
70+
- Local file content or upstream response content resulting only in worker
71+
process termination.
72+
- Issues with experimental features which result only in worker process
73+
termination.
74+
75+
## Trusted Configurations and Misconfigurations
76+
77+
In nginx, configuration files, modules, certificate/key pairs, nginx JavaScript,
78+
and local file content are considered trusted sources. Issues arising from
79+
loading or execution of these trusted components are not considered
80+
vulnerabilities. Operators are responsible for securing and maintaining the
81+
integrity of these sources. Misconfigurations can create vulnerabilities, and
82+
operators should implement configurations according to best practices, review
83+
them regularly, and apply security updates.
84+
85+
## Data Plane vs. Control Plane
86+
87+
The data plane handles traffic through nginx, directly interacting with user
88+
data. nginx inherently trusts the content and instructions from upstream
89+
servers. The control plane governs configuration, management, and orchestration.
90+
Misconfigurations or vulnerabilities in the control plane can cause improper
91+
behavior in the data plane.
92+
93+
## Modules Under Scope
94+
95+
The policy applies to all nginx modules included in this repository. Security
96+
considerations and attack vectors for each module will be identified, with
97+
recommended configurations to mitigate risks.
98+
99+
## Debug Logging and Core Files
100+
101+
Debug logs and core files produced by nginx may contain un-sanitized data,
102+
including sensitive information like client requests, server configurations,
103+
and private key material. These artifacts must be handled carefully to avoid
104+
exposing confidential data.

auto/lib/pcre/make

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ if [ $PCRE_LIBRARY = PCRE2 ]; then
3636
pcre2_valid_utf.c \
3737
pcre2_xclass.c"
3838

39-
ngx_pcre_test="pcre2_convert.c \
39+
ngx_pcre_test="pcre2_chkdint.c \
40+
pcre2_convert.c \
4041
pcre2_extuni.c \
4142
pcre2_find_bracket.c \
4243
pcre2_script_run.c \

src/core/nginx.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
#define _NGINX_H_INCLUDED_
1010

1111

12-
#define nginx_version 1027002
13-
#define NGINX_VERSION "1.27.2"
12+
#define nginx_version 1027003
13+
#define NGINX_VERSION "1.27.3"
1414
#define NGINX_VER "nginx/" NGINX_VERSION
1515

1616
#ifdef NGX_BUILD

src/core/ngx_cycle.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ static ngx_connection_t dumb;
3838
ngx_cycle_t *
3939
ngx_init_cycle(ngx_cycle_t *old_cycle)
4040
{
41-
void *rv;
41+
void *rv, *data;
4242
char **senv;
4343
ngx_uint_t i, n;
4444
ngx_log_t *log;
@@ -438,6 +438,8 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
438438
opart = &old_cycle->shared_memory.part;
439439
oshm_zone = opart->elts;
440440

441+
data = NULL;
442+
441443
for (n = 0; /* void */ ; n++) {
442444

443445
if (n >= opart->nelts) {
@@ -461,9 +463,13 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
461463
continue;
462464
}
463465

466+
if (shm_zone[i].tag == oshm_zone[n].tag && shm_zone[i].noreuse) {
467+
data = oshm_zone[n].data;
468+
break;
469+
}
470+
464471
if (shm_zone[i].tag == oshm_zone[n].tag
465-
&& shm_zone[i].shm.size == oshm_zone[n].shm.size
466-
&& !shm_zone[i].noreuse)
472+
&& shm_zone[i].shm.size == oshm_zone[n].shm.size)
467473
{
468474
shm_zone[i].shm.addr = oshm_zone[n].shm.addr;
469475
#if (NGX_WIN32)
@@ -490,7 +496,7 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
490496
goto failed;
491497
}
492498

493-
if (shm_zone[i].init(&shm_zone[i], NULL) != NGX_OK) {
499+
if (shm_zone[i].init(&shm_zone[i], data) != NGX_OK) {
494500
goto failed;
495501
}
496502

src/core/ngx_inet.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,11 @@ ngx_parse_addr_port(ngx_pool_t *pool, ngx_addr_t *addr, u_char *text,
639639

640640
p = ngx_strlchr(text, last, ']');
641641

642-
if (p == NULL || p == last - 1 || *++p != ':') {
642+
if (p == last - 1) {
643+
return ngx_parse_addr(pool, addr, text + 1, len - 2);
644+
}
645+
646+
if (p == NULL || *++p != ':') {
643647
return NGX_DECLINED;
644648
}
645649

src/event/ngx_event_openssl.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1347,7 +1347,7 @@ ngx_ssl_dhparam(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *file)
13471347

13481348
if (SSL_CTX_set0_tmp_dh_pkey(ssl->ctx, dh) != 1) {
13491349
ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0,
1350-
"SSL_CTX_set0_tmp_dh_pkey(\%s\") failed", file->data);
1350+
"SSL_CTX_set0_tmp_dh_pkey(\"%s\") failed", file->data);
13511351
#if (OPENSSL_VERSION_NUMBER >= 0x3000001fL)
13521352
EVP_PKEY_free(dh);
13531353
#endif

src/event/ngx_event_openssl.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,13 @@ typedef struct {
187187
#define NGX_SSL_TLSv1_3 0x0040
188188

189189

190+
#if (defined SSL_OP_NO_TLSv1_2 || defined SSL_OP_NO_TLSv1_3)
191+
#define NGX_SSL_DEFAULT_PROTOCOLS (NGX_SSL_TLSv1_2|NGX_SSL_TLSv1_3)
192+
#else
193+
#define NGX_SSL_DEFAULT_PROTOCOLS (NGX_SSL_TLSv1|NGX_SSL_TLSv1_1)
194+
#endif
195+
196+
190197
#define NGX_SSL_BUFFER 1
191198
#define NGX_SSL_CLIENT 2
192199

src/event/ngx_event_openssl_cache.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ ngx_ssl_cache_fetch(ngx_conf_t *cf, ngx_uint_t index, char **err,
138138
ngx_ssl_cache_type_t *type;
139139
ngx_ssl_cache_node_t *cn;
140140

141+
*err = NULL;
142+
141143
if (ngx_ssl_cache_init_key(cf->pool, index, path, &id) != NGX_OK) {
142144
return NULL;
143145
}
@@ -183,6 +185,8 @@ ngx_ssl_cache_connection_fetch(ngx_pool_t *pool, ngx_uint_t index, char **err,
183185
{
184186
ngx_ssl_cache_key_t id;
185187

188+
*err = NULL;
189+
186190
if (ngx_ssl_cache_init_key(pool, index, path, &id) != NGX_OK) {
187191
return NULL;
188192
}

src/event/quic/ngx_event_quic_ack.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -631,13 +631,12 @@ ngx_quic_resend_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx)
631631
case NGX_QUIC_FT_STREAM:
632632
qs = ngx_quic_find_stream(&qc->streams.tree, f->u.stream.stream_id);
633633

634-
if (qs) {
635-
if (qs->send_state == NGX_QUIC_STREAM_SEND_RESET_SENT
636-
|| qs->send_state == NGX_QUIC_STREAM_SEND_RESET_RECVD)
637-
{
638-
ngx_quic_free_frame(c, f);
639-
break;
640-
}
634+
if (qs == NULL
635+
|| qs->send_state == NGX_QUIC_STREAM_SEND_RESET_SENT
636+
|| qs->send_state == NGX_QUIC_STREAM_SEND_RESET_RECVD)
637+
{
638+
ngx_quic_free_frame(c, f);
639+
break;
641640
}
642641

643642
/* fall through */

src/event/quic/ngx_event_quic_openssl_compat.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@ SSL_set_quic_method(SSL *ssl, const SSL_QUIC_METHOD *quic_method)
391391

392392
wbio = BIO_new(BIO_s_null());
393393
if (wbio == NULL) {
394+
BIO_free(rbio);
394395
return 0;
395396
}
396397

0 commit comments

Comments
 (0)