FreeBSD Security Advisories
2004-Feb-04 14:03 UTC
[FreeBSD-Announce] FreeBSD Security Advisory FreeBSD-SA-04:01.mksnap_ffs
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 ============================================================================FreeBSD-SA-04:01.mksnap_ffs Security Advisory The FreeBSD Project Topic: mksnap_ffs clears file system options Category: core Module: mksnap_ffs Announced: 2004-01-30 Credits: Kimura Fuyuki <fuyuki@nigredo.org> Wiktor Niesiobedzki <bsd@w.evip.pl> Affects: FreeBSD 5.1-RELEASE FreeBSD 5.2-RELEASE Corrected: 2004-01-27 19:33:16 UTC (RELENG_5_1, 5.1-RELEASE-p12) 2004-01-29 22:54:31 UTC (RELENG_5_2, 5.2-RELEASE-p1) CVE Name: CAN-2004-0099 FreeBSD only: YES For general information regarding FreeBSD Security Advisories, including descriptions of the fields above, security branches, and the following sections, please visit <URL:http://www.freebsd.org/security/>. I. Background Mounted filesystems can have a variety of flags set on them. Some flags affect performance and reliability, while others enable or disable particular security-related features such as the ability to execute a binary stored on the filesystem or the use of access control lists to complement normal Unix file permissions. The mksnap_ffs(8) command creates a `snapshot' of a filesystem. A `snapshot' is a static representation of the state of the filesystem at a particular point in time. Snapshots have a variety of uses, but their primary purpose is to make it possible to run fsck(8) and dump(8) on live filesystems. II. Problem Description The kernel interface for creating a snapshot of a filesystem is the same as that for changing the flags on that filesystem. Due to an oversight, the mksnap_ffs(8) command called that interface with only the snapshot flag set, causing all other flags to be reset to the default value. III. Impact A regularly scheduled backup of a live filesystem, or any other process that uses the mksnap_ffs(8) command (for instance, to provide a rough undelete functionality on a file server), will clear any flags in effect on the filesystem being snapshot. Possible consequences depend on local usage, but can include disabling extended access control lists or enabling the use of setuid executables stored on an untrusted filesystem. The mksnap_ffs(8) command is normally only available to the superuser and members of the `operator' group. There is therefore no risk of a user gaining elevated privileges directly through use of the mksnap_ffs(8) command unless it has been intentionally made available to unprivileged users. IV. Workaround Do not use the mksnap_ffs(8) command, nor the -L option of the dump(8) command. It is recommended that you delete the mksnap_ffs(8) command from your system to prevent accidental use: # rm /sbin/mksnap_ffs V. Solution Do one of the following: 1) Upgrade your vulnerable system to the RELENG_5_1 or RELENG_5_2 security branch dated after the correction date. NOTE WELL: Due to release engineering in progress at the time of this writing, the RELENG_5_2 security branch (5.2-RELEASE-p1) also includes numerous other critical bug fixes, most of which are not security related. Please read src/UPDATING for details on these changes. 2) To patch your present system: a) Download the relevant patch from the location below, and verify the detached PGP signature using your PGP utility. [FreeBSD 5.1 systems] # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:01/mksnap_ffs_5_1.patch # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:01/mksnap_ffs_5_1.patch.asc [FreeBSD 5.2 systems] # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:01/mksnap_ffs_5_2.patch # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:01/mksnap_ffs_5_2.patch.asc b) Execute the following commands as root: # cd /usr/src # patch < /path/to/patch # cd /usr/src/sbin/mksnap_ffs # make obj && make depend && make && make install You are strongly encouraged to verify that all your filesystems have the correct flags set. The mount(8) command can list currently mounted filesystems and flags. Run the following command as root: # mount VI. Correction details The following list contains the revision numbers of each file that was corrected in FreeBSD. Branch Revision Path - ------------------------------------------------------------------------- RELENG_5_1 src/sbin/mksnap_ffs/mksnap_ffs.c 1.2.2.1 src/sys/conf/newvers.sh 1.50.2.14 RELENG_5_2 src/sbin/mksnap_ffs/mksnap_ffs.c 1.5.2.1 src/sys/conf/newvers.sh 1.56.2.3 - ------------------------------------------------------------------------- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (FreeBSD) iD8DBQFAGn6pFdaIBMps37IRApSKAJ9XfweoblldFos1o7QlaDRVVIdFCACePueA 1jXllY/GB8cAeEQ8oaYYPTU=6qi5 -----END PGP SIGNATURE-----