From: Daniel Jacobowitz <drow@false.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sourceware.org
Subject: Re: RFC: Check permissions of .gdbinit files
Date: Mon, 30 May 2005 23:00:00 -0000 [thread overview]
Message-ID: <20050530224200.GB2727@nevyn.them.org> (raw)
In-Reply-To: <u64x08jma.fsf@gnu.org>
On Tue, May 31, 2005 at 12:54:53AM +0300, Eli Zaretskii wrote:
> > Date: Mon, 30 May 2005 14:52:01 -0400
> > From: Daniel Jacobowitz <drow@false.org>
> >
> > Gentoo recently published a security update for GDB, citing the fact that
> > GDB would load .gdbinit from the current directory even if that was owned by
> > another user. I'm not sure how I feel about running GDB in an untrusted
> > directory or on untrusted binaries and expecting it to behave sensibly, but
> > this particular issue is easy to fix. Here's my suggested fix; it's not the
> > same as Gentoo's. If .gdbinit is world writable or owned by a different
> > user, refuse to open it (and warn the user).
> >
> > Anyone have opinions on this change?
>
> Hmm... bother. This change might break some of the non-Posix
> platforms. Perhaps I missed something, but AFAICS MinGW lacks the
> definition of S_IWOTH, so this will fail to compile for MinGW. But
> even if it did compile, the MinGW version of `fstat' returns the
> S_IWOTH bit set for all files, so the MinGW port will probably always
> display the warning.
>
> The DJGPP port will not be affected: it does have S_IWOTH and it
> reports the S_IWOTH bit as reset. Can't easily check Cygwin here, but
> I'm guessing it will do TRT here as well.
Bother; I thought about the portability for a while, but didn't quite
consider this. We're still OK though - the whole thing is surrounded
by HAVE_GETUID, and MinGW does not have GETUID, if I understand
correctly. I think it's plausible to assume that S_IWOTH will be
defined if getuid() is; does that seem reasonable to you?
> > + error (_("source command requires pathname of file to source."));
>
> I think the message text should begin with a capital letter (yes, I
> know the original didn't do it, either).
I was pretty sure that the convention was lowercase letter, and no
trailing period. But I don't think this is documented anywhere, and
the source is wildly inconsistent. I could easily be remembering wrong
:-)
> > - stream = fopen (file, FOPEN_RT);
> > - if (!stream)
> > + fd = open (file, O_RDONLY);
> > + if (fd != -1)
> > + stream = fdopen (fd, FOPEN_RT);
>
> Could you please tell why you replaced `fopen' with `open'+`fdopen'?
In order to have the file descriptor, for fstat. It occurs to me now
that "fileno" could be used for this; I am not sure how portable fileno
is (my system's man page for it is somewhat ambiguous on the subject)
but I see that we use it already, so the answer is "portable enough".
That would probably be cleaner.
> > + if (statbuf.st_uid != getuid () || (statbuf.st_mode & S_IWOTH))
>
> Shouldn't we allow this to go unnoticed for root?
No, that's especially when we shouldn't. It's root that wants to be
paranoid about silently using some user's .gdbinit file. This is the
opposite problem to access checks in a privileged program; we want no
more "privileges" for the superuser here.
> > + warning (_("not using untrusted file \"%s\""), file);
>
> I think the message text should begin with a capital letter.
>
> Last, but not least: if we decide to make such a change (which to my
> HO sounds like a good idea, in general), we should describe this
> subtlety (and the warning it could produce) in the user's manual.
Where would you suggest? Ah, never mind, I see there is a section on
.gdbinit already.
--
Daniel Jacobowitz
CodeSourcery, LLC
next prev parent reply other threads:[~2005-05-30 22:42 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-30 19:41 Daniel Jacobowitz
2005-05-30 19:46 ` Nathan J. Williams
2005-05-30 19:53 ` Daniel Jacobowitz
2005-05-30 19:54 ` Nathan J. Williams
2005-05-30 19:55 ` Daniel Jacobowitz
2005-05-30 21:28 ` Jason Molenda
2005-05-30 22:29 ` Eli Zaretskii
2005-05-30 23:00 ` Daniel Jacobowitz [this message]
2005-05-31 13:52 ` Eli Zaretskii
2005-05-31 21:03 ` Christopher Faylor
[not found] ` <umzqb9kha.fsf@gnu.org>
[not found] ` <20050531222233.GF9864@trixie.casa.cgf.cx>
2005-06-02 3:51 ` Eli Zaretskii
2005-06-02 4:26 ` Christopher Faylor
2005-06-02 21:54 ` Eli Zaretskii
2005-05-30 22:42 ` Andreas Schwab
2005-05-30 22:49 ` Daniel Jacobowitz
2005-05-31 2:27 ` Andreas Schwab
2005-05-31 2:50 ` Daniel Jacobowitz
2005-05-31 14:42 ` Bob Rossi
2005-05-31 17:54 ` Stan Shebs
2005-06-11 22:35 ` Mark Kettenis
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=20050530224200.GB2727@nevyn.them.org \
--to=drow@false.org \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
/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