Hi,

HAProxy 3.0.12 was released on 2025/10/03. It added 132 new commits
after version 3.0.11.

It is not the usual announce message describing all bugs fixed by this
release. Here, only the critical fixes about the mjson JSON decoder will be
described. The formal announce message will come quickly after that, by
replying to this mail, most probably next Monday.

So, as said, an issue in the mjson JSON decoder causes number with large
exponents to eat a lot of CPU and possibly even to trigger the watchdog and
kill the process. It affects converters "json_query()",
"jwt_header_query()", and "jwt_payload_query()". There's no work around for
this because the issue is at a really low level in the decoder, so one
cannot really count on a reasonable regex or such a thing to fix this. This
bug was assigned CVE-2025-11230 and affects all versions featuring the JSON
decoder, or 2.4 and above. Only an update will fix this. We'd like to thank
Oula Kivalo for reporting the issue with a reproducer. As a note, we were
notified that CVE-2023-30421 had already been assigned to the mjson library
two years ago about the same issue but no fix had been issued and it was not
mentioned in the project (though an issue about this was reported).

If you rely on one of the converters above, you must definitely
upgrade. Otherwise, stay tune for the official announce message to have more
info about this release.

Please find the usual URLs below :
   Site index       : https://www.haproxy.org/
   Documentation    : https://docs.haproxy.org/
   Wiki             : https://github.com/haproxy/wiki/wiki
   Discourse        : https://discourse.haproxy.org/
   Slack channel    : https://slack.haproxy.org/
   Issue tracker    : https://github.com/haproxy/haproxy/issues
   Q&A from devs    : https://github.com/orgs/haproxy/discussions
   Sources          : https://www.haproxy.org/download/3.0/src/
   Git repository   : https://git.haproxy.org/git/haproxy-3.0.git/
   Git Web browsing : https://git.haproxy.org/?p=haproxy-3.0.git
   Changelog        : https://www.haproxy.org/download/3.0/src/CHANGELOG
   Dataplane API    : 
https://github.com/haproxytech/dataplaneapi/releases/latest
   Pending bugs     : https://www.haproxy.org/l/pending-bugs
   Reviewed bugs    : https://www.haproxy.org/l/reviewed-bugs
   Code reports     : https://www.haproxy.org/l/code-reports
   Latest builds    : https://www.haproxy.org/l/dev-packages


---
Complete changelog :
Alexander Stephan (6):
      BUG/MINOR: halog: Add OOM checks for calloc() in 
filter_count_srv_status() and filter_count_url()
      BUG/MINOR: log: Add OOM checks for calloc() and malloc() in logformat 
parser and dup_logger()
      BUG/MINOR: acl: Add OOM check for calloc() in smp_fetch_acl_parse()
      BUG/MINOR: cfgparse: Add OOM check for calloc() in cfg_parse_listen()
      BUG/MINOR: compression: Add OOM check for calloc() in 
parse_compression_options()
      BUG/MINOR: tools: Add OOM check for malloc() in indent_msg()

Amaury Denoyelle (23):
      BUG/MINOR: mux-quic: do not decode if conn in error
      MINOR: quic: rename min/max fields for congestion window algo
      BUG/MINOR: quic: ensure cwnd limits are always enforced
      BUG/MINOR: config/server: reject QUIC addresses
      BUG/MINOR: mux-quic/h3: properly handle too low peer fctl initial stream
      DOC: list missing global QUIC settings
      BUG/MINOR: mux-h1: fix wrong lock label
      BUG/MINOR: quic: do not emit probe data if CONNECTION_CLOSE requested
      BUG/MAJOR: quic: fix INITIAL padding with probing packet only
      MINOR: quic: centralize padding for HP sampling on packet building
      BUG/MINOR: connection: rearrange union list members
      BUG/MINOR: connection: remove extra session_unown_conn() on reverse
      BUG/MINOR: server: decrement session idle_conns on del server
      MINOR: doc: add missing statistics column
      MINOR: doc: add missing statistics column
      BUG/MAJOR: mux-quic: fix crash on reload during emission
      BUG/MINOR: quic: fix room check if padding requested
      BUG/MINOR: quic: fix padding issue on INITIAL retransmit
      BUG/MEDIUM: conn: fix UAF on connection after reversal on edge
      BUG/MINOR: connection: streamline conn detach from lists
      CLEANUP: quic: fix typo in quic_tx trace
      OPTIM: check: do not delay MUX for ALPN if SSL not active
      BUG/MEDIUM: checks: fix ALPN inheritance from server

