Filter out unsafe options

This commit is contained in:
Vitaliy Filippov 2023-04-26 11:47:00 +03:00
parent ede57438c0
commit 701c86fa4d

View file

@ -3,6 +3,7 @@ package mounter
import ( import (
"fmt" "fmt"
"os" "os"
"strings"
"time" "time"
systemd "github.com/coreos/go-systemd/v22/dbus" systemd "github.com/coreos/go-systemd/v22/dbus"
@ -92,10 +93,30 @@ func (geesefs *geesefsMounter) Mount(target, volumeID string) error {
) )
useSystemd := true useSystemd := true
for i := 0; i < len(geesefs.meta.MountOptions); i++ { for i := 0; i < len(geesefs.meta.MountOptions); i++ {
if geesefs.meta.MountOptions[i] == "--no-systemd" { opt := geesefs.meta.MountOptions[i]
if opt == "--no-systemd" {
useSystemd = false useSystemd = false
} else { } else if len(opt) > 0 && opt[0] == '-' {
args = append(args, geesefs.meta.MountOptions[i]) // Remove unsafe options
s := 1
if len(opt) > 1 && opt[1] == '-' {
s++
}
key := opt[s:]
e := strings.Index(opt, "=")
if e >= 0 {
key = opt[s:e]
}
if key == "log-file" || key == "shared-config" || key == "cache" {
// Skip options accessing local FS
if e < 0 {
i++
}
} else if key != "" {
args = append(args, opt)
}
} else if len(opt) > 0 {
args = append(args, opt)
} }
} }
args = append(args, fullPath, target) args = append(args, fullPath, target)
@ -118,6 +139,7 @@ func (geesefs *geesefsMounter) Mount(target, volumeID string) error {
pluginDir = "/var/lib/kubelet/plugins/ru.yandex.s3.csi" pluginDir = "/var/lib/kubelet/plugins/ru.yandex.s3.csi"
} }
args = append([]string{pluginDir+"/geesefs", "-f", "-o", "allow_other", "--endpoint", geesefs.endpoint}, args...) args = append([]string{pluginDir+"/geesefs", "-f", "-o", "allow_other", "--endpoint", geesefs.endpoint}, args...)
glog.Info("Starting geesefs using systemd: "+strings.Join(args, " "))
unitName := "geesefs-"+systemd.PathBusEscape(volumeID)+".service" unitName := "geesefs-"+systemd.PathBusEscape(volumeID)+".service"
newProps := []systemd.Property{ newProps := []systemd.Property{
systemd.Property{ systemd.Property{