[Bug 2007] New: The literal string ${prefix}/bin appears in the user PATH under some circumstances
bugzilla-daemon at bugzilla.mindrot.org
bugzilla-daemon at bugzilla.mindrot.org
Sun May 13 04:20:56 EST 2012
https://bugzilla.mindrot.org/show_bug.cgi?id=2007
Bug #: 2007
Summary: The literal string ${prefix}/bin appears in the user
PATH under some circumstances
Classification: Unclassified
Product: Portable OpenSSH
Version: 6.0p1
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Build system
AssignedTo: unassigned-bugs at mindrot.org
ReportedBy: nix-corp at esperi.org.uk
Created attachment 2151
--> https://bugzilla.mindrot.org/attachment.cgi?id=2151
Recursively expand ${bindir}
I just noticed something strange in ssh sessions using OpenSSH 6.0p1
(and almost certainly earlier versions too). My PATH was set to this:
/home/nix/bin:/usr/bin:/bin:/usr/sbin:/sbin:${prefix}/bin:/usr/games
That ${prefix}/bin is probably a mistake. Worse yet, it's a relative
path, so in theory a security hole if an attacker knew to create a
directory with such a ludicrous name and fill it with typos for normal
commands. (I'm not marking this as a security bug because the case in
which it happens is quite unlikely: see below.)
It's coming from the code in configure.in which attempts to ensure that
the installation prefix is in the user PATH... but it expands it only
once, and assumes that is sufficient. The default expansion of
${bindir) contains no further variable references, but this need not be
the case: you can specify (in config.site or on the command-line) a
variant like ${prefix}/bin, which contains another variable, in which
case you get the problem above, in a self-disguising fashion because
the printout of the path at the end of configure expands it once more
and things look reasonable, though they are not. This sort of
multiple-reference was the default in the past and people with old
config.sites are likely to have it as their default still. (You can
even have repeated references to NONE in there, i.e. a ${bindir}
containing a reference to a variable which itself contains a NONE,
references to further variables, et seq ad nauseam.)
Most people don't do that, so most OpenSSH installations are not
vulnerable: but it's probably worth fixing anyway.
Patch attached (which in theory might cause configure to hang if
${bindir} contains a loop of variable references, but every other
configure script out there will also hang or violently misbehave in
that situation, so don't do that then.)
--
Configure bugmail: https://bugzilla.mindrot.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.
More information about the openssh-bugs
mailing list