Aurelien DARRAGON (5):
      BUG/MINOR: hlua_fcn: restore server pairs iterator pointer consistency
      BUG/MEDIUM: hlua_fcn: ensure systematic watcher cleanup for server list 
iterator
      BUG/MEDIUM: logs: fix sess_build_logline_orig() recursion with options
      BUG/MINOR: hlua: take default-path into account with lua-load-per-thread
      BUG/MINOR: log: fix potential memory leak upon error in 
add_to_logformat_list()

Christopher Faulet (35):
      DOC: config: Fix a typo in 2.7 (Name format for maps and ACLs)
      BUG/MEDIUM: check: Requeue healthchecks on I/O events to handle check 
timeout
      BUG/MINIR: h1: Fix doc of 'accept-unsafe-...-request' about URI parsing
      BUG/MEDIUM: cli: Don't consume data if outbuf is full or not available
      MINOR: cli: handle EOS/ERROR first
      BUG/MEDIUM: check: Set SOCKERR by default when a connection error is 
reported
      BUG/MINOR: stream: Avoid recursive evaluation for unique-id based on 
itself
      BUG/MINOR: log: Be able to use %ID alias at anytime of the stream's 
evaluation
      BUG/MEDIUM: hlua: Forbid any L6/L7 sample fetche functions from lua 
services
      BUG/MEDIUM: mux-h2: Properly handle connection error during preface 
sending
      BUG/MINOR: hlua: Skip headers when a receive is performed on an HTTP 
applet
      BUG/MEDIUM: hlua: Report to SC when data were consumed on a lua socket
      BUG/MEDIUM: hlua: Report to SC when output data are blocked on a lua 
socket
      BUG/MEDIUM: dns: Reset reconnect tempo when connection is finally 
established
      BUG/MEDIUM: http-client: Don't wake http-client applet if nothing was 
xferred
      BUG/MEDIUM: http-client: Properly inc input data when HTX blocks are 
xferred
      BUG/MEDIUM: http-client: Ask for more room when request data cannot be 
xferred
      BUG/MINOR: http-client: Ignore 1XX interim responses in non-HTX mode
      BUG/MINOR: http-client: Reject any 101-switching-protocols response
      BUG/MEDIUM: http-client: Drain the request if an early response is 
received
      BUG/MEDIUM: http-client: Notify applet has more data to deliver until the 
EOM
      BUG/MINOR: applet: Don't trigger BUG_ON if the tid is not on appctx init
      BUG/MEDIUM: http-client: Test HTX_FL_EOM flag before commiting the HTX 
buffer
      BUG/MEDIUM: stconn: Fix conditions to know an applet can get data from 
stream
      BUG/MEDIUM: Remove sync sends from streams to applets
      REG-TESTS: map_redirect: Don't use hdr_dom in ACLs with "-m end" matching 
method
      BUG/MEDIUM: server: Duplicate healthcheck's alpn inherited from default 
server
      BUG/MAJOR: stream: Remove READ/WRITE events on channels after analysers 
eval
      BUG/MAJOR: stream: Force channel analysis on successful synchronous send
      MINOR: server: Parse sni and pool-conn-name expressions in a dedicated 
function
      BUG/MEDIUM: server: Use sni as pool connection name for SSL server only
      BUG/MINOR: server: Update healthcheck when server settings are changed 
via CLI
      BUG/MINOR: pattern: Properly flag virtual maps as using samples
      BUG/MINOR: pattern: Fix pattern lookup for map with opt@ prefix
      Revert "MINOR: quic: Useless TX buffer size reduction in closing state"

David Carlier (2):
      BUILD/MEDIUM: deviceatlas: fix when installed in custom locations.
      DOC: deviceatlas build clarifications

Frederic Lecaille (11):
      BUG/MINOR: quic: Missing SSL session object freeing
      BUG/MINOR: quic: wrong QUIC_FT_CONNECTION_CLOSE(0x1c) frame encoding
      MINOR: quic: Useless TX buffer size reduction in closing state
      BUG/MINOR: quic: Wrong source address use on FreeBSD
      BUG/MINOR: quic: reorder fragmented RX CRYPTO frames by their offsets
      MINOR: quic: remove ->offset qf_crypto struct field
      BUG/MINOR: mux-quic: trace with non initialized qcc
      CLEANUP: quic: remove a useless CRYPTO frame variable assignment
      BUG/MEDIUM: quic: CRYPTO frame freeing without eb_delete()
      BUG/MINOR: quic: ignore AGAIN ncbuf err when parsing CRYPTO frames
      MINOR: quic: Add more information about RX packets

