I am having some issue searching Bugzilla for any issue involving process_regexp in mod_headers.c .
It finds nothing, so I am assuming I did something wrong in my search. Will file bug if not already filed. We are investigating an infinite loop (stack overflow) issue, caused by "securing" a system. ZZZ-STIG-SV-214288r881493_rule.conf:Header always edit* Set-Cookie ^(.*)$ $1;HttpOnly;secure Note: the STIG is "bad", The PHP code was "weird" sending an empty Set-Cookie header. Using .+ bypasses the infinite loop of input = substation caused by matching and replacing an empty string. I am available for debugging this until fixed. Opinions welcomed. It is currently mitigated. I can test, and we will attempt to patch. OS : RHEL 8 x86_64 Name : httpd Version : 2.4.37 Release : 62.module+el8.9.0+19699+7a7a2044 /var/log/httpd/error_log:[Thu Jan 04 18:43:23.469536 2024] [core:notice] [pid 1319:tid 140078043187520] AH00051: child pid 1364 exit signal Segmentation fault (11), possible coredump in /var/log/httpd/core/ #0 0x00007f6675b9eef1 in match (eptr=eptr@entry=0x7f6628013b45 "", ecode=0x559019b00a79 "U\rx", mstart=mstart@entry=0x7f6628013b45 "", offset_top=offset_top@entry=2, md=md@entry=0x7f663e7fe410, eptrb=eptrb@entry=0x0, rdepth=1) at pcre_exec.c:522 #1 0x00007f6675ba146b in match (eptr=<optimized out>, eptr@entry=0x7f6628013b45 "", ecode=0x559019b00a74 "\205", mstart=mstart@entry=0x7f6628013b45 "", offset_top=offset_top@entry=2, md=md@entry=0x7f663e7fe410, eptrb=eptrb@entry=0x0, rdepth=<optimized out>) at pcre_exec.c:989 #2 0x00007f6675bb0651 in pcre_exec (argument_re=0x559019b00a30, extra_data=extra_data@entry=0x0, subject=0x7f6628013b45 "", length=0, start_offset=start_offset@entry=0, options=options@entry=0, offsets=0x7f663e7fe590, offsetcount=30) at pcre_exec.c:6942 #3 0x0000559018576a69 in ap_regexec_len (preg=0x559019ac4de0, buff=buff@entry=0x7f6628013b45 "", len=<optimized out>, nmatch=nmatch@entry=10, pmatch=pmatch@entry=0x7f663e7fe650, eflags=eflags@entry=0) at util_pcre.c:252 #4 0x0000559018576c32 in ap_regexec (preg=<optimized out>, string=string@entry=0x7f6628013b45 "", nmatch=nmatch@entry=10, pmatch=pmatch@entry=0x7f663e7fe650, eflags=eflags@entry=0) at util_pcre.c:219 #5 0x00007f666db7dcce in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:642 #6 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #7 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #8 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #9 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #10 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #11 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #12 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #13 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #14 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #15 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #16 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #17 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #18 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 ... #52318 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #52319 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #52320 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #52321 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #52322 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #52323 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #52324 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #52325 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #52326 0x00007f666db7dd62 in process_regexp (hdr=hdr@entry=0x559019a10d58, value=value@entry=0x7f6628013b45 "", r=r@entry=0x7f662800e250) at mod_headers.c:657 #52327 0x00007f666db7dd62 in process_regexp (hdr=0x559019a10d58, value=0x7f6628013af0 "MoodleSession=dm5ob7kn4olvp5e5i72u9ctddr; path=/lms/; secure; HttpOnly; SameSite=None", r=0x7f662800e250) at mod_headers.c:657 #52328 0x00007f666db7de0f in edit_header (v=v@entry=0x7f663effa5f0, key=key@entry=0x7f6628013ae0 "Set-Cookie", val=<optimized out>) at mod_headers.c:686 #52329 0x00007f6674d5e93f in apr_table_vdo (comp=0x7f666db7ddf0 <edit_header>, rec=0x7f663effa5f0, t=0x7f66280141c8, vp=vp@entry=0x7f663effa4c0) at tables/apr_tables.c:981 #52330 0x00007f6674d5ea93 in apr_table_do (comp=comp@entry=0x7f666db7ddf0 <edit_header>, rec=rec@entry=0x7f663effa5f0, t=t@entry=0x7f66280141c8) at tables/apr_tables.c:925 #52331 0x00007f666db7e063 in do_headers_fixup (r=0x7f662800e250, headers=0x7f66280141c8, early=early@entry=0, fixup=<optimized out>, fixup=<optimized out>) at mod_headers.c:829 #52332 0x00007f666db7e659 in ap_headers_output_filter (f=0x7f66280115d0, in=0x7f66280136f0) at mod_headers.c:878 #52333 0x00007f6666c12fe2 in session_output_filter (f=0x7f66280115a8, in=0x7f66280136f0) at mod_session.c:492 #52334 0x00007f6668a178b6 in dispatch (conn=conn@entry=0x559019b7c110, conf=conf@entry=0x559019a334c0, r=r@entry=0x7f662800e250, setaside_pool=0x7f6628005098, err=err@entry=0x7f663effc900, bad_request=bad_request@entry=0x7f663effc8c8, has_responded=0x7f663effc8cc, input_brigade=0x7f6628011848, request_id=1) at mod_proxy_fcgi.c:839 #52335 0x00007f6668a18a6f in fcgi_do_request (p=<optimized out>, origin=0x0, uri=<optimized out>, url=<optimized out>, input_brigade=0x7f6628011848, server_portstr=0x7f663effc970 "", conf=0x559019a334c0, conn=0x559019b7c110, r=0x7f662800e250) at mod_proxy_fcgi.c:981 #52336 proxy_fcgi_handler (r=0x7f662800e250, worker=<optimized out>, conf=<optimized out>, url=<optimized out>, proxyname=<optimized out>, proxyport=<optimized out>) at mod_proxy_fcgi.c:1195 #52337 0x00007f6669c5b6c4 in proxy_run_scheme_handler (r=r@entry=0x7f662800e250, worker=0x559019a3ed28, conf=conf@entry=0x559019a2eeb0, url=0x7f6628011740 "fcgi://localhost/var/www/html/lms/admin/index.php", proxyhost=proxyhost@entry=0x0, proxyport=proxyport@entry=0) at mod_proxy.c:3125 #52338 0x00007f6669c5c479 in proxy_handler (r=0x7f662800e250) at mod_proxy.c:1267 #52339 0x00005590185922c8 in ap_run_handler (r=r@entry=0x7f662800e250) at config.c:170 #52340 0x0000559018592886 in ap_invoke_handler (r=r@entry=0x7f662800e250) at config.c:444 #52341 0x00005590185a9a83 in ap_process_async_request (r=r@entry=0x7f662800e250) at http_request.c:453 #52342 0x00005590185a5ed0 in ap_process_http_async_connection (c=0x7f65e4000f88) at http_core.c:154 #52343 ap_process_http_connection (c=0x7f65e4000f88) at http_core.c:248 #52344 0x000055901859c2b8 in ap_run_process_connection (c=c@entry=0x7f65e4000f88) at connection.c:42 #52345 0x00007f6669e79a47 in process_socket (thd=thd@entry=0x559019b7b278, p=<optimized out>, sock=<optimized out>, cs=0x7f65e4000ee0, my_child_num=my_child_num@entry=1, my_thread_num=my_thread_num@entry=3) at event.c:1049 #52346 0x00007f6669e7a3ea in worker_thread (thd=0x559019b7b278, dummy=<optimized out>) at event.c:2083 #52347 0x00007f6674b2d1ca in start_thread (arg=<optimized out>) at pthread_create.c:479 #52348 0x00007f6674595e73 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 ./modules/metadata/mod_headers.c: 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 634) static const char *process_regexp(header_entry *hdr, const char *value, e8a15ec117f (Jim Jagielski 2013-11-09 14:37:23 +0000 635) request_rec *r) 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 636) { b9196c6dfd5 (Stefan Fritsch 2011-10-18 20:51:35 +0000 637) ap_regmatch_t pmatch[AP_MAX_REG_MATCH]; 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 638) const char *subs; 76ea26f7a0a (Nick Kew 2009-12-27 00:05:12 +0000 639) const char *remainder; 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 640) char *ret; 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 641) int diffsz; b9196c6dfd5 (Stefan Fritsch 2011-10-18 20:51:35 +0000 642) if (ap_regexec(hdr->regex, value, AP_MAX_REG_MATCH, pmatch, 0)) { 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 643) /* no match, nothing to do */ 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 644) return value; 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 645) } e8a15ec117f (Jim Jagielski 2013-11-09 14:37:23 +0000 646) /* Process tags in the input string rather than the resulting e8a15ec117f (Jim Jagielski 2013-11-09 14:37:23 +0000 647) * substitution to avoid surprises e8a15ec117f (Jim Jagielski 2013-11-09 14:37:23 +0000 648) */ e8a15ec117f (Jim Jagielski 2013-11-09 14:37:23 +0000 649) subs = ap_pregsub(r->pool, process_tags(hdr, r), value, AP_MAX_REG_MATCH, pmatch); 646971c2148 (Stefan Fritsch 2011-11-07 21:29:57 +0000 650) if (subs == NULL) 646971c2148 (Stefan Fritsch 2011-11-07 21:29:57 +0000 651) return NULL; 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 652) diffsz = strlen(subs) - (pmatch[0].rm_eo - pmatch[0].rm_so); 76ea26f7a0a (Nick Kew 2009-12-27 00:05:12 +0000 653) if (hdr->action == hdr_edit) { 76ea26f7a0a (Nick Kew 2009-12-27 00:05:12 +0000 654) remainder = value + pmatch[0].rm_eo; 76ea26f7a0a (Nick Kew 2009-12-27 00:05:12 +0000 655) } 76ea26f7a0a (Nick Kew 2009-12-27 00:05:12 +0000 656) else { /* recurse to edit multiple matches if applicable */ e8a15ec117f (Jim Jagielski 2013-11-09 14:37:23 +0000 657) remainder = process_regexp(hdr, value + pmatch[0].rm_eo, r); 646971c2148 (Stefan Fritsch 2011-11-07 21:29:57 +0000 658) if (remainder == NULL) 646971c2148 (Stefan Fritsch 2011-11-07 21:29:57 +0000 659) return NULL; 76ea26f7a0a (Nick Kew 2009-12-27 00:05:12 +0000 660) diffsz += strlen(remainder) - strlen(value + pmatch[0].rm_eo); 76ea26f7a0a (Nick Kew 2009-12-27 00:05:12 +0000 661) } e8a15ec117f (Jim Jagielski 2013-11-09 14:37:23 +0000 662) ret = apr_palloc(r->pool, strlen(value) + 1 + diffsz); 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 663) memcpy(ret, value, pmatch[0].rm_so); 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 664) strcpy(ret + pmatch[0].rm_so, subs); 8dfbc67165e (Nick Kew 2010-07-21 00:20:43 +0000 665) strcat(ret, remainder); 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 666) return ret; 4034b23cc0d (Nick Kew 2006-10-03 07:41:27 +0000 667) } -- Jason Pyeron | Security Architect Contractor | ISSO|IAT-III/IAM-III/IASAE-III PD Inc | CAGE Code: 1WVR6 10 w 24th St | Certified SBA 8(a) Baltimore, MD | Certified SBA HUBZone .mil: jason.j.pyeron....@mail.mil .com: jpye...@pdinc.us tel : 202-741-9397