Hi,

HAProxy 3.2.6 was released on 2025/10/03. It added 57 new commits
after version 3.2.5.

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.2/src/
   Git repository   : https://git.haproxy.org/git/haproxy-3.2.git/
   Git Web browsing : https://git.haproxy.org/?p=haproxy-3.2.git
   Changelog        : https://www.haproxy.org/download/3.2/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 :
Christopher Faulet (14):
      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: tcpcheck: Don't use sni as pool-conn-name for non-SSL 
connections
      BUG/MEDIUM: resolvers: Properly cache do-resolv resolution
      BUG/MINOR: resolvers: Restore round-robin selection on records in DNS 
answers
      BUG/MEDIUM: resolvers: Test for empty tree when getting a record from DNS 
answer
      BUG/MEDIUM: resolvers: Make resolution owns its hostname_dn value
      BUG/MEDIUM: resolvers: Accept to create resolution without hostname
      BUG/MEDIUM: resolvers: Wake resolver task up whne unlinking a stream 
requester
      BUG/MINOR: pools: Fix the dump of pools info to deal with buffers 
limitations
      BUG/MINOR: compression: Test payload size only if content-length is 
specified
      BUG/MINOR: pattern: Properly flag virtual maps as using samples
      BUG/MINOR: pattern: Fix pattern lookup for map with opt@ prefix

Olivier Houchard (6):
      BUG/MEDIUM: stick-tables: Don't let table_process_entry() handle refcnt
      MINOR: mt_list: Implement MT_LIST_POP_LOCKED()
      BUG/MEDIUM: stick-tables: Make sure not to free a pending entry
      MEDIUM: servers: Schedule the server requeue target on creation
      MEDIUM: fwlc: Make it so fwlc_srv_reposition works with unqueued srv
      BUG/MEDIUM: fwlc: Handle memory allocation failures.

William Lallemand (9):
      BUG/MINOR: acme/cli: wrong description for "acme challenge_ready"
      BUILD: halog: misleading indentation in halog.c
      CI: github: build halog on the vtest job
      BUG/MINOR: acme: don't unlink from acme_ctx_destroy()
      BUG/MEDIUM: acme: cfg_postsection_acme() don't init correctly acme 
sections
      BUG/MEDIUM: acme: free() of i2d_X509_REQ() with AWS-LC
      BUG/MINOR: acme: possible overflow on scheduling computation
      BUG/MINOR: acme: possible overflow in acme_will_expire()
      BUG/MEDIUM: ssl: ca-file directory mode must read every certificates of a 
file

Willy Tarreau (26):
      MINOR: stick-tables: limit the number of visited nodes during expiration
      OPTIM: stick-tables: exit expiry faster when the update lock is held
      MINOR: debug: report the process id in warnings and panics
      DEBUG: stream: count the number of passes in the connect loop
      MINOR: debug: report the number of loops and ctxsw for each thread
      MINOR: debug: report the time since last wakeup and call
      DEBUG: peers: export functions that use locks
      MINOR: stick-table: permit stksess_new() to temporarily allocate more 
entries
      MEDIUM: stick-tables: relax stktable_trash_oldest() to only purge what is 
needed
      MEDIUM: stick-tables: give up on lock contention in process_table_expire()
      MEDIUM: stick-tables: don't wait indefinitely in 
stktable_add_pend_updates()
      MEDIUM: peers: don't even try to process updates under contention
      MEDIUM: stick-table: move process_table_expire() to a single thread
      MEDIUM: peers: move process_peer_sync() to a single thread
      MINOR: activity: indicate the number of calls on "show tasks"
      MINOR: tools: don't emit "+0" for symbol names which exactly match known 
ones
      OPTIM: sink: reduce contention on sink_announce_dropped()
      MEDIUM: dns: bind the nameserver sockets to the initiating thread
      MEDIUM: resolvers: make the process_resolvers() task single-threaded
      MINOR: sched: let's permit to share the local ctx between threads
      MINOR: sched: pass the thread number to is_sched_alive()
      BUG/MEDIUM: wdt: improve stuck task detection accuracy
      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
      BUG/MEDIUM: resolvers: break an infinite loop in 
resolv_get_ip_from_response()

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