Re: TOCTOU bug in make(1)

Mario Campos <[email protected]>
Newsgroups gmane.os.netbsd.devel.toolchain
Message-ID <CAHEkMs5YB8vSw+zHAa-u7bQJpQ3yhAu0O=P3ejPyZ38i07OJYg@mail.gmail.com>
On Thu, Oct 6, 2022 at 3:52 PM Joerg Sonnenberger <[email protected]> wrote:
>
> Am Thu, Oct 06, 2022 at 08:05:51PM +0000 schrieb David Holland:
> > On Thu, Oct 06, 2022 at 09:43:35PM +0200, Joerg Sonnenberger wrote:
> >  > > I ran CodeQL, a SAST tool, against trunk. It found a TOCTOU vulnerability
> >  > > in the `unlink_file` function of make(1). The function is a small wrapper
> >  > > over unlink(2), but it first checks that the file exists using lstat(2).
> >  > > Although I don't see an immediate danger here, I admit I'm not
> >  > > very imaginative for vulnerabilities.
> >  >
> >  > This is necessary for historic reasons because old UNIX systems allows
> >  > unlink(2) on directories with bad consequences.
> >
> > Also, even if unlink() on a directory actually results in a correct
> > rmdir, changing the behavior of that function so that delete-target-
> > on-error sometimes removes directories and sometimes doesn't,
> > depending on the OS or even on the filesystem in use, doesn't seem
> > like a good idea.
>
> Actually, the correct and expected behavior is that it fails on
> directories. unlink and rmdir are supposed to be symmetrical in that
> regard.
>
> Joerg

Many good points. I especially agree that there is likely no
vulnerability here, as make is designed to execute arbitrary code --
fair enough.

I think a comment explaining any historical reasoning always sounds
like a good idea, but I'll leave that for someone else to decide.

Thanks
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.