prevent mounting run/drone directory

This commit is contained in:
Brad Rydzewski
2019-11-08 12:20:50 -08:00
parent e699edd0e1
commit 6dace0adc9
4 changed files with 32 additions and 0 deletions

View File

@@ -7,6 +7,8 @@ package linter
import (
"errors"
"fmt"
"path/filepath"
"strings"
"github.com/drone-runners/drone-runner-docker/engine/resource"
)
@@ -123,6 +125,9 @@ func checkStep(step *resource.Step, trusted bool) error {
case "workspace", "_workspace", "_docker_socket":
return fmt.Errorf("linter: invalid volume name: %s", mount.Name)
}
if strings.HasPrefix(filepath.Clean(mount.MountPath), "/run/drone") {
return fmt.Errorf("linter: cannot mount volume at /run/drone")
}
}
return nil
}

View File

@@ -48,6 +48,14 @@ func TestLint(t *testing.T) {
invalid: true,
message: "linter: invalid volume name: _docker_socket",
},
// user should not be trying to mount internal or restricted
// volume paths.
{
path: "testdata/volume_restricted.yml",
trusted: false,
invalid: true,
message: "linter: cannot mount volume at /run/drone",
},
// user should not be able to mount host path
// volumes unless the repository is trusted.
{

View File

@@ -0,0 +1,18 @@
---
kind: pipeline
type: docker
name: linux
steps:
- name: test
image: golang
commands:
- go build
- go test
volumes:
- name: vol
path: /run/drone/env
volumes:
- name: vol
temp: {}