import UBI bind-9.11.36-8.el8_8.2
This commit is contained in:
		
							parent
							
								
									89e6eee714
								
							
						
					
					
						commit
						a42ecab1d9
					
				
							
								
								
									
										166
									
								
								SOURCES/bind-9.16-CVE-2023-3341.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								SOURCES/bind-9.16-CVE-2023-3341.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,166 @@ | ||||
| From 3883ec072e5feed1237dc864854ab95ded7302d6 Mon Sep 17 00:00:00 2001 | ||||
| From: Petr Mensik <pemensik@redhat.com> | ||||
| Date: Tue, 19 Sep 2023 13:14:52 +0200 | ||||
| Subject: [PATCH] Backport of CVE-2023-3341 fix | ||||
| 
 | ||||
| Taken from BIND 9.16.44 change. | ||||
| ---
 | ||||
|  lib/isccc/cc.c                   | 36 +++++++++++++++++++++++--------- | ||||
|  lib/isccc/include/isccc/result.h |  4 +++- | ||||
|  lib/isccc/result.c               |  4 +++- | ||||
|  3 files changed, 32 insertions(+), 12 deletions(-) | ||||
| 
 | ||||
| diff --git a/lib/isccc/cc.c b/lib/isccc/cc.c
 | ||||
| index 463a053..a54e60c 100644
 | ||||
| --- a/lib/isccc/cc.c
 | ||||
| +++ b/lib/isccc/cc.c
 | ||||
| @@ -53,6 +53,10 @@
 | ||||
|   | ||||
|  #define MAX_TAGS		256 | ||||
|  #define DUP_LIFETIME		900 | ||||
| +#ifndef ISCCC_MAXDEPTH
 | ||||
| +#define ISCCC_MAXDEPTH \
 | ||||
| +	10 /* Big enough for rndc which just sends a string each way. */
 | ||||
| +#endif
 | ||||
|   | ||||
|  typedef isccc_sexpr_t *sexpr_ptr; | ||||
|   | ||||
| @@ -573,19 +577,23 @@ verify(isccc_sexpr_t *alist, unsigned char *data, unsigned int length,
 | ||||
|   | ||||
|  static isc_result_t | ||||
|  table_fromwire(isccc_region_t *source, isccc_region_t *secret, | ||||
| -	       uint32_t algorithm, isccc_sexpr_t **alistp);
 | ||||
| +	       uint32_t algorithm, unsigned int depth, isccc_sexpr_t **alistp);
 | ||||
|   | ||||
|  static isc_result_t | ||||
| -list_fromwire(isccc_region_t *source, isccc_sexpr_t **listp);
 | ||||
| +list_fromwire(isccc_region_t *source, unsigned int depth, isccc_sexpr_t **listp);
 | ||||
