Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
390fa9a
[#3153] fix(nginx): add worker_shutdown_timeout to prevent memory lea…
TheophileDiot Mar 24, 2026
152ba15
feat(docker): add PGDATA environment variable for PostgreSQL data dir…
TheophileDiot Mar 24, 2026
b5b3ab9
[#3298] fix(modsecurity): pass Host header to ModSecurity on HTTP/3 c…
TheophileDiot Mar 24, 2026
1195df3
fix(ui): update checkbox IDs for newsletter subscription in setup and…
TheophileDiot Mar 24, 2026
e5ae23c
[#3241] fix(ui): apply template defaults when switching service templ…
TheophileDiot Mar 24, 2026
f33cdcb
[#3107] fix(stream): fix silent bypass of all stream security plugins
TheophileDiot Mar 24, 2026
3328816
fix(ui): include Request ID in Reports page search functionality
TheophileDiot Mar 26, 2026
74ffeaf
[#3154] fix(modsecurity): decouple SecRequestBodyLimit from MAX_CLIEN…
TheophileDiot Mar 26, 2026
6a7b9b0
fix(entrypoint): clean orphaned NGINX temp files on startup to preven…
TheophileDiot Mar 26, 2026
3282716
fix(templator): enhance PQC auto-detection fallback for OpenSSL 3.5+ …
TheophileDiot Mar 26, 2026
3c2113c
fix(entrypoint): improve process wait logic to handle OOM scenarios g…
TheophileDiot Mar 26, 2026
16ebfdd
Update dependencies in requirements.txt: bump cryptography to 46.0.6,…
TheophileDiot Mar 27, 2026
4630b1b
fix(main): prevent plugin reload on read-only database to avoid infin…
TheophileDiot Mar 27, 2026
0afd212
fix(cachestore): handle cache miss gracefully when cosocket is unavai…
TheophileDiot Mar 27, 2026
95a317e
fix(modsecurity): synthesize Host header from :authority for HTTP/3 s…
TheophileDiot Mar 27, 2026
9571aa7
docs: fix ldap doc
TheophileDiot Mar 27, 2026
23f7d58
refactor(init-stream): streamline plugin and variable loading process
TheophileDiot Mar 27, 2026
d54abb1
fix(bunkernet): avoid calling get_headers() in stream context
TheophileDiot Mar 27, 2026
c301a02
fix(bunkernet): resolve crash in log_stream() due to nil get_headers(…
TheophileDiot Mar 27, 2026
a4a50f1
feat(modsecurity): add request body error handling rules for better r…
TheophileDiot Mar 27, 2026
b863b10
fix(database): prevent data loss by aborting config save on empty ser…
TheophileDiot Mar 27, 2026
3de315b
fix(templator): improve TLS group support check using regex for accur…
TheophileDiot Mar 27, 2026
e5b9236
fix(ui): prevent infinite loop by skipping worker restart on flag res…
TheophileDiot Mar 27, 2026
68dbabf
fix(instance): streamline request ID validation to improve request ha…
TheophileDiot Mar 27, 2026
8e1a248
fix(services): ensure template defaults are only restored if unchange…
TheophileDiot Mar 27, 2026
c72b687
fix(ui): refactor multivalue input rendering to use jQuery for improv…
TheophileDiot Mar 27, 2026
01b624e
[#2516] fix(bans): resolve unban not working for stream services and …
TheophileDiot Mar 27, 2026
ad281a5
[#3155] fix(plugins): skip expensive initialization for non-target UR…
TheophileDiot Mar 27, 2026
8d2dd4a
fix(entrypoint): add PID cleanup for OOM-killed processes in entrypoi…
TheophileDiot Mar 27, 2026
71e8445
[#2583] fix(cachestore): use lock-free cache reads in non-cosocket ph…
TheophileDiot Mar 27, 2026
f46790c
deps: Updated NGINX version to v1.28.3 for all integrations
TheophileDiot Mar 27, 2026
b09927b
fix(modsecurity): add support for HTTP/3 version handling in request …
TheophileDiot Mar 27, 2026
21cb055
deps: Update LuaJIT version to v2.1-20260311
TheophileDiot Mar 27, 2026
74d5b07
deps: Updated Brotli version to v1.2.0
TheophileDiot Mar 27, 2026
7870d03
deps: Update headers-more-nginx-module to v0.39
TheophileDiot Mar 27, 2026
a443ef2
Road to 1.6.10~rc2 🚀
TheophileDiot Mar 27, 2026
971162d
Update CHANGELOG.md
TheophileDiot Mar 27, 2026
a42881d
feat: Add migration scripts for upgrading to version 1.6.10~rc2 acros…
TheophileDiot Mar 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ body:
label: BunkerWeb version
description: What version of BunkerWeb are you running?
placeholder: Version
value: 1.6.10~rc1
value: 1.6.10~rc2
validations:
required: true
- type: dropdown
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ repos:
- id: codespell
name: Codespell Spell Checker
exclude: (^src/(ui/templates|common/core/.+/files|bw/loading)/.+.html|modsecurity-rules.conf.*|src/ui/app/static/(fonts|libs)/.+|src/ui/app/static/locales/.+|docs/.+/.+|src/common/README\..+\.md|src/common/core/.+/README\..+\.md)$
entry: codespell --ignore-regex="(tabEl|Widgits|fpr|TE|STING|SUPPOR|FO|EXPEC)" --skip CHANGELOG.md,CODE_OF_CONDUCT.md,src/ui/client/build.py,src/ui/app/static/json/countries.geojson,src/ui/app/static/json/countries.topojson,src/ui/app/static/js/pages/bans.js,src/ui/app/static/json/periscop.min.json,src/ui/app/static/json/blockhaus.min.json,src/ui/app/routes/reports.py,src/ui/app/static/js/pages/reports.js,docs/json2md.py
entry: codespell --ignore-regex="(tabEl|Widgits|fpr|TE|STING|SUPPOR|FO|EXPEC|ND)" --skip CHANGELOG.md,CODE_OF_CONDUCT.md,src/ui/client/build.py,src/ui/app/static/json/countries.geojson,src/ui/app/static/json/countries.topojson,src/ui/app/static/js/pages/bans.js,src/ui/app/static/json/periscop.min.json,src/ui/app/static/json/blockhaus.min.json,src/ui/app/routes/reports.py,src/ui/app/static/js/pages/reports.js,docs/json2md.py
language: python
types: [text]

Expand Down
27 changes: 25 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,33 @@
# Changelog

## v1.6.10~rc1 - 2026/03/??
## v1.6.10~rc2 - 2026/03/??

- [BUGFIX] Add `WORKER_SHUTDOWN_TIMEOUT` setting (default `30s`) to force old NGINX workers to terminate after a config reload, preventing unbounded memory growth when workers linger in "shutting down" state.
- [BUGFIX] Fix ModSecurity `REQUEST_HEADERS:Host` and `SERVER_NAME` being empty for HTTP/3 requests, causing custom rules with header matching (including chained rules) to silently fail. Patch the ModSecurity-nginx connector to synthesize the `Host` header from the `:authority` pseudo-header on HTTP/3 connections.
- [BUGFIX] Add `MODSECURITY_SEC_REQUEST_BODY_LIMIT` and `MODSECURITY_SEC_REQUEST_BODY_LIMIT_ACTION` settings to decouple ModSecurity body inspection from `MAX_CLIENT_SIZE`, preventing OOM kills on large uploads. Also fix missing `SecRequestBodyLimitAction` and broken unit conversion in global CRS templates.
- [BUGFIX] Add explicit ModSecurity request-body parsing error rules so truncated or malformed bodies are logged consistently and rejected with the correct status when inspection fails.
- [BUGFIX] Clean orphaned NGINX temp files on startup to prevent unbounded disk usage after OOM kills or ungraceful shutdowns.
- [BUGFIX] Fix Post-Quantum Cryptography (PQC) auto-detection failing on OpenSSL 3.5+ because Python's `SSLContext.set_ecdh_curve()` does not recognize hybrid KEM groups like `X25519MLKEM768`. Add subprocess fallback probing `openssl list -kem-algorithms` so that `SSL_ECDH_CURVE=auto` (the default) correctly enables PQC key exchange when the system OpenSSL supports it, with graceful fallback to classical curves when it does not.
- [BUGFIX] Fix BunkerNet `log_stream()` crashing with `attempt to call field 'get_headers' (a nil value)` when reporting blocked IPs in stream (TCP proxy) context, where `ngx.req.get_headers()` is unavailable.
- [BUGFIX] Fix unbanning IPs not working for stream (TCP/UDP) services due to stale local ban cache not being refreshed from Redis after unban.
- [BUGFIX] Fix `ngx.exit(nil)` crash when `DENY_HTTP_STATUS` variable is missing from the internal store.
- [BUGFIX] Fix `robots.txt` and `security.txt` plugins running expensive initialization on every request instead of only on their target URIs, causing severe slowdowns on pages with many parallel assets.
- [BUGFIX] Fix entrypoint spinning at 100% CPU when nginx/supervisord is OOM-killed, by adding process liveness check and stale PID cleanup in the wait loop.
- [BUGFIX] Fix `badbehavior:log()` crash caused by `resty.lock` calling `ngx.sleep()` in `log_by_lua*` context, by skipping the mlcache lock path in non-cosocket phases.
- [BUGFIX] Fix whitelist default-server crash caused by `resty.lock` calling `ngx.sleep()` in `set_by_lua*` context. Use lock-free L1/L2 cache reads in non-cosocket phases instead of silently dropping cached whitelist data. (Fixes #2583)
- [BUGFIX] Fix `is_cosocket_available()` never matching the SSL certificate phase (`"ssl_certificate"` vs actual `"ssl_cert"`), and add missing yieldable phases `server_rewrite`, `ssl_client_hello` and `ssl_session_fetch`.
- [UI] Fix service template switching so the newly selected template applies its defaults immediately while preserving fields already customized by the user.
- [UI] Fix Reports page search not matching on Request ID. The global search field only checked IP, country, method, URL, status, user-agent, reason, and server name, causing searches by Request ID to always return "No matching Reports found" when using the Redis code path.
- [UI] Prevent reload and worker-restart infinite loops in the Web UI when the database is read-only or when configuration flag reset fails.
- [DEPS] Updated NGINX version to v1.28.3 for all integrations.
- [DEPS] Updated LuaJIT version to v2.1-20260311
- [DEPS] Updated Brotli version to v1.2.0
- [DEPS] Updated headers-more-nginx-module version to v0.39

## v1.6.10~rc1 - 2026/03/23

- [SECURITY] Replace Trivy with Docker Scout for container image vulnerability scanning in CI/CD pipeline.
- [BUGFIX] Disable Gunicorn 25.1.0 control socket to prevent worker deadlock caused by fork in multi-threaded master process (UI, TMP-UI, API).
- [BUGFIX] Fix template settings not propagating to services after template edits. Stale form values were stored as explicit overrides when saving a service, permanently blocking template propagation for affected settings. Template custom config changes are now also correctly flagged for scheduler regeneration.
- [UI/SECURITY] Replace unbounded "All" option in DataTable page length menus with capped values (500, 1000) across all pages, and clamp server-side `length`/`start` parameters to prevent OOM from oversized requests.
- [UI] Fix multiselect settings not correctly displaying or applying their values in the template editor and the service creation wizard.
- [UI] Fix multiselect and multivalue settings resetting to default values when all options are unchecked, by preserving empty string as a valid value across Jinja2 rendering, jQuery initialization, and the template editor module.
Expand Down
Loading
Loading