Skip to content

Commit 9daa874

Browse files
aviraxp5ec1cff
authored andcommitted
Avoid unnecessarily overriding capabilities (tiann#2381)
Previously all capabilities were overridden with 0xffffffffffffffff, which is not what normal processes have. This causes PR_CAPBSET_DROP prctl fail because it is dropping invalid caps. Fix it. This fixes https://gitlab.com/kalilinux/nethunter/apps/kali-nethunter-app/-/issues/378. Co-Authored-By: 5ec1cff <[email protected]> Co-authored-by: 5ec1cff <[email protected]>
1 parent 800b5d3 commit 9daa874

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

kernel/allowlist.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include <linux/capability.h>
12
#include <linux/compiler.h>
23
#include <linux/fs.h>
34
#include <linux/gfp.h>
@@ -64,12 +65,14 @@ static void remove_uid_from_arr(uid_t uid)
6465

6566
static void init_default_profiles()
6667
{
68+
kernel_cap_t full_cap = CAP_FULL_SET;
69+
6770
default_root_profile.uid = 0;
6871
default_root_profile.gid = 0;
6972
default_root_profile.groups_count = 1;
7073
default_root_profile.groups[0] = 0;
71-
memset(&default_root_profile.capabilities, 0xff,
72-
sizeof(default_root_profile.capabilities));
74+
memcpy(&default_root_profile.capabilities.effective, &full_cap,
75+
sizeof(default_root_profile.capabilities.effective));
7376
default_root_profile.namespaces = 0;
7477
strcpy(default_root_profile.selinux_domain, KSU_DEFAULT_SELINUX_DOMAIN);
7578

kernel/core_hook.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,10 @@ void escape_to_root(void)
166166
profile->capabilities.effective | CAP_DAC_READ_SEARCH;
167167
memcpy(&cred->cap_effective, &cap_for_ksud,
168168
sizeof(cred->cap_effective));
169-
memcpy(&cred->cap_inheritable, &profile->capabilities.effective,
170-
sizeof(cred->cap_inheritable));
171169
memcpy(&cred->cap_permitted, &profile->capabilities.effective,
172170
sizeof(cred->cap_permitted));
173171
memcpy(&cred->cap_bset, &profile->capabilities.effective,
174172
sizeof(cred->cap_bset));
175-
memcpy(&cred->cap_ambient, &profile->capabilities.effective,
176-
sizeof(cred->cap_ambient));
177173

178174
setup_groups(profile, cred);
179175

0 commit comments

Comments
 (0)