On Thu, 1 May 2025 19:24:33 -0500
Andrew Hamilton <adham...@gmail.com> wrote:

> Hi Glenn,
> 
> This patch was focused on the most serious issue being seen by people where
> GRUB might hang during startup and grub-mount may crash.
> 
> There are remaining issues in NTFS, I saw the same failures you are seeing
> from the filesystem tests.
> 
> I have been working on fixing the rest of the grub-fstest failures, but it
> has turned out to be quite involved so it's taking some time.  There are
> some issues in the validate_attribute function (like the run size
> calculation seems wrong) and also how validate_attribute is used in some
> places (I think it's being mixed between attributes and attribute-lists).
> It is complicated by trying to fix the regression while also trying to
> avoid reintroducing the fuzzing identified issues that were being fixed
> originally.
> 
> I'm still working at it, and intend to submit a new patch when I have it.
> Sorry for the slowness, it's something I try to do whenever I have some
> free time.  If anyone is an NTFS expert I'd be more than happy to hand it
> off ;)

Thanks for the clarification. My email was send to raise awareness, as
I hadn't seen this issue being discussed on the list. Glad to know that
this issue is known and being worked on. Much appreciated, carry on.

Glenn

> 
> 
> Thanks,
> Andrewkernel/printk/printk.c
> 
> On Thu, May 1, 2025 at 5:50 PM Glenn Washburn <developm...@efficientek.com>
> wrote:
> 
> > On Thu, 20 Mar 2025 18:28:00 -0500
> > Andrew Hamilton <adham...@gmail.com> wrote:
> >
> > > A regression was introduced recently as a part of the series of
> > > filesystem related patches to address some CVEs found in GRUB.
> > >
> > > This issue may cause either an infinite loop at startup when
> > > accessing certain valid NTFS file systems, or may cause a crash
> > > due to a NULL pointer deference on systems where "NULL" address
> > > is invalid (such as may happen when calling grub-mount from
> > > the operating system level).
> > >
> > > Correct this issue by checking that at->attr_cur is within bounds
> > > inside find_attr.
> > >
> > > Fixes: https://savannah.gnu.org/bugs/?66855
> >
> > The NTFS filesystem test is failing even though this change is
> > included. grub-fstest is failing to detect the generated NTFS
> > filesystem as NTFS. The debug log shows these lines:
> >
> > grub-core/kern/fs.c:56:fs: Detecting ntfs...
> > grub-core/fs/ntfs.c:212:ntfs: spare=800 min_size=73 attr_size=72
> > grub-core/kern/fs.c:79:fs: error: no $INDEX_ROOT.
> > grub-core/kern/fs.c:80:fs: ntfs detection failed.
> >
> > Based on where this error message is generated, it looks like the issue
> > is in find_attr(). So this change looks like a partial fix.
> >
> > Glenn
> >
> > > Co-authored-by: B Horn <b...@horn.uk>
> > > Co-authored-by: Andrew Hamilton <adham...@gmail.com>
> > > Signed-off-by: Andrew Hamilton <adham...@gmail.com>
> > > ---
> > > V2 -> V3: Changed NULL check to >= at->mft->buf
> > >
> > >  grub-core/fs/ntfs.c | 3 ++-
> > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/grub-core/fs/ntfs.c b/grub-core/fs/ntfs.c
> > > index 960833a34..767b93c21 100644
> > > --- a/grub-core/fs/ntfs.c
> > > +++ b/grub-core/fs/ntfs.c
> > > @@ -387,7 +387,8 @@ find_attr (struct grub_ntfs_attr *at, grub_uint8_t
> > attr)
> > >      }
> > >    at->attr_cur = at->attr_nxt;
> > >    mft_end = at->mft->buf + (at->mft->data->mft_size <<
> > GRUB_NTFS_BLK_SHR);
> > > -  while (at->attr_cur < mft_end && *at->attr_cur != 0xFF)
> > > +  while (at->attr_cur >= at->mft->buf && at->attr_cur < mft_end
> > > +         && *at->attr_cur != 0xFF)
> > >      {
> > >        at->attr_nxt = next_attribute (at->attr_cur, at->end);
> > >        if (*at->attr_cur == GRUB_NTFS_AT_ATTRIBUTE_LIST)
> >

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to