From fe032986895a9705e1abe3daa2de92477479a178 Mon Sep 17 00:00:00 2001 From: Andriy Petrov Date: Thu, 25 Apr 2024 22:05:17 +0200 Subject: [PATCH] credentials link --- README.md | 2 +- sumo.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 97cb70d..e7f8d5b 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ sudo insmod sumo.ko # install # How it works -In it's `init()` function, *sumo* kernel module creates `/proc/sumo` file and waits for PID to be written. Afterwards, it fetches instance of a `task_struct` [kernel structure](https://medium.com/@boutnaru/linux-kernel-task-struct-829f51d97275) associated with the given PID and modifies its values accordingly. +In it's `init()` function, *sumo* kernel module creates `/proc/sumo` file and waits for PID to be written. Afterwards, it fetches instance of a `task_struct` [kernel structure](https://medium.com/@boutnaru/linux-kernel-task-struct-829f51d97275) associated with the given PID and modifies its values accordingly. The main point of interest is the data stored in [credentials structure](https://docs.kernel.org/security/credentials.html). ```text sumo __ SUdo diff --git a/sumo.c b/sumo.c index 884f752..212f8b1 100644 --- a/sumo.c +++ b/sumo.c @@ -4,10 +4,10 @@ #include #include -#include -#include -#include -#include +// #include +// #include +// #include +// #include #include @@ -40,17 +40,17 @@ MODULE_DESCRIPTION("Grant root access right to the process by PID"); /////////////////////////////////////////////////////////////////////////////// void set_task_uids_gids_to_zero(struct task_struct *task) -{ + { struct cred *_cred; //struct real_cred *_real_cred; // Safely access cred and real_cred using rcu_dereference _cred = (struct cred *)rcu_dereference(task->cred); //_real_cred = (struct cred *)rcu_dereference(task->real_cred); - if (_cred == NULL) { - pr_err(MTAG "Task creds are null %d\n", task->pid); - return; - } + if (_cred == NULL) { + pr_err(MTAG "Task creds are null %d\n", task->pid); + return; + } // Update UIDs to zero _cred->uid.val = 0;