Skip to content

Commit

Permalink
Added an event for default stable rule Drop and execute new binary in…
Browse files Browse the repository at this point in the history
… container

Signed-off-by: GLVS Kiriti <[email protected]>
  • Loading branch information
GLVSKiriti authored and poiana committed Apr 9, 2024
1 parent 7bc50fb commit cba5af9
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions events/syscall/drop_and_execute_new_binary_in_container.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// 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(DropAndExecuteNewBinaryInContainer)

func DropAndExecuteNewBinaryInContainer(h events.Helper) error {
if h.InContainer() {
binaryPath := "/tmp/created-by-event-generator"
exampleCode := `package main
func main() {}`

err := os.WriteFile(binaryPath+".go", []byte(exampleCode), 0644) // Create a sample .go file
if err != nil {
h.Log().WithError(err).Error("failed to write source code to file")
return err
}
defer os.Remove(binaryPath + ".go") // Remove at end

// Compile the .go file into an executable binary
compileCmd := exec.Command("go", "build", "-o", binaryPath, binaryPath+".go")
if err := compileCmd.Run(); err != nil {
h.Log().WithError(err).Error("failed to compile Go code")
return err
}
defer os.Remove(binaryPath) // Remove at end

executeCmd := exec.Command(exampleCode)
h.Log().Info("Executed a binary not part of base image")
return executeCmd.Run()
}
return nil
}

0 comments on commit cba5af9

Please sign in to comment.