mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-21 13:16:57 +00:00
haproxy public development tree
When generating a Retry token, client CID is used as encryption input. The client must reuse the same CID when emitting the token in a new Initial packet. A memory overflow can occur on quic_generate_retry_token() depending on the size of client CID. This is because space reserved for <aad> only accounted for QUIC_HAP_CID_LEN (size of haproxy owned generated CID). However, the client CID size only depends on client parameter and is instead limited to QUIC_CID_MAXLEN as specified in RFC9000. This was reproduced with ngtcp2 and haproxy built with ASAN. Here is the error log : ==14964==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fffee228cee at pc 0x7ffff785f427 bp 0x7fffee2289e0 sp 0x7fffee228188 WRITE of size 17 at 0x7fffee228cee thread T5 #0 0x7ffff785f426 in __interceptor_memcpy /usr/src/debug/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:827 #1 0x555555906ea7 in quic_generate_retry_token_aad src/quic_conn.c:5452 #2 0x555555907e72 in quic_retry_token_check src/quic_conn.c:5577 #3 0x55555590d01e in qc_lstnr_pkt_rcv src/quic_conn.c:6103 #4 0x5555559190fa in quic_lstnr_dghdlr src/quic_conn.c:7179 #5 0x555555eb0abf in run_tasks_from_lists src/task.c:590 #6 0x555555eb285f in process_runnable_tasks src/task.c:855 #7 0x555555d9118f in run_poll_loop src/haproxy.c:2853 #8 0x555555d91f88 in run_thread_poll_loop src/haproxy.c:3042 #9 0x7ffff709f8fc (/usr/lib/libc.so.6+0x868fc) #10 0x7ffff7121a5f (/usr/lib/libc.so.6+0x108a5f) This must be backported up to 2.6. |
||
---|---|---|
.github | ||
addons | ||
admin | ||
dev | ||
doc | ||
examples | ||
include | ||
reg-tests | ||
scripts | ||
src | ||
tests | ||
.cirrus.yml | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
.travis.yml | ||
BRANCHES | ||
CHANGELOG | ||
CONTRIBUTING | ||
INSTALL | ||
LICENSE | ||
MAINTAINERS | ||
Makefile | ||
README | ||
SUBVERS | ||
VERDATE | ||
VERSION |
The HAProxy documentation has been split into a number of different files for ease of use. Please refer to the following files depending on what you're looking for : - INSTALL for instructions on how to build and install HAProxy - BRANCHES to understand the project's life cycle and what version to use - LICENSE for the project's license - CONTRIBUTING for the process to follow to submit contributions The more detailed documentation is located into the doc/ directory : - doc/intro.txt for a quick introduction on HAProxy - doc/configuration.txt for the configuration's reference manual - doc/lua.txt for the Lua's reference manual - doc/SPOE.txt for how to use the SPOE engine - doc/network-namespaces.txt for how to use network namespaces under Linux - doc/management.txt for the management guide - doc/regression-testing.txt for how to use the regression testing suite - doc/peers.txt for the peers protocol reference - doc/coding-style.txt for how to adopt HAProxy's coding style - doc/internals for developer-specific documentation (not all up to date)