From: "chenxiaosong (A)" <chenxiaosong2@huawei.com>
To: Hawkins Jiawei <yin31149@gmail.com>,
<syzbot+5f8dcabe4a3b2c51c607@syzkaller.appspotmail.com>,
Anton Altaparmakov <anton@tuxera.com>
Cc: <akpm@linux-foundation.org>, <linux-kernel@vger.kernel.org>,
<linux-ntfs-dev@lists.sourceforge.net>,
<syzkaller-bugs@googlegroups.com>
Subject: Re: [PATCH] ntfs: change check order in ntfs_attr_find
Date: Sat, 27 Aug 2022 09:28:51 +0800 [thread overview]
Message-ID: <1636796c-c85e-7f47-e96f-e074fee3c7d3@huawei.com> (raw)
In-Reply-To: <20220826122735.2690-1-yin31149@gmail.com>
在 2022/8/26 20:27, Hawkins Jiawei 写道:
> syz test https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
>
> Looks like it is improper check order that causes this bug.
>
> Signed-off-by: Hawkins Jiawei <yin31149@gmail.com>
> ---
> fs/ntfs/attrib.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ntfs/attrib.c b/fs/ntfs/attrib.c
> index 52615e6090e1..6480cd2d371d 100644
> --- a/fs/ntfs/attrib.c
> +++ b/fs/ntfs/attrib.c
> @@ -594,10 +594,11 @@ static int ntfs_attr_find(const ATTR_TYPE type, const ntfschar *name,
> for (;; a = (ATTR_RECORD*)((u8*)a + le32_to_cpu(a->length))) {
> u8 *mrec_end = (u8 *)ctx->mrec +
> le32_to_cpu(ctx->mrec->bytes_allocated);
> + if ((u8*)a < (u8*)ctx->mrec || (u8*)a > mrec_end)
> + break;
> u8 *name_end = (u8 *)a + le16_to_cpu(a->name_offset) +
> a->name_length * sizeof(ntfschar);
> - if ((u8*)a < (u8*)ctx->mrec || (u8*)a > mrec_end ||
> - name_end > mrec_end)
> + if (name_end > mrec_end)
> break;
> ctx->attr = a;
> if (unlikely(le32_to_cpu(a->type) > le32_to_cpu(type) ||
>
The reason is that a->length is 0, it will occur uaf when deref any
field of ATTR_RECORD.
It seems that changing check order will not fix root cause, if the
condition "if ((u8*)a < (u8*)ctx->mrec || (u8*)a > mrec_end)" is false,
uaf will still occur.
Do you have any thoughts on this ?
next prev parent reply other threads:[~2022-08-27 1:32 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-25 18:25 [syzbot] KASAN: use-after-free Read in ntfs_attr_find syzbot
2022-08-25 18:32 ` Siddh Raman Pant
2022-08-25 18:34 ` Siddh Raman Pant
2022-08-26 12:27 ` [PATCH] ntfs: change check order " Hawkins Jiawei
2022-08-26 12:32 ` Hawkins Jiawei
2022-08-26 14:16 ` [syzbot] KASAN: use-after-free Read " syzbot
2022-08-26 15:15 ` [PATCH] ntfs: change check order " Dan Carpenter
2022-08-26 15:42 ` Hawkins Jiawei
2022-08-26 15:54 ` Hawkins Jiawei
2022-08-27 6:42 ` Dan Carpenter
2022-08-27 9:02 ` Hawkins Jiawei
2022-08-27 10:58 ` Dan Carpenter
2022-08-28 16:15 ` Hawkins Jiawei
2022-08-27 2:42 ` Andrew Morton
2022-08-27 8:38 ` Hawkins Jiawei
2022-08-27 1:28 ` chenxiaosong (A) [this message]
2022-08-27 7:51 ` Hawkins Jiawei
2022-08-27 14:49 ` Hawkins Jiawei
2022-08-29 9:51 ` Dan Carpenter
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=1636796c-c85e-7f47-e96f-e074fee3c7d3@huawei.com \
--to=chenxiaosong2@huawei.com \
--cc=akpm@linux-foundation.org \
--cc=anton@tuxera.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-ntfs-dev@lists.sourceforge.net \
--cc=syzbot+5f8dcabe4a3b2c51c607@syzkaller.appspotmail.com \
--cc=syzkaller-bugs@googlegroups.com \
--cc=yin31149@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.