The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Nick Terrell <terrelln@fb.com>
To: Guo Xuenan <guoxuenan@huawei.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Chengyang Fan <cy.fan@huawei.com>, Yann Collet <cyan@fb.com>,
	"fangwei1@huawei.com" <fangwei1@huawei.com>,
	"hsiangkao@linux.alibaba.com" <hsiangkao@linux.alibaba.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"syzbot+63d688f1d899c588fb71@syzkaller.appspotmail.com" 
	<syzbot+63d688f1d899c588fb71@syzkaller.appspotmail.com>,
	"wangli74@huawei.com" <wangli74@huawei.com>
Subject: Re: [PATCH v3] lz4: fix LZ4_decompress_safe_partial read out of bound
Date: Fri, 19 Nov 2021 18:23:24 +0000	[thread overview]
Message-ID: <CCE83845-DC40-4E14-9105-6319C048FACB@fb.com> (raw)
In-Reply-To: <20211111105048.2006070-1-guoxuenan@huawei.com>



> On Nov 11, 2021, at 2:50 AM, Guo Xuenan <guoxuenan@huawei.com> wrote:
> 
> 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 crusted 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/
> 
> Reported-by: syzbot+63d688f1d899c588fb71@syzkaller.appspotmail.com
> Cc: hsiangkao@linux.alibaba.com
> Cc: terrelln@fb.com
> Cc: cyan@fb.com
> Cc: cy.fan@huawei.com
> Signed-off-by: Guo Xuenan <guoxuenan@huawei.com>

Sorry I’m a bit late to the party, but this looks good to me!

Reviewed-by: Nick Terrell <terrelln@fb.com>

> ---
> lib/lz4/lz4_decompress.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/lz4/lz4_decompress.c b/lib/lz4/lz4_decompress.c
> index 926f4823d5ea..fd1728d94bab 100644
> --- a/lib/lz4/lz4_decompress.c
> +++ b/lib/lz4/lz4_decompress.c
> @@ -271,8 +271,12 @@ static FORCE_INLINE int LZ4_decompress_generic(
> 			ip += length;
> 			op += length;
> 
> -			/* Necessarily EOF, due to parsing restrictions */
> -			if (!partialDecoding || (cpy == oend))
> +			/* Necessarily EOF when !partialDecoding.
> +			 * When partialDecoding, it is EOF if we've either
> +			 * filled the output buffer or
> +			 * can't proceed with reading an offset for following match.
> +			 */
> +			if (!partialDecoding || (cpy == oend) || (ip >= (iend - 2)))
> 				break;
> 		} else {
> 			/* may overwrite up to WILDCOPYLENGTH beyond cpy */
> -- 
> 2.31.1
> 


  reply	other threads:[~2021-11-19 18:23 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-11  7:17 [PATCH] lz4: fix LZ4_decompress_safe_partial read out of bound Guo Xuenan
2021-11-11  8:50 ` [PATCH v2] " Guo Xuenan
2021-11-11 10:50   ` [PATCH v3] " Guo Xuenan
2021-11-19 18:23     ` Nick Terrell [this message]
2022-04-02  4:55       ` Gao Xiang
2022-04-04 21:21         ` Andrew Morton
2022-04-04 22:28           ` Gao Xiang
2022-04-06  0:41             ` Guo Xuenan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CCE83845-DC40-4E14-9105-6319C048FACB@fb.com \
    --to=terrelln@fb.com \
    --cc=akpm@linux-foundation.org \
    --cc=cy.fan@huawei.com \
    --cc=cyan@fb.com \
    --cc=fangwei1@huawei.com \
    --cc=guoxuenan@huawei.com \
    --cc=hsiangkao@linux.alibaba.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=syzbot+63d688f1d899c588fb71@syzkaller.appspotmail.com \
    --cc=wangli74@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox