From 30fee07a897fe0bb220b3c2ffb36737dd89563af Mon Sep 17 00:00:00 2001 From: Patrick Pacher Date: Tue, 19 Dec 2023 10:26:10 +0100 Subject: [PATCH 1/3] Add utility for getting processes and process group leaders --- .../interception/ebpf/bandwidth/bpf_bpfeb.o | Bin 37096 -> 43560 bytes .../interception/ebpf/bandwidth/bpf_bpfel.o | Bin 37096 -> 43560 bytes .../ebpf/connection_listener/bpf_bpfeb.o | Bin 36560 -> 43096 bytes .../ebpf/connection_listener/bpf_bpfel.o | Bin 36560 -> 43096 bytes firewall/interception/ebpf/exec/bpf_bpfeb.go | 119 +++++++++ firewall/interception/ebpf/exec/bpf_bpfel.go | 119 +++++++++ firewall/interception/ebpf/exec/exec.go | 246 ++++++++++++++++++ firewall/interception/ebpf/programs/exec.c | 116 +++++++++ process/api.go | 64 +++++ process/database.go | 35 +++ process/process.go | 4 + process/process_default.go | 13 + process/process_linux.go | 80 ++++++ 13 files changed, 796 insertions(+) create mode 100644 firewall/interception/ebpf/exec/bpf_bpfeb.go create mode 100644 firewall/interception/ebpf/exec/bpf_bpfel.go create mode 100644 firewall/interception/ebpf/exec/exec.go create mode 100644 firewall/interception/ebpf/programs/exec.c diff --git a/firewall/interception/ebpf/bandwidth/bpf_bpfeb.o b/firewall/interception/ebpf/bandwidth/bpf_bpfeb.o index ad9376c9ae31ba96aedc01f0b4da71dbdc8b8161..2b012f737a7c7c982a3e5c45fd03e9dbf51fb0f6 100644 GIT binary patch literal 43560 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 literal 37096 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 literal 36560 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 DmBuAr diff --git a/firewall/interception/ebpf/connection_listener/bpf_bpfel.o b/firewall/interception/ebpf/connection_listener/bpf_bpfel.o index 5241f58ebd540dab34c823871c8d4fafd3b05c6e..54ba6347ee5c42c979a26df9c64f84a1f91cb0be 100644 GIT binary patch literal 43096 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 J=d0h!{XYdp8#Dj_ literal 36560 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 arglen { + argc = arglen + } + for i := 0; i < argc; i++ { + str := unix.ByteSliceToString(rawEvent.Argv[i][:]) + if strings.TrimSpace(str) != "" { + ev.Argv = append(ev.Argv, str) + } + } + + return ev, nil +} + +// Close gracefully closes and frees all resources associated with the eBPF +// tracepoints, maps and other resources. Any blocked `Read()` operations will +// return an error that wraps `io.EOF`. +func (t *Tracer) Close() error { + t.closeLock.Lock() + defer t.closeLock.Unlock() + select { + case <-t.closed: + return errTracerClosed + default: + } + close(t.closed) + runtime.SetFinalizer(t, nil) + + // Close everything started in h.Start() in reverse order. + var merr error + if t.rb != nil { + err := t.rb.Close() + if err != nil { + merr = multierror.Append(merr, fmt.Errorf("close ringbuf reader: %w", err)) + } + } + if t.tp != nil { + err := t.tp.Close() + if err != nil { + merr = multierror.Append(merr, fmt.Errorf("close tracepoint: %w", err)) + } + } + err := t.objs.Close() + if err != nil { + merr = multierror.Append(merr, fmt.Errorf("close eBPF objects: %w", err)) + } + + return merr +} diff --git a/firewall/interception/ebpf/programs/exec.c b/firewall/interception/ebpf/programs/exec.c new file mode 100644 index 00000000..dfeb2b42 --- /dev/null +++ b/firewall/interception/ebpf/programs/exec.c @@ -0,0 +1,116 @@ +#include "vmlinux-x86.h" +#include "bpf/bpf_helpers.h" +#include "bpf/bpf_tracing.h" + +#define ARGLEN 32 // maximum amount of args in argv we'll copy +#define ARGSIZE 1024 // maximum byte length of each arg in argv we'll copy + +char __license[] SEC("license") = "GPL"; + +// Ring buffer for all connection events +struct { + __uint(type, BPF_MAP_TYPE_RINGBUF); + __uint(max_entries, 1 << 24); +} pm_exec_map SEC(".maps"); + +// This struct is defined according to +// /sys/kernel/debug/tracing/events/syscalls/sys_enter_execve/format +struct exec_info { + u16 common_type; // offset=0, size=2 + u8 common_flags; // offset=2, size=1 + u8 common_preempt_count; // offset=3, size=1 + s32 common_pid; // offset=4, size=4 + + s32 syscall_nr; // offset=8, size=4 + u32 pad; // offset=12, size=4 (pad) + const u8 *filename; // offset=16, size=8 (ptr) + const u8 *const *argv; // offset=24, size=8 (ptr) + const u8 *const *envp; // offset=32, size=8 (ptr) +}; + +// The event struct. This struct must be kept in sync with the Golang +// counterpart. +struct event_t { + // Details about the process being launched. + u8 filename[ARGSIZE]; + u8 argv[ARGLEN][ARGSIZE]; + u32 argc; // set to ARGLEN + 1 if there were more than ARGLEN arguments + u32 uid; + u32 gid; + u32 pid; + + // Name of the calling process. + u8 comm[ARGSIZE]; +}; + +// Tracepoint at the top of execve() syscall. +SEC("tracepoint/syscalls/sys_enter_execve") +s32 enter_execve(struct exec_info *ctx) { + // Reserve memory for our event on the `events` ring buffer defined above. + struct event_t *event; + event = bpf_ringbuf_reserve(&pm_exec_map, sizeof(struct event_t), 0); + if (!event) { + bpf_printk("could not reserve ringbuf memory"); + + return 1; + } + + // Store process/calling process details. + u64 uidgid = bpf_get_current_uid_gid(); + u64 pidtgid = bpf_get_current_pid_tgid(); + event->uid = uidgid; // uid is the first 32 bits + event->gid = uidgid >> 32; // gid is the last 32 bits NOLINT(readability-magic-numbers) + event->pid = pidtgid; // pid is the first 32 bits + s32 ret = bpf_get_current_comm(&event->comm, sizeof(event->comm)); + if (ret) { + bpf_printk("could not get current comm: %d", ret); + bpf_ringbuf_discard(event, 0); + return 1; + } + + // Write the filename in addition to argv[0] because the filename contains + // the full path to the file which could be more useful in some situations. + ret = bpf_probe_read_user_str(event->filename, sizeof(event->filename), ctx->filename); + if (ret < 0) { + bpf_printk("could not read filename into event struct: %d", ret); + bpf_ringbuf_discard(event, 0); + return 1; + } + + // Copy everything from ctx->argv to event->argv, incrementing event->argc + // as we go. + for (s32 i = 0; i < ARGLEN; i++) { + if (!(&ctx->argv[i])) { + goto out; + } + + // Copying the arg into it's own variable before copying it into + // event->argv[i] prevents memory corruption. + const u8 *argp = NULL; + ret = bpf_probe_read_user(&argp, sizeof(argp), &ctx->argv[i]); + if (ret || !argp) { + goto out; + } + + // Copy argp to event->argv[i]. + ret = bpf_probe_read_user_str(event->argv[i], sizeof(event->argv[i]), argp); + if (ret < 0) { + bpf_printk("read argv %d: %d", i, ret); + goto out; + } + + event->argc++; + } + + // This won't get hit if we `goto out` in the loop above. This is to signify + // to userspace that we couldn't copy all of the arguments because it + // exceeded ARGLEN. + event->argc++; + +out: + // Write the event to the ring buffer and notify userspace. This will cause + // the `Read()` call in userspace to return if it was blocked. + bpf_ringbuf_submit(event, 0); + + return 0; +} \ No newline at end of file diff --git a/process/api.go b/process/api.go index 2e37502d..88197ceb 100644 --- a/process/api.go +++ b/process/api.go @@ -1,6 +1,10 @@ package process import ( + "fmt" + "net/http" + "strconv" + "github.com/safing/portbase/api" ) @@ -16,6 +20,66 @@ func registerAPIEndpoints() error { return err } + if err := api.RegisterEndpoint(api.Endpoint{ + Path: "process/by-profile", + Parameters: []api.Parameter{ + { + Method: http.MethodGet, + Field: "scopedId", + Value: "", + Description: "The ID of the profile", + }, + }, + Read: api.PermitUser, + BelongsTo: module, + StructFunc: api.StructFunc(func(ar *api.Request) (any, error) { + id := ar.URL.Query().Get("scopedId") + + if id == "" { + return nil, api.ErrorWithStatus(fmt.Errorf("missing profile id"), http.StatusBadRequest) + } + + result := FindProcessesByProfile(ar.Context(), id) + + return result, nil + }), + Description: "Get all running processes for a given profile", + Name: "Get Processes by Profile", + }); err != nil { + return err + } + + if err := api.RegisterEndpoint(api.Endpoint{ + Path: "process/by-pid/{pid:[0-9]+}", + Parameters: []api.Parameter{ + { + Method: http.MethodGet, + Field: "pid", + Value: "", + Description: "A PID of a process inside the requested process group", + }, + }, + Read: api.PermitUser, + BelongsTo: module, + StructFunc: api.StructFunc(func(ar *api.Request) (i interface{}, err error) { + pid, err := strconv.ParseInt(ar.URLVars["pid"], 10, 0) + if err != nil { + return nil, api.ErrorWithStatus(err, http.StatusBadRequest) + } + + process, err := GetProcessGroupLeader(ar.Context(), int(pid)) + if err != nil { + return nil, api.ErrorWithStatus(err, http.StatusInternalServerError) + } + + return process, nil + }), + Description: "Load a process group leader by a child PID", + Name: "Get Process Group Leader By PID", + }); err != nil { + return err + } + return nil } diff --git a/process/database.go b/process/database.go index 08a7f225..285b9df2 100644 --- a/process/database.go +++ b/process/database.go @@ -1,12 +1,14 @@ package process import ( + "context" "fmt" "sync" "time" processInfo "github.com/shirou/gopsutil/process" "github.com/tevino/abool" + "golang.org/x/exp/maps" "github.com/safing/portbase/database" "github.com/safing/portbase/log" @@ -46,6 +48,39 @@ func All() map[int]*Process { return all } +func FindProcessesByProfile(ctx context.Context, scopedID string) []*Process { + all := All() + + pids := make([]int, 0, len(all)) + + log.Infof("[DEBUG] searchin processes belonging to %s", scopedID) + + for _, p := range all { + p.Lock() + if p.profile != nil && p.profile.LocalProfile().ScopedID() == scopedID { + pids = append(pids, p.Pid) + } + p.Unlock() + } + + m := make(map[int]*Process) + + for _, pid := range pids { + if _, ok := m[pid]; ok { + continue + } + + process, err := GetProcessGroupLeader(ctx, pid) + if err != nil { + continue + } + + m[process.Pid] = process + } + + return maps.Values(m) +} + // Save saves the process to the internal state and pushes an update. func (p *Process) Save() { p.Lock() diff --git a/process/process.go b/process/process.go index cb34ae32..f80ab4ba 100644 --- a/process/process.go +++ b/process/process.go @@ -35,6 +35,7 @@ type Process struct { UserName string UserHome string Pid int + Pgid int // linux only CreatedAt int64 ParentPid int ParentCreatedAt int64 @@ -212,9 +213,12 @@ func loadProcess(ctx context.Context, key string, pInfo *processInfo.Process) (* return process, nil } + pgid, _ := GetProcessGroupID(ctx, int(pInfo.Pid)) + // Create new a process object. process = &Process{ Pid: int(pInfo.Pid), + Pgid: pgid, FirstSeen: time.Now().Unix(), processKey: key, } diff --git a/process/process_default.go b/process/process_default.go index 4d9d58dd..c0b96f92 100644 --- a/process/process_default.go +++ b/process/process_default.go @@ -3,5 +3,18 @@ package process +import ( + "context" +) + // SystemProcessID is the PID of the System/Kernel itself. const SystemProcessID = 0 + +func GetProcessGroupLeader(ctx context.Context, pid int) (*Process, error) { + // On systems other than linux we just return the process with PID == pid + return GetOrFindProcess(ctx, pid) +} + +func GetProcessGroupID(ctx context.Context, pid int) (int, error) { + return 0 +} diff --git a/process/process_linux.go b/process/process_linux.go index 3d62bb9b..7401094a 100644 --- a/process/process_linux.go +++ b/process/process_linux.go @@ -1,4 +1,84 @@ package process +import ( + "context" + "syscall" + + "github.com/safing/portbase/log" +) + // SystemProcessID is the PID of the System/Kernel itself. const SystemProcessID = 0 + +func GetProcessGroupLeader(ctx context.Context, pid int) (*Process, error) { + pgid, err := GetProcessGroupID(ctx, pid) + if err != nil { + return nil, err + } + + leader, err := GetOrFindProcess(ctx, pgid) + if err == nil { + log.Infof("[DBUG] found leader pid=%d pgid=%d", leader.Pid, leader.Pgid) + return leader, nil + } + + // this seems like a orphan process group so find the outermost parent + // i.e. the first process in the group + iter, err := GetOrFindProcess(ctx, pid) + if err != nil { + log.Infof("[DBUG] failed to get process for pid %d", pid) + return nil, err + } + + // This is already the leader + if iter.Pid == pgid { + log.Infof("[DBUG] iter pid=%d pgid=%d is already leader", pid, pgid) + return iter, nil + } + + for { + next, err := GetOrFindProcess(ctx, iter.ParentPid) + if err != nil { + return nil, err + } + + // If the parent process group ID of does not match + // the pgid than iter is the first child of the process + // group + if next.Pgid != pgid { + return iter, nil + } + + iter = next + } +} + +func GetProcessGroupID(ctx context.Context, pid int) (int, error) { + return syscall.Getpgid(pid) +} + +/* +func init() { + tracer, err := ebpf.New() + if err != nil { + panic(err) + } + + go func() { + file, _ := os.Create("/tmp/tracer.json") + enc := json.NewEncoder(file) + enc.SetIndent("", " ") + + defer tracer.Close() + for { + evt, err := tracer.Read() + if err != nil { + log.Errorf("failed to read from execve tracer: %s", err) + return + } + + _ = enc.Encode(evt) + } + }() +} +*/ From 425a0bed4c12612ad3e1b3cbb0882a79897b2451 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 21 Dec 2023 13:17:05 +0100 Subject: [PATCH 2/3] Improve getting process group leader --- .../interception/ebpf/bandwidth/bpf_bpfeb.o | Bin 43560 -> 37096 bytes .../interception/ebpf/bandwidth/bpf_bpfel.o | Bin 43560 -> 37096 bytes .../ebpf/connection_listener/bpf_bpfeb.o | Bin 43096 -> 36560 bytes .../ebpf/connection_listener/bpf_bpfel.o | Bin 43096 -> 36560 bytes firewall/interception/ebpf/exec/exec.go | 5 +- process/api.go | 96 +++++++------ process/database.go | 52 ++++---- process/find.go | 7 + process/process.go | 59 +++++--- process/process_default.go | 11 +- process/process_linux.go | 126 ++++++++++-------- process/process_windows.go | 17 +++ 12 files changed, 217 insertions(+), 156 deletions(-) diff --git a/firewall/interception/ebpf/bandwidth/bpf_bpfeb.o b/firewall/interception/ebpf/bandwidth/bpf_bpfeb.o index 2b012f737a7c7c982a3e5c45fd03e9dbf51fb0f6..ad9376c9ae31ba96aedc01f0b4da71dbdc8b8161 100644 GIT binary patch literal 37096 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 diff --git a/firewall/interception/ebpf/connection_listener/bpf_bpfeb.o b/firewall/interception/ebpf/connection_listener/bpf_bpfeb.o index 7471b9c2721c4d89f13b734c215414a79181e002..e8e7cdb7b368369546e5e3dbddb1b97f06c90825 100644 GIT binary patch literal 36560 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 DmBuAr literal 43096 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 diff --git a/firewall/interception/ebpf/connection_listener/bpf_bpfel.o b/firewall/interception/ebpf/connection_listener/bpf_bpfel.o index 54ba6347ee5c42c979a26df9c64f84a1f91cb0be..5241f58ebd540dab34c823871c8d4fafd3b05c6e 100644 GIT binary patch literal 36560 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 J=d0h!{XYdp8#Dj_ diff --git a/firewall/interception/ebpf/exec/exec.go b/firewall/interception/ebpf/exec/exec.go index 0d3b839a..f6dbb383 100644 --- a/firewall/interception/ebpf/exec/exec.go +++ b/firewall/interception/ebpf/exec/exec.go @@ -15,8 +15,9 @@ import ( "github.com/cilium/ebpf/ringbuf" "github.com/cilium/ebpf/rlimit" "github.com/hashicorp/go-multierror" - "github.com/safing/portbase/log" "golang.org/x/sys/unix" + + "github.com/safing/portbase/log" ) //go:generate go run github.com/cilium/ebpf/cmd/bpf2go -cc clang -cflags "-O2 -g -Wall -Werror" bpf ../programs/exec.c @@ -67,6 +68,8 @@ type Event struct { Comm string `json:"comm"` } +// Tracer is the exec tracer itself. +// It must be closed after use. type Tracer struct { objs bpfObjects tp link.Link diff --git a/process/api.go b/process/api.go index 88197ceb..0f5c43a4 100644 --- a/process/api.go +++ b/process/api.go @@ -1,81 +1,45 @@ package process import ( + "errors" "fmt" "net/http" "strconv" "github.com/safing/portbase/api" + "github.com/safing/portmaster/profile" ) func registerAPIEndpoints() error { if err := api.RegisterEndpoint(api.Endpoint{ + Name: "Get Process Tag Metadata", + Description: "Get information about process tags.", Path: "process/tags", Read: api.PermitUser, BelongsTo: module, StructFunc: handleProcessTagMetadata, - Name: "Get Process Tag Metadata", - Description: "Get information about process tags.", }); err != nil { return err } if err := api.RegisterEndpoint(api.Endpoint{ - Path: "process/by-profile", - Parameters: []api.Parameter{ - { - Method: http.MethodGet, - Field: "scopedId", - Value: "", - Description: "The ID of the profile", - }, - }, - Read: api.PermitUser, - BelongsTo: module, - StructFunc: api.StructFunc(func(ar *api.Request) (any, error) { - id := ar.URL.Query().Get("scopedId") - - if id == "" { - return nil, api.ErrorWithStatus(fmt.Errorf("missing profile id"), http.StatusBadRequest) - } - - result := FindProcessesByProfile(ar.Context(), id) - - return result, nil - }), - Description: "Get all running processes for a given profile", Name: "Get Processes by Profile", + Description: "Get all recently active processes using the given profile", + Path: "process/list/by-profile/{source:[a-z]+}/{id:[A-z0-9-]+}", + Read: api.PermitUser, + BelongsTo: module, + StructFunc: handleGetProcessesByProfile, }); err != nil { return err } if err := api.RegisterEndpoint(api.Endpoint{ - Path: "process/by-pid/{pid:[0-9]+}", - Parameters: []api.Parameter{ - { - Method: http.MethodGet, - Field: "pid", - Value: "", - Description: "A PID of a process inside the requested process group", - }, - }, - Read: api.PermitUser, - BelongsTo: module, - StructFunc: api.StructFunc(func(ar *api.Request) (i interface{}, err error) { - pid, err := strconv.ParseInt(ar.URLVars["pid"], 10, 0) - if err != nil { - return nil, api.ErrorWithStatus(err, http.StatusBadRequest) - } - - process, err := GetProcessGroupLeader(ar.Context(), int(pid)) - if err != nil { - return nil, api.ErrorWithStatus(err, http.StatusInternalServerError) - } - - return process, nil - }), - Description: "Load a process group leader by a child PID", Name: "Get Process Group Leader By PID", + Description: "Load a process group leader by a child PID", + Path: "process/group-leader/{pid:[0-9]+}", + Read: api.PermitUser, + BelongsTo: module, + StructFunc: handleGetProcessGroupLeader, }); err != nil { return err } @@ -101,3 +65,35 @@ func handleProcessTagMetadata(ar *api.Request) (i interface{}, err error) { return resp, nil } + +func handleGetProcessesByProfile(ar *api.Request) (any, error) { + source := ar.URLVars["source"] + id := ar.URLVars["id"] + if id == "" || source == "" { + return nil, api.ErrorWithStatus(fmt.Errorf("missing profile source/id"), http.StatusBadRequest) + } + + result := GetProcessesWithProfile(ar.Context(), profile.ProfileSource(source), id, true) + return result, nil +} + +func handleGetProcessGroupLeader(ar *api.Request) (any, error) { + pid, err := strconv.ParseInt(ar.URLVars["pid"], 10, 0) + if err != nil { + return nil, api.ErrorWithStatus(err, http.StatusBadRequest) + } + + process, err := GetOrFindProcess(ar.Context(), int(pid)) + if err != nil { + return nil, api.ErrorWithStatus(err, http.StatusInternalServerError) + } + err = process.FindProcessGroupLeader(ar.Context()) + switch { + case process.Leader() != nil: + return process.Leader(), nil + case err != nil: + return nil, api.ErrorWithStatus(err, http.StatusInternalServerError) + default: + return nil, api.ErrorWithStatus(errors.New("leader not found"), http.StatusNotFound) + } +} diff --git a/process/database.go b/process/database.go index 285b9df2..2041c6cf 100644 --- a/process/database.go +++ b/process/database.go @@ -3,15 +3,17 @@ package process import ( "context" "fmt" + "slices" + "strings" "sync" "time" processInfo "github.com/shirou/gopsutil/process" "github.com/tevino/abool" - "golang.org/x/exp/maps" "github.com/safing/portbase/database" "github.com/safing/portbase/log" + "github.com/safing/portmaster/profile" ) const processDatabaseNamespace = "network:tree" @@ -48,37 +50,33 @@ func All() map[int]*Process { return all } -func FindProcessesByProfile(ctx context.Context, scopedID string) []*Process { - all := All() +// GetProcessesWithProfile returns all processes that use the given profile. +// If preferProcessGroupLeader is set, it returns the process group leader instead, if available. +func GetProcessesWithProfile(ctx context.Context, profileSource profile.ProfileSource, profileID string, preferProcessGroupLeader bool) []*Process { + log.Tracer(ctx).Debugf("process: searching for processes belonging to %s", profile.MakeScopedID(profileSource, profileID)) - pids := make([]int, 0, len(all)) - - log.Infof("[DEBUG] searchin processes belonging to %s", scopedID) - - for _, p := range all { - p.Lock() - if p.profile != nil && p.profile.LocalProfile().ScopedID() == scopedID { - pids = append(pids, p.Pid) + // Get all processes that match the given profile. + procs := make([]*Process, 0, 8) + for _, p := range All() { + lp := p.profile.LocalProfile() + if lp != nil && lp.Source == profileSource && lp.ID == profileID { + if preferProcessGroupLeader && p.Leader() != nil { + procs = append(procs, p.Leader()) + } else { + procs = append(procs, p) + } } - p.Unlock() } - m := make(map[int]*Process) + // Sort and compact. + slices.SortFunc[[]*Process, *Process](procs, func(a, b *Process) int { + return strings.Compare(a.processKey, b.processKey) + }) + slices.CompactFunc[[]*Process, *Process](procs, func(a, b *Process) bool { + return a.processKey == b.processKey + }) - for _, pid := range pids { - if _, ok := m[pid]; ok { - continue - } - - process, err := GetProcessGroupLeader(ctx, pid) - if err != nil { - continue - } - - m[process.Pid] = process - } - - return maps.Values(m) + return procs } // Save saves the process to the internal state and pushes an update. diff --git a/process/find.go b/process/find.go index c0a209e9..be5afdb6 100644 --- a/process/find.go +++ b/process/find.go @@ -29,6 +29,13 @@ func GetProcessWithProfile(ctx context.Context, pid int) (process *Process, err return GetUnidentifiedProcess(ctx), err } + // Get process group leader, which is the process "nearest" to the user and + // will have more/better information for finding names ans icons, for example. + err = process.FindProcessGroupLeader(ctx) + if err != nil { + log.Warningf("process: failed to get process group leader for %s: %s", process, err) + } + changed, err := process.GetProfile(ctx) if err != nil { log.Tracer(ctx).Errorf("process: failed to get profile for process %s: %s", process, err) diff --git a/process/process.go b/process/process.go index f80ab4ba..b7d0cf41 100644 --- a/process/process.go +++ b/process/process.go @@ -30,21 +30,26 @@ type Process struct { // Process attributes. // Don't change; safe for concurrent access. - Name string - UserID int - UserName string - UserHome string - Pid int - Pgid int // linux only - CreatedAt int64 + Name string + UserID int + UserName string + UserHome string + + Pid int + CreatedAt int64 + ParentPid int ParentCreatedAt int64 - Path string - ExecName string - Cwd string - CmdLine string - FirstArg string - Env map[string]string + + LeaderPid int + leader *Process + + Path string + ExecName string + Cwd string + CmdLine string + FirstArg string + Env map[string]string // unique process identifier ("Pid-CreatedAt") processKey string @@ -92,6 +97,16 @@ func (p *Process) Profile() *profile.LayeredProfile { return p.profile } +// Leader returns the process group leader that is attached to the process. +// This will not trigger a new search for the process group leader, it only +// returns existing data. +func (p *Process) Leader() *Process { + p.Lock() + defer p.Unlock() + + return p.leader +} + // IsIdentified returns whether the process has been identified or if it // represents some kind of unidentified process. func (p *Process) IsIdentified() bool { @@ -213,12 +228,9 @@ func loadProcess(ctx context.Context, key string, pInfo *processInfo.Process) (* return process, nil } - pgid, _ := GetProcessGroupID(ctx, int(pInfo.Pid)) - // Create new a process object. process = &Process{ Pid: int(pInfo.Pid), - Pgid: pgid, FirstSeen: time.Now().Unix(), processKey: key, } @@ -250,7 +262,7 @@ func loadProcess(ctx context.Context, key string, pInfo *processInfo.Process) (* // TODO: User Home // new.UserHome, err = - // Parent process id + // Parent process ID ppid, err := pInfo.PpidWithContext(ctx) if err != nil { return nil, fmt.Errorf("failed to get PPID for p%d: %w", pInfo.Pid, err) @@ -267,6 +279,19 @@ func loadProcess(ctx context.Context, key string, pInfo *processInfo.Process) (* process.ParentCreatedAt = parentCreatedAt } + // Leader process ID + // Get process group ID to find group leader, which is the process "nearest" + // to the user and will have more/better information for finding names and + // icons, for example. + leaderPid, err := GetProcessGroupID(ctx, process.Pid) + if err != nil { + // Fail gracefully. + log.Warningf("process: failed to get process group ID for p%d: %s", process.Pid, err) + process.LeaderPid = UndefinedProcessID + } else { + process.LeaderPid = leaderPid + } + // Path process.Path, err = pInfo.ExeWithContext(ctx) if err != nil { diff --git a/process/process_default.go b/process/process_default.go index c0b96f92..e20d481f 100644 --- a/process/process_default.go +++ b/process/process_default.go @@ -10,11 +10,14 @@ import ( // SystemProcessID is the PID of the System/Kernel itself. const SystemProcessID = 0 -func GetProcessGroupLeader(ctx context.Context, pid int) (*Process, error) { - // On systems other than linux we just return the process with PID == pid - return GetOrFindProcess(ctx, pid) +// GetProcessGroupLeader returns the process that leads the process group. +// Returns nil on unsupported platforms. +func (p *Process) FindProcessGroupLeader(ctx context.Context) error { + return nil } +// GetProcessGroupID returns the process group ID of the given PID. +// Returns undefined process ID on unsupported platforms. func GetProcessGroupID(ctx context.Context, pid int) (int, error) { - return 0 + return UndefinedProcessID, nil } diff --git a/process/process_linux.go b/process/process_linux.go index 7401094a..df3fcc94 100644 --- a/process/process_linux.go +++ b/process/process_linux.go @@ -2,83 +2,95 @@ package process import ( "context" + "fmt" "syscall" "github.com/safing/portbase/log" ) -// SystemProcessID is the PID of the System/Kernel itself. -const SystemProcessID = 0 +const ( + // SystemProcessID is the PID of the System/Kernel itself. + SystemProcessID = 0 -func GetProcessGroupLeader(ctx context.Context, pid int) (*Process, error) { - pgid, err := GetProcessGroupID(ctx, pid) - if err != nil { - return nil, err + // SystemInitID is the PID of the system init process. + SystemInitID = 1 +) + +// FindProcessGroupLeader returns the process that leads the process group. +// Returns nil when process ID is not valid (or virtual). +// If the process group leader is found, it is set on the process. +// If that process does not exist anymore, then the highest existing parent process is returned. +// If an error occurs, the best match is set. +func (p *Process) FindProcessGroupLeader(ctx context.Context) error { + p.Lock() + defer p.Unlock() + + // Return the leader if we already have it. + if p.leader != nil { + return nil } - leader, err := GetOrFindProcess(ctx, pgid) + // Check if we have the process group leader PID. + if p.LeaderPid == UndefinedProcessID { + return nil + } + + // Return nil if we already are the leader. + if p.LeaderPid == p.Pid { + return nil + } + + // Get process leader process. + leader, err := GetOrFindProcess(ctx, p.LeaderPid) if err == nil { - log.Infof("[DBUG] found leader pid=%d pgid=%d", leader.Pid, leader.Pgid) - return leader, nil - } - - // this seems like a orphan process group so find the outermost parent - // i.e. the first process in the group - iter, err := GetOrFindProcess(ctx, pid) - if err != nil { - log.Infof("[DBUG] failed to get process for pid %d", pid) - return nil, err - } - - // This is already the leader - if iter.Pid == pgid { - log.Infof("[DBUG] iter pid=%d pgid=%d is already leader", pid, pgid) - return iter, nil + p.leader = leader + log.Tracer(ctx).Debugf("process: found process leader of %d: pid=%d pgid=%d", p.Pid, leader.Pid, leader.LeaderPid) + return nil } + // If we can't get the process leader process, it has likely already exited. + // In that case, find the highest existing parent process within the process group. + var ( + nextParentPid = p.ParentPid + lastParent *Process + ) for { - next, err := GetOrFindProcess(ctx, iter.ParentPid) + // Get next parent. + parent, err := GetOrFindProcess(ctx, nextParentPid) if err != nil { - return nil, err + p.leader = lastParent + return fmt.Errorf("failed to find parent %d: %w", nextParentPid, err) } - // If the parent process group ID of does not match - // the pgid than iter is the first child of the process - // group - if next.Pgid != pgid { - return iter, nil + // Check if we are ready to return. + switch { + case parent.Pid == p.LeaderPid: + // Found the process group leader! + p.leader = parent + return nil + + case parent.LeaderPid != p.LeaderPid: + // We are leaving the process group. Return the previous parent. + p.leader = lastParent + log.Tracer(ctx).Debugf("process: found process leader (highest parent) of %d: pid=%d pgid=%d", p.Pid, parent.Pid, parent.LeaderPid) + return nil + + case parent.ParentPid == SystemProcessID, + parent.ParentPid == SystemInitID: + // Next parent is system or init. + // Use current parent. + p.leader = parent + log.Tracer(ctx).Debugf("process: found process leader (highest parent) of %d: pid=%d pgid=%d", p.Pid, parent.Pid, parent.LeaderPid) + return nil } - iter = next + // Check next parent. + lastParent = parent + nextParentPid = parent.ParentPid } } +// GetProcessGroupID returns the process group ID of the given PID. func GetProcessGroupID(ctx context.Context, pid int) (int, error) { return syscall.Getpgid(pid) } - -/* -func init() { - tracer, err := ebpf.New() - if err != nil { - panic(err) - } - - go func() { - file, _ := os.Create("/tmp/tracer.json") - enc := json.NewEncoder(file) - enc.SetIndent("", " ") - - defer tracer.Close() - for { - evt, err := tracer.Read() - if err != nil { - log.Errorf("failed to read from execve tracer: %s", err) - return - } - - _ = enc.Encode(evt) - } - }() -} -*/ diff --git a/process/process_windows.go b/process/process_windows.go index e350f5a7..32dfe343 100644 --- a/process/process_windows.go +++ b/process/process_windows.go @@ -1,4 +1,21 @@ package process +import ( + "context" +) + // SystemProcessID is the PID of the System/Kernel itself. const SystemProcessID = 4 + +// GetProcessGroupLeader returns the process that leads the process group. +// Returns nil on Windows, as it does not have process groups. +func (p *Process) FindProcessGroupLeader(ctx context.Context) error { + // TODO: Get "main" process of process job object. + return nil +} + +// GetProcessGroupID returns the process group ID of the given PID. +// Returns the undefined process ID on Windows, as it does not have process groups. +func GetProcessGroupID(ctx context.Context, pid int) (int, error) { + return UndefinedProcessID, nil +} From 9c3eccfc737aaa7895c3cb2502315f7cc798208e Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 22 Dec 2023 14:09:09 +0100 Subject: [PATCH 3/3] Add exec eBPD objects --- .gitignore | 1 - firewall/interception/ebpf/exec/bpf_bpfeb.o | Bin 0 -> 6736 bytes firewall/interception/ebpf/exec/bpf_bpfel.o | Bin 0 -> 6736 bytes 3 files changed, 1 deletion(-) create mode 100644 firewall/interception/ebpf/exec/bpf_bpfeb.o create mode 100644 firewall/interception/ebpf/exec/bpf_bpfel.o diff --git a/.gitignore b/.gitignore index b3c96ff6..88f8a650 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,6 @@ vendor testing # Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o *.a *.so diff --git a/firewall/interception/ebpf/exec/bpf_bpfeb.o b/firewall/interception/ebpf/exec/bpf_bpfeb.o new file mode 100644 index 0000000000000000000000000000000000000000..347cba06811447d8da66b2038f26ed70235d1cee GIT binary patch literal 6736 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 literal 0 HcmV?d00001