diff options
| author | Christian Taedcke <christian.taedcke@weidmueller.com> | 2024-07-29 09:54:03 +0200 |
|---|---|---|
| committer | Steve Sakoman <steve@sakoman.com> | 2024-08-06 19:11:18 -0700 |
| commit | 5241a967c1d8d85cc22c5fd0dcf09816523e7947 (patch) | |
| tree | 4102f1e751bb6316e0f169edd0ddd37428fe09c1 | |
| parent | d672cd4c934a564dc8e633c2427df01dcf512a2a (diff) | |
| download | poky-5241a967c1d8d85cc22c5fd0dcf09816523e7947.tar.gz | |
iptables: fix memory corruption when parsing nft rules
This commit fixes a memory corruption issue when iptables (with
enabled PACKAGECONFIG libnftnl) is used to access rules created by
nft.
To reproduce the issue:
nft add chain ip filter TESTCHAIN { meta mark set 123 \;}
iptables -t filter -n -L TESTCHAIN
This produced the following output:
Chain TESTCHAIN (0 references)
target prot opt source destination
MARK 0 -- 0.0.0.0/0 0.0.0.0/0 MARK set 0x7b
malloc(): corrupted top size
Aborted (core dumped)
This commit fixes this issue.
(From OE-Core rev: fa3873cfcda862d8aad564966070af216e4903c6)
Signed-off-by: Christian Taedcke <christian.taedcke@weidmueller.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
| -rw-r--r-- | meta/recipes-extended/iptables/iptables/0005-nft-ruleparse-Add-missing-braces-around-ternary.patch | 37 | ||||
| -rw-r--r-- | meta/recipes-extended/iptables/iptables_1.8.10.bb | 1 |
2 files changed, 38 insertions, 0 deletions
diff --git a/meta/recipes-extended/iptables/iptables/0005-nft-ruleparse-Add-missing-braces-around-ternary.patch b/meta/recipes-extended/iptables/iptables/0005-nft-ruleparse-Add-missing-braces-around-ternary.patch new file mode 100644 index 0000000000..4cbc8bdaf4 --- /dev/null +++ b/meta/recipes-extended/iptables/iptables/0005-nft-ruleparse-Add-missing-braces-around-ternary.patch | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | From 2026b08bce7fe87b5964f7912e1eef30f04922c1 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Phil Sutter <phil@nwl.cc> | ||
| 3 | Date: Fri, 26 Jan 2024 18:43:10 +0100 | ||
| 4 | Subject: [PATCH] nft: ruleparse: Add missing braces around ternary | ||
| 5 | |||
| 6 | The expression evaluated the sum before the ternay, consequently not | ||
| 7 | adding target->size if tgsize was zero. | ||
| 8 | |||
| 9 | Identified by ASAN for a simple rule using standard target: | ||
| 10 | | # ebtables -A INPUT -s de:ad:be:ef:0:00 -j RETURN | ||
| 11 | | # ebtables -D INPUT -s de:ad:be:ef:0:00 -j RETURN | ||
| 12 | | ================================================================= | ||
| 13 | | ==18925==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x603000000120 at pc 0x7f627a4c75c5 bp 0x7ffe882b5180 sp 0x7ffe882b4928 | ||
| 14 | | READ of size 8 at 0x603000000120 thread T0 | ||
| 15 | | [...] | ||
| 16 | |||
| 17 | Upstream-Status: Backport [2026b08bce7fe87b5964f7912e1eef30f04922c1] | ||
| 18 | |||
| 19 | Fixes: 2a6eee89083c8 ("nft-ruleparse: Introduce nft_create_target()") | ||
| 20 | Signed-off-by: Phil Sutter <phil@nwl.cc> | ||
| 21 | --- | ||
| 22 | iptables/nft-ruleparse.c | 2 +- | ||
| 23 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
| 24 | |||
| 25 | diff --git a/iptables/nft-ruleparse.c b/iptables/nft-ruleparse.c | ||
| 26 | index 0bbdf44faf..3b1cbe4fa1 100644 | ||
| 27 | --- a/iptables/nft-ruleparse.c | ||
| 28 | +++ b/iptables/nft-ruleparse.c | ||
| 29 | @@ -94,7 +94,7 @@ __nft_create_target(struct nft_xt_ctx *ctx, const char *name, size_t tgsize) | ||
| 30 | if (!target) | ||
| 31 | return NULL; | ||
| 32 | |||
| 33 | - size = XT_ALIGN(sizeof(*target->t)) + tgsize ?: target->size; | ||
| 34 | + size = XT_ALIGN(sizeof(*target->t)) + (tgsize ?: target->size); | ||
| 35 | |||
| 36 | target->t = xtables_calloc(1, size); | ||
| 37 | target->t->u.target_size = size; | ||
diff --git a/meta/recipes-extended/iptables/iptables_1.8.10.bb b/meta/recipes-extended/iptables/iptables_1.8.10.bb index 0070264844..f1ee1efe28 100644 --- a/meta/recipes-extended/iptables/iptables_1.8.10.bb +++ b/meta/recipes-extended/iptables/iptables_1.8.10.bb | |||
| @@ -16,6 +16,7 @@ SRC_URI = "http://netfilter.org/projects/iptables/files/iptables-${PV}.tar.xz \ | |||
| 16 | file://0001-configure-Add-option-to-enable-disable-libnfnetlink.patch \ | 16 | file://0001-configure-Add-option-to-enable-disable-libnfnetlink.patch \ |
| 17 | file://0002-iptables-xshared.h-add-missing-sys.types.h-include.patch \ | 17 | file://0002-iptables-xshared.h-add-missing-sys.types.h-include.patch \ |
| 18 | file://0004-configure.ac-only-check-conntrack-when-libnfnetlink-.patch \ | 18 | file://0004-configure.ac-only-check-conntrack-when-libnfnetlink-.patch \ |
| 19 | file://0005-nft-ruleparse-Add-missing-braces-around-ternary.patch \ | ||
| 19 | " | 20 | " |
| 20 | SRC_URI[sha256sum] = "5cc255c189356e317d070755ce9371eb63a1b783c34498fb8c30264f3cc59c9c" | 21 | SRC_URI[sha256sum] = "5cc255c189356e317d070755ce9371eb63a1b783c34498fb8c30264f3cc59c9c" |
| 21 | 22 | ||
