| Summary: | /etc/rc.d/tmp may act incorrectly based on unprivleged local user actions | ||
|---|---|---|---|
| Product: | Base System | Reporter: | Jon Passki <jon> |
| Component: | conf | Assignee: | Jaakko Heinonen <jh> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | ||
| Priority: | Normal | ||
| Version: | Unspecified | ||
| Hardware: | Any | ||
| OS: | Any | ||
|
Description
Jon Passki
2009-12-07 22:50:06 UTC
Responsible Changed From-To: freebsd-bugs->freebsd-rc Over to maintainer(s). Here is a proposed minimal fix for the problem. mktemp(1) should be
available because the script requires mountcritremote. (Can someone
confirm this?)
%%%
Index: etc/rc.d/tmp
===================================================================
--- etc/rc.d/tmp (revision 204194)
+++ etc/rc.d/tmp (working copy)
@@ -51,8 +51,8 @@ case "${tmpmfs}" in
[Nn][Oo])
;;
*)
- if /bin/mkdir -p /tmp/.diskless 2> /dev/null; then
- rmdir /tmp/.diskless
+ if _tmpdir=$(mktemp -d -q /tmp/.diskless.XXXXXX); then
+ rmdir ${_tmpdir}
else
if [ -h /tmp ]; then
echo "*** /tmp is a symlink to a non-writable area!"
%%%
On Fri, Mar 5, 2010 at 12:15 AM, Jaakko Heinonen <jh@freebsd.org> wrote: > > Here is a proposed minimal fix for the problem. mktemp(1) should be > available because the script requires mountcritremote. (Can someone > confirm this?) > > %%% > Index: etc/rc.d/tmp > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- etc/rc.d/tmp =A0 =A0 =A0 =A0(revision 204194) > +++ etc/rc.d/tmp =A0 =A0 =A0 =A0(working copy) > @@ -51,8 +51,8 @@ case "${tmpmfs}" in > =A0[Nn][Oo]) > =A0 =A0 =A0 =A0;; > =A0*) > - =A0 =A0 =A0 if /bin/mkdir -p /tmp/.diskless 2> /dev/null; then > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 rmdir /tmp/.diskless > + =A0 =A0 =A0 if _tmpdir=3D$(mktemp -d -q /tmp/.diskless.XXXXXX); then > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 rmdir ${_tmpdir} > =A0 =A0 =A0 =A0else > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if [ -h /tmp ]; then > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0echo "*** /tmp is a symlin= k to a non-writable area!" > %%% > Seems like an appropriate fix. I don't have a way to test this out at the moment though. Jon Responsible Changed From-To: freebsd-rc->jh Take. Author: jh Date: Sat Mar 13 12:02:44 2010 New Revision: 205121 URL: http://svn.freebsd.org/changeset/base/205121 Log: Use an unique directory name instead of hardcoded /tmp/.diskless. A malicious user could create a file named /tmp/.diskless and cause the script to misbehave. PR: conf/141258 Reported by: Jon Passki MFC after: 1 week Modified: head/etc/rc.d/tmp Modified: head/etc/rc.d/tmp ============================================================================== --- head/etc/rc.d/tmp Sat Mar 13 11:51:18 2010 (r205120) +++ head/etc/rc.d/tmp Sat Mar 13 12:02:44 2010 (r205121) @@ -51,8 +51,8 @@ case "${tmpmfs}" in [Nn][Oo]) ;; *) - if /bin/mkdir -p /tmp/.diskless 2> /dev/null; then - rmdir /tmp/.diskless + if _tmpdir=$(mktemp -d -q /tmp/.diskless.XXXXXX); then + rmdir ${_tmpdir} else if [ -h /tmp ]; then echo "*** /tmp is a symlink to a non-writable area!" _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" State Changed From-To: open->patched Fixed in head (r205121). Author: jh Date: Tue Mar 23 16:45:29 2010 New Revision: 205518 URL: http://svn.freebsd.org/changeset/base/205518 Log: MFC r205121: Use an unique directory name instead of hardcoded /tmp/.diskless. A malicious user could create a file named /tmp/.diskless and cause the script to misbehave. PR: conf/141258 Modified: stable/8/etc/rc.d/tmp Directory Properties: stable/8/etc/ (props changed) Modified: stable/8/etc/rc.d/tmp ============================================================================== --- stable/8/etc/rc.d/tmp Tue Mar 23 15:14:45 2010 (r205517) +++ stable/8/etc/rc.d/tmp Tue Mar 23 16:45:29 2010 (r205518) @@ -51,8 +51,8 @@ case "${tmpmfs}" in [Nn][Oo]) ;; *) - if /bin/mkdir -p /tmp/.diskless 2> /dev/null; then - rmdir /tmp/.diskless + if _tmpdir=$(mktemp -d -q /tmp/.diskless.XXXXXX); then + rmdir ${_tmpdir} else if [ -h /tmp ]; then echo "*** /tmp is a symlink to a non-writable area!" _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" Author: jh Date: Tue Mar 30 15:25:16 2010 New Revision: 205882 URL: http://svn.freebsd.org/changeset/base/205882 Log: MFC r205121: Use an unique directory name instead of hardcoded /tmp/.diskless. A malicious user could create a file named /tmp/.diskless and cause the script to misbehave. PR: conf/141258 Modified: stable/7/etc/rc.d/tmp Directory Properties: stable/7/etc/ (props changed) Modified: stable/7/etc/rc.d/tmp ============================================================================== --- stable/7/etc/rc.d/tmp Tue Mar 30 13:55:15 2010 (r205881) +++ stable/7/etc/rc.d/tmp Tue Mar 30 15:25:16 2010 (r205882) @@ -49,8 +49,8 @@ case "${tmpmfs}" in [Nn][Oo]) ;; *) - if /bin/mkdir -p /tmp/.diskless 2> /dev/null; then - rmdir /tmp/.diskless + if _tmpdir=$(mktemp -d -q /tmp/.diskless.XXXXXX); then + rmdir ${_tmpdir} else if [ -h /tmp ]; then echo "*** /tmp is a symlink to a non-writable area!" _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" Author: jh Date: Tue Mar 30 15:26:12 2010 New Revision: 205883 URL: http://svn.freebsd.org/changeset/base/205883 Log: MFC r205121: Use an unique directory name instead of hardcoded /tmp/.diskless. A malicious user could create a file named /tmp/.diskless and cause the script to misbehave. PR: conf/141258 Modified: stable/6/etc/rc.d/tmp Directory Properties: stable/6/etc/ (props changed) Modified: stable/6/etc/rc.d/tmp ============================================================================== --- stable/6/etc/rc.d/tmp Tue Mar 30 15:25:16 2010 (r205882) +++ stable/6/etc/rc.d/tmp Tue Mar 30 15:26:12 2010 (r205883) @@ -49,8 +49,8 @@ case "${tmpmfs}" in [Nn][Oo]) ;; *) - if /bin/mkdir -p /tmp/.diskless 2> /dev/null; then - rmdir /tmp/.diskless + if _tmpdir=$(mktemp -d -q /tmp/.diskless.XXXXXX); then + rmdir ${_tmpdir} else if [ -h /tmp ]; then echo "*** /tmp is a symlink to a non-writable area!" _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" State Changed From-To: patched->closed Fixed in head, stable/8, stable/7 and stable/6. |