Skip to content

Commit e5f4c4d

Browse files
committed
feat: extend string data filtering for other events
1 parent a75cef7 commit e5f4c4d

2 files changed

Lines changed: 78 additions & 0 deletions

File tree

pkg/ebpf/c/common/context.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,7 @@ statfunc bool reset_event(event_data_t *event, u32 event_id)
259259
event->config.field_types = event_config->field_types;
260260
event->config.submit_for_policies = event_config->submit_for_policies;
261261
event->context.matched_policies = event_config->submit_for_policies;
262+
event->config.data_filter = event_config->data_filter;
262263

263264
return true;
264265
}

pkg/ebpf/c/tracee.bpf.c

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,9 @@ int syscall__execve_enter(void *ctx)
387387
&p.event->args_buf, (const char *const *) sys->args.args[2] /*envp*/, 2);
388388
}
389389

390+
if (!evaluate_data_filters(&p, 0))
391+
return 0;
392+
390393
return events_perf_submit(&p, 0);
391394
}
392395

@@ -417,6 +420,9 @@ int syscall__execve_exit(void *ctx)
417420
&p.event->args_buf, (const char *const *) sys->args.args[2] /*envp*/, 2);
418421
}
419422

423+
if (!evaluate_data_filters(&p, 0))
424+
return 0;
425+
420426
return events_perf_submit(&p, sys->ret);
421427
}
422428

@@ -447,6 +453,9 @@ int syscall__execveat_enter(void *ctx)
447453
}
448454
save_to_submit_buf(&p.event->args_buf, (void *) &sys->args.args[4] /*flags*/, sizeof(int), 4);
449455

456+
if (!evaluate_data_filters(&p, 1))
457+
return 0;
458+
450459
return events_perf_submit(&p, 0);
451460
}
452461

@@ -479,6 +488,9 @@ int syscall__execveat_exit(void *ctx)
479488
}
480489
save_to_submit_buf(&p.event->args_buf, (void *) &sys->args.args[4] /*flags*/, sizeof(int), 4);
481490

491+
if (!evaluate_data_filters(&p, 1))
492+
return 0;
493+
482494
return events_perf_submit(&p, sys->ret);
483495
}
484496

@@ -1711,6 +1723,9 @@ int BPF_KPROBE(trace_call_usermodehelper)
17111723
save_str_arr_to_buf(&p.event->args_buf, (const char *const *) envp, 2);
17121724
save_to_submit_buf(&p.event->args_buf, (void *) &wait, sizeof(int), 3);
17131725

1726+
if (!evaluate_data_filters(&p, 0))
1727+
return 0;
1728+
17141729
return events_perf_submit(&p, 0);
17151730
}
17161731

@@ -2269,6 +2284,9 @@ int BPF_KPROBE(trace_security_bprm_check)
22692284
if (p.config->options & OPT_EXEC_ENV)
22702285
save_str_arr_to_buf(&p.event->args_buf, envp, 4);
22712286

2287+
if (!evaluate_data_filters(&p, 0))
2288+
return 0;
2289+
22722290
return events_perf_submit(&p, 0);
22732291
}
22742292

@@ -2344,6 +2362,9 @@ int BPF_KPROBE(trace_security_sb_mount)
23442362
save_str_to_buf(&p.event->args_buf, (void *) type, 2);
23452363
save_to_submit_buf(&p.event->args_buf, &flags, sizeof(unsigned long), 3);
23462364

2365+
if (!evaluate_data_filters(&p, 1))
2366+
return 0;
2367+
23472368
return events_perf_submit(&p, 0);
23482369
}
23492370

@@ -2378,6 +2399,9 @@ int BPF_KPROBE(trace_security_inode_unlink)
23782399
save_to_submit_buf(&p.event->args_buf, &unlinked_file_id.device, sizeof(dev_t), 2);
23792400
save_to_submit_buf(&p.event->args_buf, &unlinked_file_id.ctime, sizeof(u64), 3);
23802401

2402+
if (!evaluate_data_filters(&p, 0))
2403+
return 0;
2404+
23812405
return events_perf_submit(&p, 0);
23822406
}
23832407

