]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
bpf: Add length check for SK_DIAG_BPF_STORAGE_REQ_MAP_FD parsing
authorLin Ma <linma@zju.edu.cn>
Tue, 25 Jul 2023 02:33:30 +0000 (10:33 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Aug 2023 13:13:50 +0000 (15:13 +0200)
commitcc9ebceaa6d0824ac53adb2c569f84b55987f709
tree1818ea7fccd4d6797fe3fa4260d6a25b9fc1ac82
parent8f9a04c742e1f091a9fb34c1f5fcef4bb0464fbb
bpf: Add length check for SK_DIAG_BPF_STORAGE_REQ_MAP_FD parsing

[ Upstream commit bcc29b7f5af6797702c2306a7aacb831fc5ce9cb ]

The nla_for_each_nested parsing in function bpf_sk_storage_diag_alloc
does not check the length of the nested attribute. This can lead to an
out-of-attribute read and allow a malformed nlattr (e.g., length 0) to
be viewed as a 4 byte integer.

This patch adds an additional check when the nlattr is getting counted.
This makes sure the latter nla_get_u32 can access the attributes with
the correct length.

Fixes: 1ed4d92458a9 ("bpf: INET_DIAG support in bpf_sk_storage")
Suggested-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/20230725023330.422856-1-linma@zju.edu.cn
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/core/bpf_sk_storage.c