From: Phillip Lougher <phillip@squashfs.org.uk>
To: Fedor Pchelkin <pchelkin@ispras.ru>,
Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org,
Alexey Khoroshilov <khoroshilov@ispras.ru>,
lvc-project@linuxtesting.org,
syzbot+082fa4af80a5bb1a9843@syzkaller.appspotmail.com
Subject: Re: [PATCH 1/1] squashfs: harden sanity check in squashfs_read_xattr_id_table
Date: Fri, 27 Jan 2023 06:20:18 +0000 [thread overview]
Message-ID: <68f15d67-8945-2728-1f17-5b53a80ec52d@squashfs.org.uk> (raw)
In-Reply-To: <20230117105226.329303-2-pchelkin@ispras.ru>
On 17/01/2023 10:52, Fedor Pchelkin wrote:
> While mounting a corrupted filesystem, a signed integer '*xattr_ids' can
> become less than zero. This leads to the incorrect computation of 'len'
> and 'indexes' values which can cause null-ptr-deref in
copy_bio_to_actor()
> or out-of-bounds accesses in the next sanity checks inside
> squashfs_read_xattr_id_table().
>
NACK
Thanks for sending the patch, but, you have unfortunately identified and
fixed the wrong sanity check. In effect you're fixing the symptom and
not the cause.
The Sysbot corrupted filesystem has an xattr_ids value of 4294967071,
which as you point out is treated as negative due to xattr_ids being a
signed int.
But 4294967071 even though it is a large number could be a perfectly
legitimate number because in theory the filesystem layout supports up
to 2^32 xattr_ids.
By extending the wrong sanity check from
> if (*xattr_ids == 0)
to
> if (*xattr_ids <= 0)
You are using the fact that the number has gone negative to reject the
filesystem. But you are not fixing the real issues.
You have not discovered if or why the negative number is the
cause of the failure, or whether there are extra flaws.
With syzkiller fuzzer generated exploits, it is essential to analyze the
issue throughly, because these exploits often rely on over-looked
dependencies/assumptions, and it can be difficult to produce a patch
that fixes all the issues and without introducing regressions.
Phillip
>
> Fixes: 506220d2ba21 ("squashfs: add more sanity checks in xattr id
lookup")
> Reported-by: syzbot+082fa4af80a5bb1a9843@syzkaller.appspotmail.com
> Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
> Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
> ---
> fs/squashfs/xattr_id.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/squashfs/xattr_id.c b/fs/squashfs/xattr_id.c
> index 087cab8c78f4..f6d78cbc3e74 100644
> --- a/fs/squashfs/xattr_id.c
> +++ b/fs/squashfs/xattr_id.c
> @@ -76,7 +76,7 @@ __le64 *squashfs_read_xattr_id_table(struct
super_block *sb, u64 table_start,
> /* Sanity check values */
>
> /* there is always at least one xattr id */
> - if (*xattr_ids == 0)
> + if (*xattr_ids <= 0)
> return ERR_PTR(-EINVAL);
>
> len = SQUASHFS_XATTR_BLOCK_BYTES(*xattr_ids);
next prev parent reply other threads:[~2023-01-27 6:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-17 10:52 [PATCH 0/1] " Fedor Pchelkin
2023-01-17 10:52 ` [PATCH 1/1] " Fedor Pchelkin
2023-01-27 6:20 ` Phillip Lougher [this message]
2023-01-27 7:24 ` Fedor Pchelkin
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=68f15d67-8945-2728-1f17-5b53a80ec52d@squashfs.org.uk \
--to=phillip@squashfs.org.uk \
--cc=akpm@linux-foundation.org \
--cc=khoroshilov@ispras.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=lvc-project@linuxtesting.org \
--cc=pchelkin@ispras.ru \
--cc=syzbot+082fa4af80a5bb1a9843@syzkaller.appspotmail.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
all inboxes | Powered by JetHome®