Skip to content

Commit

Permalink
Merge pull request #2482 from step-security/fix-2479
Browse files Browse the repository at this point in the history
Fix 2479
  • Loading branch information
varunsh-coder authored Sep 6, 2024
2 parents d61982f + fa5ec87 commit 8a372e9
Show file tree
Hide file tree
Showing 13 changed files with 51 additions and 19 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/automatePR.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ jobs:

steps:
- name: Harden Runner
uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1
with:
egress-policy: audit

- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 #v4.1.6
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
repository: step-security/secure-repo

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ jobs:

steps:
- name: Harden Runner
uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde
with:
egress-policy: audit

- name: Checkout repository
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/int.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
fetch-depth: 0
- name: Set up Go
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/kb-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
contents: read
runs-on: ubuntu-latest
steps:
- uses: step-security/harden-runner@ebacdc22ef6c2cfb85ee5ded8f2e640f4c776dd5 # v1
- uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1
with:
allowed-endpoints: >
api.github.com:443
Expand All @@ -25,7 +25,7 @@ jobs:
objects.githubusercontent.com:443
golang.org:443
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v2
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Set up Go
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/kbanalysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ jobs:

steps:
- name: Harden Runner
uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde
with:
egress-policy: audit

- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
repository: step-security/secure-repo

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
fetch-depth: 0
- name: Set up Go
Expand All @@ -33,7 +33,7 @@ jobs:
env:
PAT: ${{ secrets.PAT }}

- uses: step-security/wait-for-secrets@1204ba02d7a707c4ef2e906d2ea1e36eebd9bbd2
- uses: step-security/wait-for-secrets@5809f7d044804a5a1d43217fa8f3e855939fc9ef
id: wait-for-secrets
with:
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/scorecards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ jobs:

steps:
- name: Harden Runner
uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1
with:
egress-policy: audit

- name: "Checkout code"
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
persist-credentials: false

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
contents: read
runs-on: ubuntu-latest
steps:
- uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
- uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1
with:
egress-policy: audit
allowed-endpoints: >
Expand All @@ -31,7 +31,7 @@ jobs:
objects.githubusercontent.com:443
golang.org:443
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Set up Go
Expand Down

This file was deleted.

1 change: 1 addition & 0 deletions remediation/workflow/metadata/actionmetadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ type Step struct {
type Job struct {
Permissions Permissions `yaml:"permissions"`
Uses string `yaml:"uses"`
Env Env `yaml:"env"`
// RunsOn []string `yaml:"runs-on"`
Steps []Step `yaml:"steps"`
}
Expand Down
16 changes: 16 additions & 0 deletions remediation/workflow/permissions/permissions.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ const errorMissingAction = "KnownIssue-4: Action %s is not in the knowledge base
const errorAlreadyHasPermissions = "KnownIssue-5: Permissions were not added to the job since it already had permissions defined"
const errorDockerAction = "KnownIssue-6: Action %s is a docker action which uses Github token. Docker actions that uses token are not supported"
const errorReusableWorkflow = "KnownIssue-7: Action %s is a reusable workflow. Reusable workflows are not supported as of now."
const errorGithubTokenInJobEnv = "KnownIssue-8: Permissions were not added to the jobs since it has GITHUB_TOKEN in job level env variable"
const errorIncorrectYaml = "Unable to parse the YAML workflow file"

// To avoid a typo while adding the permissions
Expand Down Expand Up @@ -78,6 +79,15 @@ func alreadyHasWorkflowPermissions(workflow metadata.Workflow) bool {
return workflow.Permissions.IsSet
}

func githubTokenInJobLevelEnv(job metadata.Job) bool {
for _, envValue := range job.Env {
if strings.Contains(envValue, "secrets.GITHUB_TOKEN") || strings.Contains(envValue, "github.token") {
return true
}
}
return false
}

func AddWorkflowLevelPermissions(inputYaml string, addProjectComment bool) (string, error) {
workflow := metadata.Workflow{}

Expand Down Expand Up @@ -177,6 +187,12 @@ func AddJobLevelPermissions(inputYaml string) (*SecureWorkflowReponse, error) {
continue
}

if githubTokenInJobLevelEnv(job) {
fixWorkflowPermsReponse.HasErrors = true
errors[jobName] = append(errors[jobName], errorGithubTokenInJobEnv)
continue
}

if metadata.IsCallingReusableWorkflow(job) {
fixWorkflowPermsReponse.HasErrors = true
errors[jobName] = append(errors[jobName], fmt.Sprintf(errorReusableWorkflow, job.Uses))
Expand Down
16 changes: 16 additions & 0 deletions testfiles/joblevelpermskb/input/github-token-in-job-env.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Job level env
on:
pull_request:
branches: [main]

jobs:
job-with-error:
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: some step that uses token
run: |
npm ci
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
KnownIssue-8: Permissions were not added to the jobs since it has GITHUB_TOKEN in job level env variable

0 comments on commit 8a372e9

Please sign in to comment.