@@ -2577,6 +2601,9 @@ int BPF_KPROBE(trace_security_inode_symlink)
25772601
save_str_to_buf(&p.event->args_buf, dentry_path, 0);
25782602
save_str_to_buf(&p.event->args_buf, (void *) old_name, 1);
25792603

2604+
if (!evaluate_data_filters(&p, 0))
2605+
return 0;
2606+
25802607
return events_perf_submit(&p, 0);
25812608
}
25822609

@@ -3607,6 +3634,9 @@ int BPF_KPROBE(trace_ret_do_mmap)
36073634
save_to_submit_buf(&p.event->args_buf, &prot, sizeof(unsigned long), 8);
36083635
save_to_submit_buf(&p.event->args_buf, &mmap_flags, sizeof(unsigned long), 9);
36093636

3637+
if (!evaluate_data_filters(&p, 1))
3638+
return 0;
3639+
36103640
return events_perf_submit(&p, 0);
36113641
}
36123642

@@ -3640,6 +3670,9 @@ int BPF_KPROBE(trace_security_mmap_file)
36403670
save_to_submit_buf(&p.event->args_buf, &inode_nr, sizeof(unsigned long), 3);
36413671
save_to_submit_buf(&p.event->args_buf, &ctime, sizeof(u64), 4);
36423672

3673+
if (!evaluate_data_filters(&p, 0))
3674+
return 0;
3675+
36433676
events_perf_submit(&p, 0);
36443677
}
36453678

@@ -3708,6 +3741,9 @@ int BPF_KPROBE(trace_security_file_mprotect)
37083741
save_to_submit_buf(&p.event->args_buf, &pkey, sizeof(int), 6);
37093742
}
37103743

3744+
if (!evaluate_data_filters(&p, 0))
3745+
return 0;
3746+
37113747
events_perf_submit(&p, 0);
37123748
}
37133749

@@ -3950,6 +3986,9 @@ int BPF_KPROBE(trace_security_bpf_map)
39503986
// 2nd argument == map_name (const char *)
39513987
save_str_to_buf(&p.event->args_buf, (void *) __builtin_preserve_access_index(&map->name), 1);
39523988

3989+
if (!evaluate_data_filters(&p, 1))
3990+
return 0;
3991+
39533992
return events_perf_submit(&p, 0);
39543993
}
39553994

@@ -4005,6 +4044,9 @@ int BPF_KPROBE(trace_security_bpf_prog)
40054044
save_to_submit_buf(&p.event->args_buf, &prog_id, sizeof(u32), 3);
40064045
save_to_submit_buf(&p.event->args_buf, &is_load, sizeof(bool), 4);
40074046

4047+
if (!evaluate_data_filters(&p, 1))
4048+
return 0;
4049+
40084050
events_perf_submit(&p, 0);
40094051

40104052
return 0;
@@ -4146,6 +4188,9 @@ int BPF_KPROBE(trace_security_kernel_read_file)
41464188
save_to_submit_buf(&p.event->args_buf, &type_id, sizeof(int), 3);
41474189
save_to_submit_buf(&p.event->args_buf, &ctime, sizeof(u64), 4);
41484190

4191+
if (!evaluate_data_filters(&p, 0))
4192+
return 0;
4193+
41494194
return events_perf_submit(&p, 0);
41504195
}
41514196

@@ -4170,6 +4215,10 @@ int BPF_KPROBE(trace_security_kernel_post_read_file)
41704215
save_str_to_buf(&p.event->args_buf, file_path, 0);
41714216
save_to_submit_buf(&p.event->args_buf, &size, sizeof(loff_t), 1);
41724217
save_to_submit_buf(&p.event->args_buf, &type_id, sizeof(int), 2);
4218+
4219+
if (!evaluate_data_filters(&p, 0))
4220+
return 0;
4221+
41734222
events_perf_submit(&p, 0);
41744223
}
41754224

@@ -4218,6 +4267,9 @@ int BPF_KPROBE(trace_security_inode_mknod)
42184267
save_to_submit_buf(&p.event->args_buf, &mode, sizeof(unsigned short), 1);
42194268
save_to_submit_buf(&p.event->args_buf, &dev, sizeof(dev_t), 2);
42204269

