mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Always enable pointer guard [BZ #18928]
Honoring the LD_POINTER_GUARD environment variable in AT_SECURE mode has security implications. This commit enables pointer guard unconditionally, and the environment variable is now ignored. [BZ #18928] * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Remove _dl_pointer_guard member. * elf/rtld.c (_rtld_global_ro): Remove _dl_pointer_guard initializer. (security_init): Always set up pointer guard. (process_envvars): Do not process LD_POINTER_GUARD.
This commit is contained in:
parent
0c25f5b5bb
commit
a014cecd82
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
||||
2015-10-15 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
[BZ #18928]
|
||||
* sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Remove
|
||||
_dl_pointer_guard member.
|
||||
* elf/rtld.c (_rtld_global_ro): Remove _dl_pointer_guard
|
||||
initializer.
|
||||
(security_init): Always set up pointer guard.
|
||||
(process_envvars): Do not process LD_POINTER_GUARD.
|
||||
|
||||
2015-10-14 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #19134]
|
||||
|
13
NEWS
13
NEWS
@ -16,11 +16,14 @@ Version 2.23
|
||||
18265, 18370, 18421, 18480, 18525, 18595, 18589, 18610, 18618, 18647,
|
||||
18661, 18674, 18675, 18681, 18724, 18757, 18778, 18781, 18787, 18789,
|
||||
18790, 18795, 18796, 18803, 18820, 18823, 18824, 18825, 18857, 18863,
|
||||
18870, 18872, 18873, 18875, 18887, 18921, 18951, 18952, 18956, 18961,
|
||||
18966, 18967, 18969, 18970, 18977, 18980, 18981, 18985, 19003, 19007,
|
||||
19012, 19016, 19018, 19032, 19046, 19049, 19050, 19059, 19071, 19074,
|
||||
19076, 19077, 19078, 19079, 19085, 19086, 19088, 19094, 19095, 19124,
|
||||
19125, 19129, 19134
|
||||
18870, 18872, 18873, 18875, 18887, 18921, 18928, 18951, 18952, 18956,
|
||||
18961, 18966, 18967, 18969, 18970, 18977, 18980, 18981, 18985, 19003,
|
||||
19007, 19012, 19016, 19018, 19032, 19046, 19049, 19050, 19059, 19071,
|
||||
19074, 19076, 19077, 19078, 19079, 19085, 19086, 19088, 19094, 19095,
|
||||
19124, 19125, 19129, 19134
|
||||
|
||||
* The LD_POINTER_GUARD environment variable can no longer be used to
|
||||
disable the pointer guard feature. It is always enabled.
|
||||
|
||||
* The obsolete header <regexp.h> has been removed. Programs that require
|
||||
this header must be updated to use <regex.h> instead.
|
||||
|
15
elf/rtld.c
15
elf/rtld.c
@ -162,7 +162,6 @@ struct rtld_global_ro _rtld_global_ro attribute_relro =
|
||||
._dl_hwcap_mask = HWCAP_IMPORTANT,
|
||||
._dl_lazy = 1,
|
||||
._dl_fpu_control = _FPU_DEFAULT,
|
||||
._dl_pointer_guard = 1,
|
||||
._dl_pagesize = EXEC_PAGESIZE,
|
||||
._dl_inhibit_cache = 0,
|
||||
|
||||
@ -709,15 +708,12 @@ security_init (void)
|
||||
#endif
|
||||
|
||||
/* Set up the pointer guard as well, if necessary. */
|
||||
if (GLRO(dl_pointer_guard))
|
||||
{
|
||||
uintptr_t pointer_chk_guard = _dl_setup_pointer_guard (_dl_random,
|
||||
stack_chk_guard);
|
||||
uintptr_t pointer_chk_guard
|
||||
= _dl_setup_pointer_guard (_dl_random, stack_chk_guard);
|
||||
#ifdef THREAD_SET_POINTER_GUARD
|
||||
THREAD_SET_POINTER_GUARD (pointer_chk_guard);
|
||||
THREAD_SET_POINTER_GUARD (pointer_chk_guard);
|
||||
#endif
|
||||
__pointer_chk_guard_local = pointer_chk_guard;
|
||||
}
|
||||
__pointer_chk_guard_local = pointer_chk_guard;
|
||||
|
||||
/* We do not need the _dl_random value anymore. The less
|
||||
information we leave behind, the better, so clear the
|
||||
@ -2471,9 +2467,6 @@ process_envvars (enum mode *modep)
|
||||
GLRO(dl_use_load_bias) = envline[14] == '1' ? -1 : 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (memcmp (envline, "POINTER_GUARD", 13) == 0)
|
||||
GLRO(dl_pointer_guard) = envline[14] != '0';
|
||||
break;
|
||||
|
||||
case 14:
|
||||
|
@ -592,9 +592,6 @@ struct rtld_global_ro
|
||||
/* List of auditing interfaces. */
|
||||
struct audit_ifaces *_dl_audit;
|
||||
unsigned int _dl_naudit;
|
||||
|
||||
/* 0 if internal pointer values should not be guarded, 1 if they should. */
|
||||
EXTERN int _dl_pointer_guard;
|
||||
};
|
||||
# define __rtld_global_attribute__
|
||||
# if IS_IN (rtld)
|
||||
|
Loading…
Reference in New Issue
Block a user