summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>1996-05-30 09:10:46 +0000
committerderaadt <deraadt@openbsd.org>1996-05-30 09:10:46 +0000
commita0277a945957d55e25e204c80ae16571ae1a6026 (patch)
treedce470b9cf76f0ef1e15f7d02651811b45c46313
parentoptimize something like "finger @@@@@@@@@@@@@cvs@@@@@@cvs@@@@@@cvs' to hit (diff)
downloadwireguard-openbsd-a0277a945957d55e25e204c80ae16571ae1a6026.tar.xz
wireguard-openbsd-a0277a945957d55e25e204c80ae16571ae1a6026.zip
revoke privs before opening kvm if user has specified mem/kernel paths
-rw-r--r--sbin/ccdconfig/ccdconfig.c9
-rw-r--r--usr.bin/ipcs/ipcs.c6
-rw-r--r--usr.bin/w/w.c7
-rw-r--r--usr.sbin/slstats/slstats.c11
-rw-r--r--usr.sbin/trpt/trpt.c9
-rw-r--r--usr.sbin/trsp/trsp.c8
6 files changed, 45 insertions, 5 deletions
diff --git a/sbin/ccdconfig/ccdconfig.c b/sbin/ccdconfig/ccdconfig.c
index 1fbc6b79150..a1d4eca88fa 100644
--- a/sbin/ccdconfig/ccdconfig.c
+++ b/sbin/ccdconfig/ccdconfig.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ccdconfig.c,v 1.4 1996/05/22 11:34:48 deraadt Exp $ */
+/* $OpenBSD: ccdconfig.c,v 1.5 1996/05/30 09:11:20 deraadt Exp $ */
/* $NetBSD: ccdconfig.c,v 1.6 1996/05/16 07:11:18 thorpej Exp $ */
/*-
@@ -164,6 +164,13 @@ main(argc, argv)
if (options > 1)
usage();
+ /*
+ * Discard setgid privileges if not the running kernel so that bad
+ * guys can't print interesting stuff from kernel memory.
+ */
+ if (core != NULL || kernel != NULL)
+ setgid(getgid());
+
switch (action) {
case CCD_CONFIG:
case CCD_UNCONFIG:
diff --git a/usr.bin/ipcs/ipcs.c b/usr.bin/ipcs/ipcs.c
index 38855e85e60..081eb086cd4 100644
--- a/usr.bin/ipcs/ipcs.c
+++ b/usr.bin/ipcs/ipcs.c
@@ -181,6 +181,12 @@ main(argc, argv)
default:
usage();
}
+ /*
+ * Discard setgid privileges if not the running kernel so that bad
+ * guys can't print interesting stuff from kernel memory.
+ */
+ if (namelist != NULL || core != NULL)
+ setgid(getgid());
if ((kd = kvm_open(namelist, core, NULL, O_RDONLY, "ipcs")) == NULL)
exit(1);
diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c
index 1eee27dde0b..f7deb59f1f7 100644
--- a/usr.bin/w/w.c
+++ b/usr.bin/w/w.c
@@ -166,6 +166,13 @@ main(argc, argv)
argc -= optind;
argv += optind;
+ /*
+ * Discard setgid privileges if not the running kernel so that bad
+ * guys can't print interesting stuff from kernel memory.
+ */
+ if (nlistf != NULL || memf != NULL)
+ setgid(getgid());
+
if ((kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, errbuf)) == NULL)
errx(1, "%s", errbuf);
diff --git a/usr.sbin/slstats/slstats.c b/usr.sbin/slstats/slstats.c
index fbd75c57254..d8efda4ffb3 100644
--- a/usr.sbin/slstats/slstats.c
+++ b/usr.sbin/slstats/slstats.c
@@ -23,8 +23,8 @@
#ifndef lint
/*static char rcsid[] =
- "@(#) $Header: /home/cvs/src/usr.sbin/slstats/Attic/slstats.c,v 1.1.1.1 1995/10/18 08:48:21 deraadt Exp $ (LBL)";*/
-static char rcsid[] = "$Id: slstats.c,v 1.1.1.1 1995/10/18 08:48:21 deraadt Exp $";
+ "@(#) $Header: /home/cvs/src/usr.sbin/slstats/Attic/slstats.c,v 1.2 1996/05/30 09:11:17 deraadt Exp $ (LBL)";*/
+static char rcsid[] = "$Id: slstats.c,v 1.2 1996/05/30 09:11:17 deraadt Exp $";
#endif
#include <stdio.h>
@@ -104,6 +104,13 @@ main(argc, argv)
kflag++;
}
}
+ /*
+ * Discard setgid privileges if not the running kernel so that bad
+ * guys can't print interesting stuff from kernel memory.
+ */
+ if (system != _PATH_UNIX || kmemf != _PATH_KMEM)
+ setgid(getgid());
+
if (kopen(system, kmemf, "slstats") < 0)
exit(1);
if (knlist(system, nl, "slstats") < 0)
diff --git a/usr.sbin/trpt/trpt.c b/usr.sbin/trpt/trpt.c
index e9f62d8e8fc..667f1aa4479 100644
--- a/usr.sbin/trpt/trpt.c
+++ b/usr.sbin/trpt/trpt.c
@@ -39,7 +39,7 @@ char copyright[] =
#ifndef lint
/*static char sccsid[] = "from: @(#)trpt.c 5.14 (Berkeley) 7/1/91";*/
-static char rcsid[] = "$Id: trpt.c,v 1.1.1.1 1995/10/18 08:48:29 deraadt Exp $";
+static char rcsid[] = "$Id: trpt.c,v 1.2 1996/05/30 09:11:11 deraadt Exp $";
#endif /* not lint */
#include <sys/param.h>
@@ -163,6 +163,13 @@ main(argc, argv)
else
system = _PATH_UNIX;
+ /*
+ * Discard setgid priviledges if not the running kernel so that bad
+ * guys can't print interesting stuff from kernel memory.
+ */
+ if (core != _PATH_KMEM || system != _PATH_UNIX)
+ setgid(getgid());
+
if (nlist(system, nl) < 0 || !nl[0].n_value) {
fprintf(stderr, "trpt: %s: no namelist\n", system);
exit(1);
diff --git a/usr.sbin/trsp/trsp.c b/usr.sbin/trsp/trsp.c
index 5212ee0eeaf..43995c3532c 100644
--- a/usr.sbin/trsp/trsp.c
+++ b/usr.sbin/trsp/trsp.c
@@ -39,7 +39,7 @@ char copyright[] =
#ifndef lint
/*static char sccsid[] = "from: @(#)trsp.c 6.8 (Berkeley) 3/2/91";*/
-static char rcsid[] = "$Id: trsp.c,v 1.1.1.1 1995/10/18 08:48:30 deraadt Exp $";
+static char rcsid[] = "$Id: trsp.c,v 1.2 1996/05/30 09:10:46 deraadt Exp $";
#endif /* not lint */
#include <sys/cdefs.h>
@@ -145,6 +145,12 @@ again:
argc--, argv++;
mask++;
}
+ /*
+ * Discard setgid privileges if not the running kernel so that bad
+ * guys can't print interesting stuff from kernel memory.
+ */
+ if (system != _PATH_UNIX || core != _PATH_KMEM)
+ setgid(getgid());
(void) nlist(system, nl);
if (nl[0].n_value == 0) {
fprintf(stderr, "trsp: %s: no namelist\n", system);