как правильно использовать seccomp в golang? - PullRequest
0 голосов
/ 13 апреля 2019
package main

import (
    "fmt"
    libseccomp "github.com/seccomp/libseccomp-golang"
    "os"
    "os/exec"
)

func whiteList(syscalls []string) {

    filter, err := libseccomp.NewFilter(libseccomp.ActKill)
    if err != nil {
        fmt.Printf("Error creating filter: %s\n", err)
    }
    for _, element := range syscalls {
        syscallID, err := libseccomp.GetSyscallFromName(element)
        if err != nil {
            panic(err)
        }
        filter.AddRule(syscallID, libseccomp.ActAllow)
    }
    filter.Load()
}

func main() {
    var syscalls = []string{}

    whiteList(syscalls)

    cmd := exec.Command("/bin/ls")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    if err := cmd.Run(); err != nil {
        fmt.Println(err)
    }
}

Я думаю, что программа будет убита, потому что белый список системных вызовов пуст. Тем не менее, он висит, пока я не введу Ctrl + C. Мое использование неправильно? Мое понимание неверно? как правильно использовать seccomp в golang?

...