Skip to content

Go lockfile generation fails with sandbox #1392

Open

Description

@ejortega

Overview

Attempting to a create a lockfile from a go.mod manifest fails with error missing $GOPATH: HOME is not set.

How To Reproduce

Steps to reproduce this behavior:

  1. Parse a go.mod file
❯ phylum parse -t go go.mod
Generating lockfile for manifest "go.mod" using Go…
❗ Error: Lockfile generation failed! For details, see: https://docs.phylum.io/cli/lockfile_generation

Caused by:
    package manager quit unexpectedly (code: Some(1)):
    
    go: github.com/go-audio/audio@v1.0.0: verifying go.mod: github.com/go-audio/audio@v1.0.0/go.mod: initializing sumdb.Client: could not locate sumdb file: missing $GOPATH: HOME is not set
    

❗ Error: Could not parse dependency file "go.mod" as "go" type

Caused by:
    Dependency file parsing failed
  1. Checking go env the $GOPATH is set.
  2. After disabling the lockfile generation sandbox, the lockfile generation works as expected.
❯ phylum parse -t go --skip-sandbox go.mod
Generating lockfile for manifest "go.mod" using Go…
[
  {
    "name": "github.com/d4l3k/messagediff",
    "version": "v1.2.2-0.20190829033028-7e0a312ae40b",
    "type": "golang",
    "lockfile": "go.mod"
  },
  {
    "name": "github.com/go-audio/audio",
    "version": "v1.0.0",
    "type": "golang",
    "lockfile": "go.mod"
    ...

Activity

  1. added
    bugSomething isn't working
    needs triageNeeds to be reviewed or assigned
    on Apr 12, 2024
  2. cd-work commented on Apr 12, 2024

    @cd-work
    Contributor

    I don't think we currently have any exception specific to Go, so $GOPATH wouldn't be read even if it's set.

  3. kylewillmon commented on Apr 18, 2024

    @kylewillmon
    Contributor

    Brainstorming ways to make this work:

    1. Allow access to the GOPATH variable. And parse the value to add read-write permissions for any directories listed.
    2. Disallow access to the GOPATH variable and grant read-write access to the default location, $HOME/go. (But that gets complicated if that path does not exist...)
    3. Create a temporary directory with read-write access and set GOPATH to point to it.
    4. Exempt go from sandboxing... After all, it is designed to mitigate supply chain attacks

    All of these options are a bit messy... 1 and 4 are my current favorites, but I'm going to think a bit more on this...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds triageNeeds to be reviewed or assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions