mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
Avoid simple memory dumps via ptrace
This avoids needing to setgid gpg-agent. It probably doesn't defend against all possible attacks, but it defends against one specific (and easy) one. If there are other protections we should do them too. This will make it slightly harder to debug the agent because the normal user won't be able to attach gdb to it directly while it runs. The remaining options for debugging are: * launch the agent from gdb directly * connect gdb to a running agent as the superuser Upstream bug: https://dev.gnupg.org/T1211 Gbp-Pq: Topic block-ptrace-on-secret-daemons Gbp-Pq: Name Avoid-simple-memory-dumps-via-ptrace.patch
This commit is contained in:
parent
591523ec94
commit
337ae2374e
@ -48,6 +48,9 @@
|
||||
# include <signal.h>
|
||||
#endif
|
||||
#include <npth.h>
|
||||
#ifdef HAVE_PRCTL
|
||||
# include <sys/prctl.h>
|
||||
#endif
|
||||
|
||||
#define GNUPG_COMMON_NEED_AFLOCAL
|
||||
#include "agent.h"
|
||||
@ -1013,6 +1016,11 @@ main (int argc, char **argv )
|
||||
|
||||
early_system_init ();
|
||||
|
||||
#if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE)
|
||||
/* Disable ptrace on Linux without sgid bit */
|
||||
prctl(PR_SET_DUMPABLE, 0);
|
||||
#endif
|
||||
|
||||
/* Before we do anything else we save the list of currently open
|
||||
file descriptors and the signal mask. This info is required to
|
||||
do the exec call properly. We don't need it on Windows. */
|
||||
|
@ -1395,7 +1395,7 @@ AC_CHECK_FUNCS([atexit canonicalize_file_name clock_gettime ctermid \
|
||||
ftruncate funlockfile getaddrinfo getenv getpagesize \
|
||||
getpwnam getpwuid getrlimit getrusage gettimeofday \
|
||||
gmtime_r inet_ntop inet_pton isascii lstat memicmp \
|
||||
memmove memrchr mmap nl_langinfo pipe raise rand \
|
||||
memmove memrchr mmap nl_langinfo pipe prctl raise rand \
|
||||
setenv setlocale setrlimit sigaction sigprocmask \
|
||||
stat stpcpy strcasecmp strerror strftime stricmp \
|
||||
strlwr strncasecmp strpbrk strsep strtol strtoul \
|
||||
|
@ -36,6 +36,9 @@
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <npth.h>
|
||||
#ifdef HAVE_PRCTL
|
||||
# include <sys/prctl.h>
|
||||
#endif
|
||||
|
||||
#define GNUPG_COMMON_NEED_AFLOCAL
|
||||
#include "scdaemon.h"
|
||||
@ -443,6 +446,12 @@ main (int argc, char **argv )
|
||||
npth_t pipecon_handler;
|
||||
|
||||
early_system_init ();
|
||||
|
||||
#if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE)
|
||||
/* Disable ptrace on Linux without sgid bit */
|
||||
prctl(PR_SET_DUMPABLE, 0);
|
||||
#endif
|
||||
|
||||
set_strusage (my_strusage);
|
||||
gcry_control (GCRYCTL_SUSPEND_SECMEM_WARN);
|
||||
/* Please note that we may running SUID(ROOT), so be very CAREFUL
|
||||
|
Loading…
x
Reference in New Issue
Block a user