aboutsummaryrefslogtreecommitdiff
path: root/util
Commit message (Collapse)AuthorAge
* Add FAT to mountpoint file system whitelistHEADmasterGravatar Benjamin Barenblat2018-08-03
|
* Realphabetize and re-document mountpoint file system whitelistGravatar Benjamin Barenblat2018-08-03
|
* Add autofs to mountpoint file system whitelistGravatar Robo Shimmer2018-07-31
|
* fusermount: Fix memory leaksGravatar Rostislav Skudnov2018-07-23
|
* fusermount: whitelist known-good filesystems for mountpointsGravatar Jann Horn2018-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before: $ _FUSE_COMMFD=1 priv_strace -s8000 -e trace=mount util/fusermount3 /proc/self/fd mount("/dev/fuse", ".", "fuse", MS_NOSUID|MS_NODEV, "fd=3,rootmode=40000,user_id=379777,group_id=5001") = 0 sending file descriptor: Socket operation on non-socket +++ exited with 1 +++ After: $ _FUSE_COMMFD=1 priv_strace -s8000 -e trace=mount util/fusermount3 /proc/self/fd util/fusermount3: mounting over filesystem type 0x009fa0 is forbidden +++ exited with 1 +++ This patch could potentially have security impact on some systems that are configured with allow_other; see https://launchpad.net/bugs/1530566 for an example of how a similar issue in the ecryptfs mount helper was exploitable. However, the FUSE mount helper performs slightly different security checks, so that exact attack doesn't work with fusermount; I don't know of any specific attack you could perform using this, apart from faking the SELinux context of your process when someone's looking at a process listing. Potential targets for overwrite are (looking on a system with a 4.9 kernel): writable only for the current process: /proc/self/{fd,map_files} (Yes, "ls -l" claims that you don't have write access, but that's not true; "find -writable" will show you what access you really have.) writable also for other owned processes: /proc/$pid/{sched,autogroup,comm,mem,clear_refs,attr/*,oom_adj, oom_score_adj,loginuid,coredump_filter,uid_map,gid_map,projid_map, setgroups,timerslack_ns}
* fusermount: refuse unknown optionsGravatar Jann Horn2018-07-18
| | | | | | | | | | | | Blacklists are notoriously fragile; especially if the kernel wishes to add some security-critical mount option at a later date, all existing systems with older versions of fusermount installed will suddenly have a security problem. Additionally, if the kernel's option parsing became a tiny bit laxer, the blacklist could probably be bypassed. Whitelist known-harmless flags instead, even if it's slightly more inconvenient.
* fusermount: bail out on transient config read failureGravatar Jann Horn2018-07-18
| | | | | | | | | | | | | | | If an attacker wishes to use the default configuration instead of the system's actual configuration, they can attempt to trigger a failure in read_conf(). This only permits increasing mount_max if it is lower than the default, so it's not particularly interesting. Still, this should probably be prevented robustly; bail out if funny stuff happens when we're trying to read the config. Note that the classic attack trick of opening so many files that the system-wide limit is reached won't work here - because fusermount only drops the fsuid, not the euid, the process is running with euid=0 and CAP_SYS_ADMIN, so it bypasses the number-of-globally-open-files check in get_empty_filp() (unless you're inside a user namespace).
* fusermount: don't feed "escaped commas" into mount optionsGravatar Jann Horn2018-07-18
| | | | | | | | | | | | | | The old code permits the following behavior: $ _FUSE_COMMFD=10000 priv_strace -etrace=mount -s200 fusermount -o 'foobar=\,allow_other' mount mount("/dev/fuse", ".", "fuse", MS_NOSUID|MS_NODEV, "foobar=\\,allow_other,fd=3,rootmode=40000,user_id=1000,group_id=1000") = -1 EINVAL (Invalid argument) However, backslashes do not have any special meaning for the kernel here. As it happens, you can't abuse this because there is no FUSE mount option that takes a string value that can contain backslashes; but this is very brittle. Don't interpret "escape characters" in places where they don't work.
* fusermount: prevent silent truncation of mount optionsGravatar Jann Horn2018-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, in the kernel, copy_mount_options() copies in one page of userspace memory (or less if some of that memory area is not mapped). do_mount() then writes a null byte to the last byte of the copied page. This means that mount option strings longer than PAGE_SIZE-1 bytes get truncated silently. Therefore, this can happen: user@d9-ut:~$ _FUSE_COMMFD=10000 fusermount -o "$(perl -e 'print ","x4000')" mount sending file descriptor: Bad file descriptor user@d9-ut:~$ grep /mount /proc/mounts /dev/fuse /home/user/mount fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0 user@d9-ut:~$ fusermount -u mount user@d9-ut:~$ _FUSE_COMMFD=10000 fusermount -o "$(perl -e 'print ","x4050')" mount sending file descriptor: Bad file descriptor user@d9-ut:~$ grep /mount /proc/mounts /dev/fuse /home/user/mount fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=100 0 0 user@d9-ut:~$ fusermount -u mount user@d9-ut:~$ _FUSE_COMMFD=10000 fusermount -o "$(perl -e 'print ","x4051')" mount sending file descriptor: Bad file descriptor user@d9-ut:~$ grep /mount /proc/mounts /dev/fuse /home/user/mount fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=10 0 0 user@d9-ut:~$ fusermount -u mount user@d9-ut:~$ _FUSE_COMMFD=10000 fusermount -o "$(perl -e 'print ","x4052')" mount sending file descriptor: Bad file descriptor user@d9-ut:~$ grep /mount /proc/mounts /dev/fuse /home/user/mount fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=1 0 0 user@d9-ut:~$ fusermount -u mount I'm not aware of any context in which this is actually exploitable - you'd still need the UIDs to fit, and you can't do it if the three GIDs of the process don't match (in the case of a typical setgid binary), but it does look like something that should be fixed. I also plan to try to get this fixed on the kernel side.
* Source LSB init functionsGravatar Laszlo Boszormenyi (GCS)2018-07-04
|
* add_arg(): check for overflowGravatar Nikolaus Rath2018-05-11
| | | | Fixes: #222.
* Fix compile-time warnings on IGNORE_MTABGravatar Tomohiro Kusumi2018-05-08
| | | | | | | | | | | | | Silence below warnings which appear if IGNORE_MTAB is defined. [59/64] Compiling C object 'util/fusermount3@exe/fusermount.c.o'. ../util/fusermount.c:493:12: warning: function declaration isn't a prototype [-Wstrict-prototypes] static int count_fuse_fs() ^~~~~~~~~~~~~ ../util/fusermount.c: In function 'unmount_fuse': ../util/fusermount.c:508:46: warning: unused parameter 'quiet' [-Wunused-parameter] static int unmount_fuse(const char *mnt, int quiet, int lazy) ^~~~~
* Add example configuration file (#216)Gravatar admorgan2018-03-28
| | | | Add a configuration file with all options disabled that includes all valid options and their description.
* Handle mount ... -o nofail (#221)Gravatar Josh Soref2017-12-01
| | | Accept (and ignore) nofail mount option
* make udevrulesdir configurableGravatar Joerg Thalheim2017-10-20
| | | | on nixos we install fuse in its own hierarchy independent from systemd.
* Dropped support for building with autotoolsGravatar Nikolaus Rath2017-08-24
| | | | It's just too much pain to keep it working.
* Fixed udev rules directory.Gravatar Nikolaus Rath2017-08-14
|
* Ask pkgconfig where we should install udev rulesGravatar Heiko Becker2017-08-02
|
* Don't use emacs' python-mode for meson filesGravatar Nikolaus Rath2017-07-07
| | | | There is a proper meson-mode now.
* Install init script in $DESTDIR/etc, not $prefix/$sysconfdirGravatar Nikolaus Rath2017-06-21
| | | | Fixes: #178.
* Added experimental support for building with Meson+NinjaGravatar Nikolaus Rath2017-01-12
|
* Rename more things from fuse to fuse3Gravatar Przemysław Pawełczyk2016-11-28
|
* Fix memory leak in fusermount.Gravatar Nikolaus Rath2016-10-28
|
* Renamed fusermount / mount.fuse to fusermount3 / mount.fuse3Gravatar Nikolaus Rath2016-10-28
|
* Removed obsolete FUSE_DEV_OLDGravatar Nikolaus Rath2016-10-27
|
* Removed -o nonempty optionGravatar Nikolaus Rath2016-10-15
| | | | | This brings the default behavior in-line with that of the regular `mount` command.
* fusermount, libfuse: send value as unsigned in "user_id=" and "group_id="Gravatar Miklos Szeredi2014-07-15
| | | | | ...options. Uids/gids larger than 2147483647 would result in EINVAL when mounting the filesystem. This also needs a fix in the kernel.
* Merge remote-tracking branch 'origin/fuse_2_9_bugfix'Gravatar Miklos Szeredi2013-08-26
|\
| * Add missing includesGravatar Daniel Thau2013-08-26
| | | | | | | | This allows compiling fuse with musl.
* | Print help on stdout instead of stderrGravatar Miklos Szeredi2013-07-26
| |
* | ulockmgr: strip ulockmgr support from this source packageGravatar Miklos Szeredi2013-07-25
| | | | | | | | | | | | Distribute ulockmgr separately. It is not needed for the building of libfuse, only fusexmp_fh. Check ulockmgr library in ./configure and if not disable remote-lock suport in fusexmp_fh.
* | libfuse: remove "-D_FILE_OFFSET_BITS=64" from fuse.pcGravatar Miklos Szeredi2013-07-24
|/ | | | add AC_SYS_LARGEFILE to your configure.ac instead.
* Fix build with automake >= 1.12.1Gravatar Olivier Blin2012-07-04
| | | | | | | | | | | | mkdir_p is deprecated since automake 1.12.1 (see automake commit 7a1eb9ff9027929687f12905e131f6fda3fa6d0c). MKDIR_P should be used instead of mkdir_p. This is available since autoconf 2.59d (2006-06-05), by calling AC_PROG_MKDIR_P. The mkdir_p workaround was not working anyway for out-of-tree builds, since the ../mkinstalldirs path would be incorrect.
* Fix install from out-of-tree buildGravatar Olivier Blin2012-07-04
| | | | | | | When building out-of-tree, install fails since it tries to copy mount.fuse binary from source directory. Patch initially from Damien Thébault (SoftAtHome)
* Fix the following compile errorGravatar Miklos Szeredi2011-11-17
| | | | | | | | fusermount.c: In function 'clone_newns': fusermount.c:315:2: warning: implicit declaration of function 'clone' [-Wimplicit-function-declaration] fusermount.c:315:44: error: 'CLONE_NEWNS' undeclared (first use in this function) fusermount.c:315:44: note: each undeclared identifier is reported only once for each function it appears in fusermount.c:317:1: warning: control reaches end of non-void function [-Wreturn-type]
* Replace daemon() function with fork()Gravatar Anatol Pomozov2011-09-23
| | | | | | | | daemon() is a BSD-ism. Although it is available on many platforms it is not a standard function. Some platforms (e.g. MacOSX) deprecated it. It is safer just to use fork() function that is a part of POSIX.
* Spell checking comments, etc...Gravatar Reuben Hawkins2011-05-25
| | | | | | | | | | | ...with the help of vim :set spell modified: FAQ modified: include/fuse.h modified: include/fuse_common.h modified: include/fuse_opt.h modified: lib/fuse_kern_chan.c modified: util/fusermount.c
* cleaning up warningsGravatar Reuben Hawkins2011-05-23
| | | | | | | | | fprintf(stderr, whatever); -> fprintf(stderr, "%s", whatever); checking return values on chdir and lockf where we weren't already modified: example/cusexmp.c modified: example/fioclient.c modified: util/fusermount.c
* fusermount: Added support for auto_unmount optionGravatar Max Krasnyansky2011-04-15
| | | | | | When this option is specified fusermount will become a daemon and wait for the parent to exit or die, which causes control fd to get closed. It will then try to unmount the original mountpoint.
* Check the 'mtablock' for negative valueGravatar Laszlo Papp2011-03-30
|
* fusermount: clean up do_mount() functionGravatar Miklos Szeredi2011-03-30
|
* Eliminate the unused valueGravatar Laszlo Papp2011-03-30
|
* Fix resource leaks in fusermountGravatar Laszlo Papp2011-03-30
|
* Do not pass NULL to xstrdupGravatar Laszlo Papp2011-03-30
|
* Check the return value properly before passing it to any functionGravatar Laszlo Papp2011-03-30
|
* In case of failure to add to /etc/mtab don't umount.Gravatar Miklos Szeredi2011-03-11
| | | | Reported by Marc Deslauriers
* Revert "Fix cleanup in case of failed mount"Gravatar Miklos Szeredi2011-03-11
| | | | | | | | This reverts commit bf5ffb5fd8558bd799791834def431c0cee5a11f. Cleanup of mount doesn't work the way it was envisioned, because the kernel doesn't follow mounts on the umount() call, hence it will find a non-mounted directory.
* fusermount: only allow mount and umount if util-linux suppports ↵Gravatar Miklos Szeredi2011-01-31
| | | | | | | --no-canonicalize Remove "legacy" util-linux support as missing --no-canonicalize cannot be worked around in fuse.
* fusermount: chdir to / before performing mount/umountGravatar Miklos Szeredi2011-01-31
|
* Fix cleanup in case of failed mountGravatar Miklos Szeredi2011-01-31
| | | | | In case of failure to add to /etc/mtab use same mountpoint for cleanup as for mounting. Reported by Marc Deslauriers