166 lines
5.8 KiB
Diff
166 lines
5.8 KiB
Diff
From 71409081fc4c642412d7b7fb1812bee12b6af6b9 Mon Sep 17 00:00:00 2001
|
|
From: zcfsite <zhchf2010@126.com>
|
|
Date: Mon, 27 Nov 2023 22:27:06 +0800
|
|
Subject: rm kmodule_list in mc and fix param ringbuf desc
|
|
|
|
---
|
|
kerneldriver/cases/Makefile | 2 +-
|
|
.../secDetector_mc_kmodule_list.c | 55 -------------------
|
|
.../secDetector_mc_kmodule_list.h | 12 ----
|
|
.../secDetector_memory_corruption.c | 16 ------
|
|
kerneldriver/core/secDetector_main.c | 2 +-
|
|
5 files changed, 2 insertions(+), 85 deletions(-)
|
|
delete mode 100644 kerneldriver/cases/memory_corruption/secDetector_mc_kmodule_list.c
|
|
delete mode 100644 kerneldriver/cases/memory_corruption/secDetector_mc_kmodule_list.h
|
|
|
|
diff --git a/kerneldriver/cases/Makefile b/kerneldriver/cases/Makefile
|
|
index 0af72ba..5a94e50 100644
|
|
--- a/kerneldriver/cases/Makefile
|
|
+++ b/kerneldriver/cases/Makefile
|
|
@@ -8,7 +8,7 @@ obj-m += secDetector_kmodule_baseline.o
|
|
# obj-m += secDetector_lsm_example.o
|
|
obj-m += secDetector_program_action.o
|
|
|
|
-secDetector_memory_corruption-objs := memory_corruption/secDetector_memory_corruption.o memory_corruption/secDetector_mc_kmodule_list.o
|
|
+secDetector_memory_corruption-objs := memory_corruption/secDetector_memory_corruption.o
|
|
#secDetector_task_block-objs := task_block/secDetector_task_block.o
|
|
#secDetector_file_block-objs := file_block/secDetector_file_block.o
|
|
secDetector_kmodule_baseline-objs := kmodule_baseline/secDetector_kmodule_baseline.o kmodule_baseline/secDetector_mc_kmodule_baseline.o
|
|
diff --git a/kerneldriver/cases/memory_corruption/secDetector_mc_kmodule_list.c b/kerneldriver/cases/memory_corruption/secDetector_mc_kmodule_list.c
|
|
deleted file mode 100644
|
|
index 283590b..0000000
|
|
--- a/kerneldriver/cases/memory_corruption/secDetector_mc_kmodule_list.c
|
|
+++ /dev/null
|
|
@@ -1,55 +0,0 @@
|
|
-/*
|
|
- * SPDX-License-Identifier: GPL-2.0
|
|
- *
|
|
- * Author: yieux
|
|
- * create: 2023-09-28
|
|
- * Description: the main implement of the kmodule list corruption.
|
|
- */
|
|
-#include <linux/module.h>
|
|
-#include <linux/list.h>
|
|
-#include <linux/spinlock.h>
|
|
-#include "secDetector_mc_kmodule_list.h"
|
|
-#include "secDetector_response.h"
|
|
-#include <linux/slab.h>
|
|
-
|
|
-#define MODULE_LIST_MAXSIZE 0x10000
|
|
-#define MC_KMODULE_REPORT_WORD_LEN 55
|
|
-
|
|
-// 3 ways for get kernel module list.
|
|
-// struct module->list
|
|
-// struct module->mkobj->kobj->entry
|
|
-// struct module->mkobj->kobj->kset
|
|
-void check_kmodule_list(void)
|
|
-{
|
|
- struct module_kobject *mobj = NULL;
|
|
- struct kobject *k = NULL;
|
|
- struct module *m = NULL;
|
|
- struct kset *module_kset = __this_module.mkobj.kobj.kset;
|
|
- response_data_t log;
|
|
-
|
|
- if (module_kset == NULL)
|
|
- return;
|
|
-
|
|
- spin_lock(&module_kset->list_lock);
|
|
- list_for_each_entry(k, &module_kset->list, entry) {
|
|
- if (k->name == NULL)
|
|
- continue;
|
|
- mobj = container_of(k, struct module_kobject, kobj);
|
|
- if (mobj == NULL || mobj->mod == NULL || (unsigned long)mobj->mod->name < MODULE_LIST_MAXSIZE)
|
|
- continue;
|
|
-
|
|
- mutex_lock(&module_mutex);
|
|
- m = find_module(k->name);
|
|
- if (m == NULL) {
|
|
- pr_err("[secDetector] mc kmoudle list find! module_name=%s.\n", k->name);
|
|
- log.report_data.len = MC_KMODULE_REPORT_WORD_LEN + strlen(k->name);
|
|
- log.report_data.text = kmalloc(log.report_data.len, GFP_KERNEL);
|
|
- sprintf(log.report_data.text, "[secDetector] mc kmoudle list find! module_name=%s.\n", k->name);
|
|
- secDetector_report(&log);
|
|
- kfree(log.report_data.text);
|
|
- }
|
|
- mutex_unlock(&module_mutex);
|
|
- }
|
|
- spin_unlock(&module_kset->list_lock);
|
|
- return;
|
|
-}
|
|
\ No newline at end of file
|
|
diff --git a/kerneldriver/cases/memory_corruption/secDetector_mc_kmodule_list.h b/kerneldriver/cases/memory_corruption/secDetector_mc_kmodule_list.h
|
|
deleted file mode 100644
|
|
index 737ca47..0000000
|
|
--- a/kerneldriver/cases/memory_corruption/secDetector_mc_kmodule_list.h
|
|
+++ /dev/null
|
|
@@ -1,12 +0,0 @@
|
|
-/*
|
|
- * SPDX-License-Identifier: GPL-2.0
|
|
- *
|
|
- * Author: yieux
|
|
- * create: 2023-09-28
|
|
- * Description: the kmodule list corruption head file.
|
|
- */
|
|
- #ifndef SECDETECTOR_MC_KMODULE_LIST_H
|
|
- #define SECDETECTOR_MC_KMODULE_LIST_H
|
|
-
|
|
-void check_kmodule_list(void);
|
|
- #endif
|
|
\ No newline at end of file
|
|
diff --git a/kerneldriver/cases/memory_corruption/secDetector_memory_corruption.c b/kerneldriver/cases/memory_corruption/secDetector_memory_corruption.c
|
|
index 5b487ac..f4a1c9f 100644
|
|
--- a/kerneldriver/cases/memory_corruption/secDetector_memory_corruption.c
|
|
+++ b/kerneldriver/cases/memory_corruption/secDetector_memory_corruption.c
|
|
@@ -10,35 +10,19 @@
|
|
#include <linux/seq_file.h>
|
|
#include "secDetector_manager.h"
|
|
#include <secDetector_module_type.h>
|
|
-#include "secDetector_mc_kmodule_list.h"
|
|
|
|
|
|
#define TIME_INTERVAL 10
|
|
DEFINE_MUTEX(case_mc_mutex);
|
|
#define KERNELKEYDATATAMPER 0x00008000
|
|
|
|
-static void check_all_watching_memory(void)
|
|
-{
|
|
- mutex_lock(&case_mc_mutex);
|
|
- check_kmodule_list();
|
|
- mutex_unlock(&case_mc_mutex);
|
|
-}
|
|
-
|
|
static struct secDetector_collect collect_array[] = {
|
|
{
|
|
.collect_type = COLLECT_GLOBAL_FUNCTION_SWITCH,
|
|
},
|
|
};
|
|
|
|
-
|
|
static struct secDetector_workflow workflow_array[] = {
|
|
- {
|
|
- .workflow_type = WORKFLOW_CUSTOMIZATION,
|
|
- .workflow_func.func = check_all_watching_memory,
|
|
- .hook_type = SECDETECTOR_TIMER,
|
|
- .interval = TIME_INTERVAL,
|
|
- .enabled = ATOMIC_INIT(true)
|
|
- },
|
|
{
|
|
.workflow_type = WORKFLOW_PRESET,
|
|
.hook_type = SECDETECTOR_TIMER,
|
|
diff --git a/kerneldriver/core/secDetector_main.c b/kerneldriver/core/secDetector_main.c
|
|
index 878d4a3..3931229 100644
|
|
--- a/kerneldriver/core/secDetector_main.c
|
|
+++ b/kerneldriver/core/secDetector_main.c
|
|
@@ -22,7 +22,7 @@ MODULE_PARM_DESC(log_size, "log size");
|
|
static unsigned int ringbuf_size = MIN_RINGBUF_SIZE; /* unit is Mb */
|
|
static unsigned int ringbuf_size_bytes; /* unit is bytes */
|
|
module_param(ringbuf_size, uint, 0400);
|
|
-MODULE_PARM_DESC(log_size, "ringbuffer size");
|
|
+MODULE_PARM_DESC(ringbuf_size, "ringbuffer size");
|
|
|
|
static bool ringbuf_size_check(void)
|
|
{
|
|
--
|
|
2.33.0
|
|
|