Lukas Tribus (2):
      DOC: management: fix typo in commit f4f93c56
      DOC: config: recommend single quoting passwords

Olivier Houchard (7):
      BUG/MEDIUM: fd: Use the provided tgid in fd_insert() to get tgroup_info
      BUG/MEDIUM: threads: Disable the workaround to load libgcc_s on macOS
      BUG/MEDIUM: ssl: Fix 0rtt to the server
      BUG/MEDIUM: ssl: fix build with AWS-LC
      BUG/MEDIUM: h1: Allow reception if we have early data
      BUG/MEDIUM: ssl: create the mux immediately on early data
      BUG/MEDIUM: stick-tables: Don't let table_process_entry() handle refcnt

Remi Tricot-Le Breton (4):
      BUG/MINOR: jwt: Copy input and parameters in dedicated buffers in 
jwt_verify converter
      DOC: Fix 'jwt_verify' converter doc
      BUG/MINOR: init: Initialize random seed earlier in the init process
      BUG/MINOR: ocsp: Crash when updating CA during ocsp updates

Valentine Krasnobaeva (6):
      MINOR: compiler: add __nonstring macro
      DOC: config: prefer-last-server: add notes for non-deterministic 
algorithms
      BUG/MINOR: halog: exit with error when some output filters are set 
simultaneosly
      BUG/MINOR: stick-table: cap sticky counter idx with tune.nb_stk_ctr 
instead of MAX_SESS_STKCTR
      BUG/MINOR: acl: set arg_list->kw to aclkw->kw string literal if aclkw is 
found
      BUG/MINOR: resolvers: always normalize FQDN from response

William Lallemand (9):
      BUG/MEDIUM: ssl/clienthello: ECDSA with ssl-max-ver TLSv1.2 and no ECDSA 
ciphers
      DOC: configuration: add details on prefer-client-ciphers
      BUG/MINOR: httpclient: wrongly named httpproxy flag
      DOC: management: clarify usage of -V with -c
      MEDIUM: ssl/cli: relax crt insertion in crt-list of type directory
      DOC: unreliable sockpair@ on macOS
      DOC: configuration: confuse "strict-mode" with "zero-warning"
      BUILD: halog: misleading indentation in halog.c
      BUG/MEDIUM: ssl: ca-file directory mode must read every certificates of a 
file

Willy Tarreau (20):
      BUG/MEDIUM: peers: also limit the number of incoming updates
      BUILD: tools: properly define ha_dump_backtrace() to avoid a build warning
      MINOR: http: add a function to validate characters of :authority
      BUG/MEDIUM: h2/h3: reject some forbidden chars in :authority before 
reassembly
      BUG/MEDIUM: h1/h2/h3: reject forbidden chars in the Host header field
      SCRIPTS: drop the HTML generation from announce-release
      BUG/MINOR: listener: really assign distinct IDs to shards
      BUILD: compat: provide relaxed versions of the MIN/MAX macros
      BUILD: compat: always set _POSIX_VERSION to ease comparisons
      BUG/MINOR: haproxy: be sure not to quit too early on soft stop
      BUILD: acl: silence a possible null deref warning in parse_acl_expr()
      REGTESTS: explicitly use "balance roundrobin" where RR is needed
      BUILD: trace: silence a bogus build warning at -Og
      BUG/MINOR: cpu_topo: work around a small bug in musl's CPU_ISSET()
      BUG/MINOR: activity: fix reporting of task latency
      BUG/MEDIUM: ring: invert the length check to avoid an int overflow
      OPTIM: sink: reduce contention on sink_announce_dropped()
      MINOR: ssl: add the ssl_bc_sni sample fetch function to retrieve backend 
SNI
      DOC: config: clarify some known limitations of the json_query() converter
      BUG/CRITICAL: mjson: fix possible DoS when parsing numbers

zhanhb (2):
      BUG/MINOR: h2: forbid 'Z' as well in header field names checks
      BUG/MINOR: h3: forbid 'Z' as well in header field names checks

---
Christopher Faulet



Reply via email to