]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit
lz4: fix LZ4_decompress_safe_partial read out of bound
authorGuo Xuenan <guoxuenan@huawei.com>
Fri, 8 Apr 2022 20:08:58 +0000 (13:08 -0700)
committerStefan Bader <stefan.bader@canonical.com>
Wed, 27 Apr 2022 09:59:44 +0000 (11:59 +0200)
commit4816c5c245619ca2bf034f4fde87c1e7c568bb05
tree082564f20c6fe4b09c855754cb9b1978c91a445e
parent53df8a929703d98cd627cb6e8a94d5602f04b04a
lz4: fix LZ4_decompress_safe_partial read out of bound

BugLink: https://bugs.launchpad.net/bugs/1969107
commit eafc0a02391b7b36617b36c97c4b5d6832cf5e24 upstream.

When partialDecoding, it is EOF if we've either filled the output buffer
or can't proceed with reading an offset for following match.

In some extreme corner cases when compressed data is suitably corrupted,
UAF will occur.  As reported by KASAN [1], LZ4_decompress_safe_partial
may lead to read out of bound problem during decoding.  lz4 upstream has
fixed it [2] and this issue has been disscussed here [3] before.

current decompression routine was ported from lz4 v1.8.3, bumping
lib/lz4 to v1.9.+ is certainly a huge work to be done later, so, we'd
better fix it first.

[1] https://lore.kernel.org/all/000000000000830d1205cf7f0477@google.com/
[2] https://github.com/lz4/lz4/commit/c5d6f8a8be3927c0bec91bcc58667a6cfad244ad#
[3] https://lore.kernel.org/all/CC666AE8-4CA4-4951-B6FB-A2EFDE3AC03B@fb.com/

Link: https://lkml.kernel.org/r/20211111105048.2006070-1-guoxuenan@huawei.com
Reported-by: syzbot+63d688f1d899c588fb71@syzkaller.appspotmail.com
Signed-off-by: Guo Xuenan <guoxuenan@huawei.com>
Reviewed-by: Nick Terrell <terrelln@fb.com>
Acked-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Cc: Yann Collet <cyan@fb.com>
Cc: Chengyang Fan <cy.fan@huawei.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 9fb8bc6cfc58773ce95414e11c9ccc8fc6ac4927)
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
lib/lz4/lz4_decompress.c