Go to file
Panu Matilainen f2d3be2a87 Restrict following symlinks to directories by ownership (CVE-2017-7500)
Only follow directory symlinks owned by target directory owner or root.
This prevents privilege escalation from user-writable directories via
directory symlinks to privileged directories on package upgrade, while
still allowing admin to arrange disk usage with symlinks.

The rationale is that if you can create symlinks owned by user X you *are*
user X (or root), and if you also own directory Y you can do whatever with
it already, including change permissions. So when you create a symlink to
that directory, the link ownership acts as a simple stamp of authority that
you indeed want rpm to treat this symlink as it were the directory that
you own. Such a permission can only be given by you or root, which
is just the way we want it. Plus it's almost ridiculously simple as far
as rules go, compared to trying to calculate something from the
source vs destination directory permissions etc.

In the normal case, the user arranging diskspace with symlinks is indeed
root so nothing changes, the only real change here is to links created by
non-privileged users which should be few and far between in practise.
Unfortunately our test-suite runs as a regular user via fakechroot and
thus the testcase for this fails under the new rules. Adjust the testcase
to get the ownership straight and add a second case for the illegal
behavior, basically the same as the old one but with different expectations.
2017-09-28 08:36:22 +03:00
.tx Update transifex config for domain change 2013-06-07 12:57:57 +03:00
build Forbid 'if' richops in 'or' context and 'unless' richops in 'and' context 2017-09-22 14:38:27 +03:00
ci ci: Add lmdb-devel to CI Dockerfile 2017-08-17 12:50:12 +03:00
db3 Remove BDB RPC "support" 2009-09-21 11:00:50 +03:00
doc Implement --load cli switch to allow loading individual macro files 2017-09-22 14:02:27 +03:00
fileattrs Fix classification of ELF binaries with both setuid/setgid set 2017-08-31 12:01:24 +02:00
lib Restrict following symlinks to directories by ownership (CVE-2017-7500) 2017-09-28 08:36:22 +03:00
luaext Cosmetics: if, while and switch are followed by a space 2017-02-27 17:41:37 +02:00
misc Revert "Only build bundled fts if system has a bad version that doesn't handle LFS" 2017-08-10 20:15:02 +03:00
plugins fix memleak in systemd_inhibit plugin 2017-04-27 11:36:12 +03:00
po Update translations from Transifxed for a change (yeah its been a while...) 2017-08-10 10:45:42 +03:00
python Use pkg-config for figuring python cflags and libs 2017-09-05 12:00:30 +03:00
rpmio Remove an outdated todo for %trace 2017-09-26 13:14:48 +03:00
scripts metainfo.prov: scan /usr/share/metainfo and /usr/share/appdata for both types 2017-08-25 12:51:28 +02:00
sign replaceSigDigests is only used with IMAEVM. 2017-07-21 15:11:04 +02:00
tests Restrict following symlinks to directories by ownership (CVE-2017-7500) 2017-09-28 08:36:22 +03:00
tools debugedit: skip_dir_prefix should check for dir separator. 2017-06-30 16:04:23 +03:00
.gitignore Add a mailmap file for fixing author anomalies + mapping mail addresses 2016-10-18 15:01:35 +03:00
.mailmap Add a mailmap file for fixing author anomalies + mapping mail addresses 2016-10-18 15:01:35 +03:00
CHANGES Spelling fixes 2017-06-27 14:42:21 +02:00
COPYING Update contact address in COPYING (RhBug:742362) 2012-11-05 15:09:58 +02:00
CREDITS Bring CREDITS to this millenium 2016-10-18 15:01:35 +03:00
INSTALL Fix fakechroot wrong URL. 2017-07-04 12:08:30 +02:00
Makefile.am Create $(prefix)/rpm/macros.d directory on make install 2017-09-22 13:09:30 +03:00
Makefile.maint Fix "make dist" work out of the box again 2016-11-04 11:02:50 +02:00
README Update community link in README 2017-04-05 11:57:00 +03:00
autogen.sh Just use autoreconf in autogen.sh (ticket #109) 2009-11-26 09:46:48 +02:00
cliutils.c Stop NSPR from messing with our signals 2017-05-10 13:59:58 +03:00
cliutils.h add short summaries to headers that miss one 2016-01-28 14:42:47 +01:00
configure.ac Less naive version of sync-after-transaction (RhBug:1461765) 2017-09-07 12:01:39 +03:00
debug.h Eliminate debug junk from the API 2007-12-04 11:25:46 +02:00
installplatform RISCV 64-bit (riscv64) support. 2016-08-22 21:16:48 +01:00
macros.debug Add option to have unique debug file names across version/release/arch. 2016-07-29 18:29:10 +02:00
macros.in Add configuration option for controlling file IO flushing behavior 2017-09-20 17:06:37 +03:00
mkinstalldirs update mkinstalldirs to latest version (2009) 2017-07-27 13:59:01 +02:00
platform.in Add a %_rundir macro to the platform files. 2014-05-07 09:12:46 +03:00
preinstall.am Rip rpm 4.4.x API compatibility 2016-10-24 12:38:21 +03:00
rpm.am Bump sonames in preparation of 4.14.x branch 2017-08-10 10:34:01 +03:00
rpm.pc.in Add LMDB backend to RPM 2017-08-17 12:49:06 +03:00
rpm2archive.c rpm2cpio and rpm2archive: don't write archive data to a terminal. 2017-01-26 14:53:01 +01:00
rpm2cpio.c rpm2cpio and rpm2archive: don't write archive data to a terminal. 2017-01-26 14:53:01 +01:00
rpmbuild.c Allow running rpmbuild with debug verbosity 2017-08-23 11:50:11 +03:00
rpmdb.c Remove bunch of redundant environ declarations 2017-06-09 11:37:03 +03:00
rpmkeys.c Remove bunch of redundant environ declarations 2017-06-09 11:37:03 +03:00
rpmpopt.in Make coloring of output configurable 2017-08-09 11:19:05 +02:00
rpmqv.c Change output text to 'Exit status' 2017-07-20 15:10:30 +02:00
rpmrc.in Fix the armv5tl arch compatibility list 2017-05-11 13:29:10 +02:00
rpmsign.c Fix a number of problems in get_fskpass() 2017-06-09 12:57:00 +03:00
rpmspec.c Add --target as global option 2017-04-04 10:32:09 +03:00
system.h Actually test for __progname too 2017-03-24 14:20:48 +02:00

README

This is RPM, the RPM Package Manager.

The latest releases are always available at:

	http://rpm.org/releases/

Additional RPM documentation (papers, slides, HOWTOs) can also be
found at the same site: http://rpm.org.

http://rpm.org/community all rpm releated mailing lists.

RPM was originally written by:

    Erik Troan <ewt@redhat.com>
    Marc Ewing <marc@redhat.com>

See the CREDITS file for a list of folks who have helped us out
tremendously.  RPM is Copyright (c) 1998 by Red Hat Software, Inc.,
and may be distributed under the terms of the GPL and LGPL (see  the
file COPYING for details).