diff --git a/events/syscall/potential_local_privillege_escalation_via_env_var_misuse.go b/events/syscall/potential_local_privillege_escalation_via_env_var_misuse.go new file mode 100644 index 00000000..ca21ebc9 --- /dev/null +++ b/events/syscall/potential_local_privillege_escalation_via_env_var_misuse.go @@ -0,0 +1,43 @@ +//go:build linux +// +build linux + +// SPDX-License-Identifier: Apache-2.0 +/* +Copyright (C) 2024 The Falco Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package syscall + +import ( + "os" + "os/exec" + + "github.com/falcosecurity/event-generator/events" +) + +var _ = events.Register(PotentialLocalPrivillegeEscalation) + +func PotentialLocalPrivillegeEscalation(h events.Helper) error { + // Set the GLIBC_TUNABLES environment variable + cmd := exec.Command("bash", "-c", "id") + cmd.Env = os.Environ() + cmd.Env = append(cmd.Env, "GLIBC_TUNABLES=glibc.tune.hwcaps=-WAITED,glibc.tune.secrets=2") + + h.Log().Info("Process run with suspect environment variable which could be attempting privilege escalation") + err := cmd.Run() + if err != nil { + h.Log().WithError(err).Error("Failed to execute process with modified environment") + return err + } + + return nil +}