|   | ||||
|  static isc_result_t | ||||
| -value_fromwire(isccc_region_t *source, isccc_sexpr_t **valuep) {
 | ||||
| +value_fromwire(isccc_region_t *source, unsigned int depth, isccc_sexpr_t **valuep) {
 | ||||
|  	unsigned int msgtype; | ||||
|  	uint32_t len; | ||||
|  	isccc_sexpr_t *value; | ||||
|  	isccc_region_t active; | ||||
|  	isc_result_t result; | ||||
|   | ||||
| +	if (depth > ISCCC_MAXDEPTH) {
 | ||||
| +		return (ISCCC_R_MAXDEPTH);
 | ||||
| +	}
 | ||||
| +
 | ||||
|  	if (REGION_SIZE(*source) < 1 + 4) | ||||
|  		return (ISC_R_UNEXPECTEDEND); | ||||
|  	GET8(msgtype, source->rstart); | ||||
| @@ -603,9 +611,9 @@ value_fromwire(isccc_region_t *source, isccc_sexpr_t **valuep) {
 | ||||
|  		} else | ||||
|  			result = ISC_R_NOMEMORY; | ||||
|  	} else if (msgtype == ISCCC_CCMSGTYPE_TABLE) | ||||
| -		result = table_fromwire(&active, NULL, 0, valuep);
 | ||||
| +		result = table_fromwire(&active, NULL, 0, depth + 1, valuep);
 | ||||
|  	else if (msgtype == ISCCC_CCMSGTYPE_LIST) | ||||
| -		result = list_fromwire(&active, valuep);
 | ||||
| +		result = list_fromwire(&active, depth + 1, valuep);
 | ||||
|  	else | ||||
|  		result = ISCCC_R_SYNTAX; | ||||
|   | ||||
| @@ -614,7 +622,7 @@ value_fromwire(isccc_region_t *source, isccc_sexpr_t **valuep) {
 | ||||
|   | ||||
|  static isc_result_t | ||||
|  table_fromwire(isccc_region_t *source, isccc_region_t *secret, | ||||
| -	       uint32_t algorithm, isccc_sexpr_t **alistp)
 | ||||
| +	       uint32_t algorithm, unsigned int depth, isccc_sexpr_t **alistp)
 | ||||
|  { | ||||
|  	char key[256]; | ||||
|  	uint32_t len; | ||||
| @@ -625,6 +633,10 @@ table_fromwire(isccc_region_t *source, isccc_region_t *secret,
 | ||||
|   | ||||
|  	REQUIRE(alistp != NULL && *alistp == NULL); | ||||
|   | ||||
| +	if (depth > ISCCC_MAXDEPTH) {
 | ||||
| +		return (ISCCC_R_MAXDEPTH);
 | ||||
| +	}
 | ||||
| +
 | ||||
|  	checksum_rstart = NULL; | ||||
|  	first_tag = true; | ||||
|  	alist = isccc_alist_create(); | ||||
| @@ -640,7 +652,7 @@ table_fromwire(isccc_region_t *source, isccc_region_t *secret,
 | ||||
|  		GET_MEM(key, len, source->rstart); | ||||
|  		key[len] = '\0';	/* Ensure NUL termination. */ | ||||
|  		value = NULL; | ||||
| -		result = value_fromwire(source, &value);
 | ||||
| +		result = value_fromwire(source, depth + 1, &value);
 | ||||
|  		if (result != ISC_R_SUCCESS) | ||||
|  			goto bad; | ||||
|  		if (isccc_alist_define(alist, key, value) == NULL) { | ||||
| @@ -673,14 +685,18 @@ table_fromwire(isccc_region_t *source, isccc_region_t *secret,
 | ||||
|  } | ||||
|   | ||||
|  static isc_result_t | ||||
| -list_fromwire(isccc_region_t *source, isccc_sexpr_t **listp) {
 | ||||
| +list_fromwire(isccc_region_t *source, unsigned int depth, isccc_sexpr_t **listp) {
 | ||||
|  	isccc_sexpr_t *list, *value; | ||||
|  	isc_result_t result; | ||||
|   | ||||
| +	if (depth > ISCCC_MAXDEPTH) {
 | ||||
| +		return (ISCCC_R_MAXDEPTH);
 | ||||
| +	}
 | ||||
| +
 | ||||
|  	list = NULL; | ||||
|  	while (!REGION_EMPTY(*source)) { | ||||
|  		value = NULL; | ||||
| -		result = value_fromwire(source, &value);
 | ||||
| +		result = value_fromwire(source, depth + 1, &value);
 | ||||
|  		if (result != ISC_R_SUCCESS) { | ||||
|  			isccc_sexpr_free(&list); | ||||
|  			return (result); | ||||
| @@ -711,7 +727,7 @@ isccc_cc_fromwire(isccc_region_t *source, isccc_sexpr_t **alistp,
 | ||||
|  	if (version != 1) | ||||
|  		return (ISCCC_R_UNKNOWNVERSION); | ||||
|   | ||||
| -	return (table_fromwire(source, secret, algorithm, alistp));
 | ||||
| +	return (table_fromwire(source, secret, algorithm, 0, alistp));
 | ||||
|  } | ||||
|   | ||||
|  static isc_result_t | ||||
| diff --git a/lib/isccc/include/isccc/result.h b/lib/isccc/include/isccc/result.h
 | ||||
| index 6c79dd7..b30b08a 100644
 | ||||
| --- a/lib/isccc/include/isccc/result.h
 | ||||
| +++ b/lib/isccc/include/isccc/result.h
 | ||||
| @@ -47,8 +47,10 @@
 | ||||
|  #define ISCCC_R_CLOCKSKEW		(ISC_RESULTCLASS_ISCCC + 4) | ||||
|  /*% Duplicate */ | ||||
|  #define ISCCC_R_DUPLICATE		(ISC_RESULTCLASS_ISCCC + 5) | ||||
| +/*% Maximum recursion depth */
 | ||||
| +#define ISCCC_R_MAXDEPTH		(ISC_RESULTCLASS_ISCCC + 6)
 | ||||
|   | ||||
| -#define ISCCC_R_NRESULTS 		6	/*%< Number of results */
 | ||||
| +#define ISCCC_R_NRESULTS 		7	/*%< Number of results */
 | ||||
|   | ||||
|  ISC_LANG_BEGINDECLS | ||||
|   | ||||
| diff --git a/lib/isccc/result.c b/lib/isccc/result.c
 | ||||
| index 8419bbb..a3a3b9a 100644
 | ||||
| --- a/lib/isccc/result.c
 | ||||
| +++ b/lib/isccc/result.c
 | ||||
| @@ -40,7 +40,8 @@ static const char *text[ISCCC_R_NRESULTS] = {
 | ||||
|  	"bad auth",				/* 3 */ | ||||
|  	"expired",				/* 4 */ | ||||
|  	"clock skew",				/* 5 */ | ||||
| -	"duplicate"				/* 6 */
 | ||||
| +	"duplicate",				/* 6 */
 | ||||
| +	"max depth",				/* 7 */
 | ||||
|  }; | ||||
|   | ||||
|  static const char *ids[ISCCC_R_NRESULTS] = { | ||||
| @@ -50,6 +51,7 @@ static const char *ids[ISCCC_R_NRESULTS] = {
 | ||||
|  	"ISCCC_R_EXPIRED", | ||||
|  	"ISCCC_R_CLOCKSKEW", | ||||
|  	"ISCCC_R_DUPLICATE", | ||||
| +	"ISCCC_R_MAXDEPTH"
 | ||||
|  }; | ||||
|   | ||||
|  #define ISCCC_RESULT_RESULTSET			2 | ||||
| -- 
 | ||||
| 2.41.0 | ||||
| 
 | ||||
| @ -68,7 +68,7 @@ Summary:  The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) serv | ||||
| Name:     bind | ||||
| License:  MPLv2.0 | ||||
| Version:  9.11.36 | ||||
| Release:  8%{?PATCHVER:.%{PATCHVER}}%{?PREVER:.%{PREVER}}%{?dist}.1 | ||||
| Release:  8%{?PATCHVER:.%{PATCHVER}}%{?PREVER:.%{PREVER}}%{?dist}.2 | ||||
| Epoch:    32 | ||||
| Url:      https://www.isc.org/downloads/bind/ | ||||
| # | ||||
| @ -169,6 +169,7 @@ Patch191: bind-9.11-CVE-2022-2795.patch | ||||
| Patch192: bind-9.11-rh2133889.patch | ||||
| # https://gitlab.isc.org/isc-projects/bind9/commit/f1d9e9ee3859976f403914d20ad2a10855343702 | ||||
| Patch193: bind-9.11-CVE-2023-2828.patch | ||||
| Patch198: bind-9.16-CVE-2023-3341.patch | ||||
| 
 | ||||
| # SDB patches | ||||
| Patch11: bind-9.3.2b2-sdbsrc.patch | ||||
| @ -572,6 +573,7 @@ are used for building ISC DHCP. | ||||
| %patch191 -p1 -b .CVE-2022-2795 | ||||
| %patch192 -p1 -b .rh2133889 | ||||
| %patch193 -p1 -b .CVE-2023-2828 | ||||
| %patch198 -p1 -b .CVE-2023-3341 | ||||
| 
 | ||||
| mkdir lib/dns/tests/testdata/dstrandom | ||||
| cp -a %{SOURCE50} lib/dns/tests/testdata/dstrandom/random.data | ||||
| @ -1624,6 +1626,9 @@ rm -rf ${RPM_BUILD_ROOT} | ||||
| %endif | ||||
| 
 | ||||
| %changelog | ||||
| * Tue Sep 19 2023 Petr Menšík <pemensik@redhat.com> - 32:9.11.36-8.2 | ||||
| - Prevent exahustion of memory from control channel (CVE-2023-3341) | ||||
| 
 | ||||
| * Thu Jun 22 2023 Petr Menšík <pemensik@redhat.com> - 32:9.11.36-8.1 | ||||
| - Prevent the cache going over the configured limit (CVE-2023-2828) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user