4270+
if (!evaluate_data_filters(&p, 0))
4271+
return 0;
4272+
42214273
return events_perf_submit(&p, 0);
42224274
}
42234275

@@ -4460,6 +4512,9 @@ int tracepoint__module__module_load(struct bpf_raw_tracepoint_args *ctx)
44604512
save_str_to_buf(&p.event->args_buf, (void *) version, 1);
44614513
save_str_to_buf(&p.event->args_buf, (void *) srcversion, 2);
44624514

4515+
if (!evaluate_data_filters(&p, 3))
4516+
return 0;
4517+
44634518
return events_perf_submit(&p, 0);
44644519
}
44654520

@@ -4568,6 +4623,10 @@ int BPF_KPROBE(trace_load_elf_phdrs)
45684623
save_str_to_buf(&p.event->args_buf, (void *) elf_pathname, 0);
45694624
save_to_submit_buf(&p.event->args_buf, &proc_info->interpreter.id.device, sizeof(dev_t), 1);
45704625
save_to_submit_buf(&p.event->args_buf, &proc_info->interpreter.id.inode, sizeof(unsigned long), 2);
4626+
4627+
if (!evaluate_data_filters(&p, 0))
4628+
return 0;
4629+
45714630
events_perf_submit(&p, 0);
45724631

45734632
return 0;
@@ -4675,6 +4734,9 @@ int BPF_KPROBE(trace_security_inode_rename)
46754734
void *new_dentry_path = get_dentry_path_str(new_dentry);
46764735
save_str_to_buf(&p.event->args_buf, new_dentry_path, 1);
46774736

4737+
if (!evaluate_data_filters(&p, 0))
4738+
return 0;
4739+
46784740
return events_perf_submit(&p, 0);
46794741
}
46804742

@@ -4813,6 +4875,9 @@ statfunc int common_utimes(struct pt_regs *ctx)
48134875
save_to_submit_buf(&p.event->args_buf, &atime, sizeof(u64), 3);
48144876
save_to_submit_buf(&p.event->args_buf, &mtime, sizeof(u64), 4);
48154877

4878+
if (!evaluate_data_filters(&p, 0))
4879+
return 0;
4880+
48164881
return events_perf_submit(&p, 0);
48174882
}
48184883

@@ -4850,6 +4915,9 @@ int BPF_KPROBE(trace_do_truncate)
48504915
save_to_submit_buf(&p.event->args_buf, &dev, sizeof(dev_t), 2);
48514916
save_to_submit_buf(&p.event->args_buf, &length, sizeof(u64), 3);
48524917

4918+
if (!evaluate_data_filters(&p, 0))
4919+
return 0;
4920+
48534921
return events_perf_submit(&p, 0);
48544922
}
48554923

@@ -5040,6 +5108,9 @@ int BPF_KPROBE(trace_ret_inotify_find_inode)
50405108
save_to_submit_buf(&p.event->args_buf, &inode_nr, sizeof(unsigned long), 1);
50415109
save_to_submit_buf(&p.event->args_buf, &dev, sizeof(dev_t), 2);
50425110

5111+
if (!evaluate_data_filters(&p, 0))
5112+
return 0;
5113+
50435114
return events_perf_submit(&p, 0);
50445115
}
50455116

@@ -5194,6 +5265,9 @@ int BPF_KPROBE(trace_security_path_notify)
51945265
save_to_submit_buf(&p.event->args_buf, &mask, sizeof(u64), 3);
51955266
save_to_submit_buf(&p.event->args_buf, &obj_type, sizeof(unsigned int), 4);
51965267

5268+
if (!evaluate_data_filters(&p, 0))
5269+
return 0;
5270+
51975271
return events_perf_submit(&p, 0);
51985272
}
51995273

@@ -5297,6 +5371,9 @@ int BPF_KPROBE(trace_chmod_common)
52975371
save_str_to_buf(&p.event->args_buf, file_path, 0);
52985372
save_to_submit_buf(&p.event->args_buf, &mode, sizeof(umode_t), 1);
52995373

5374+
if (!evaluate_data_filters(&p, 0))
5375+
return 0;
5376+
53005377
return events_perf_submit(&p, 0);
53015378
}
53025379

0 commit comments

Comments
 (0)