6464 security-scan :
6565 runs-on : ubuntu-latest
6666 name : Security Vulnerability Scan
67-
67+ permissions :
68+ actions : read
69+ contents : read
70+ security-events : write
71+
6872 steps :
6973 - name : Checkout code
7074 uses : actions/checkout@v4
@@ -87,23 +91,31 @@ jobs:
8791 - name : Install dependencies
8892 run : go mod download
8993
90- - name : Install govulncheck
91- run : go install golang.org/x/vuln/cmd/govulncheck@latest
92-
93- - name : Run govulncheck
94- run : govulncheck ./...
94+ - name : Run govulncheck and fail if vulnerabilities are found
95+ run : |
96+ govulncheck -json ./... > vuln.json
97+ count=$(jq '[.Vuln[]] | length' vuln.json || echo 0)
98+ echo "Found $count vulnerabilities"
99+ if [ "$count" -gt 0 ]; then
100+ echo "❌ Vulnerabilities found by govulncheck"
101+ cat vuln.json
102+ exit 1
103+ fi
95104
96105 - name : Install gosec
97- run : go install github.com/securecodewarrior /gosec/v2/cmd/gosec@latest
106+ run : go install github.com/securego /gosec/v2/cmd/gosec@latest
98107
99108 - name : Run gosec security scanner
100- run : gosec -fmt sarif -out gosec-results.sarif ./...
109+ run : |
110+ gosec -fmt sarif -out gosec-results.sarif ./...
111+ continue-on-error : true
101112
102113 - name : Upload gosec results to GitHub Security tab
103- uses : github/codeql-action/upload-sarif@v2
114+ uses : github/codeql-action/upload-sarif@v3
104115 if : always()
105116 with :
106117 sarif_file : gosec-results.sarif
118+ category : gosec
107119
108120 # CodeQL Analysis
109121 codeql-analysis :
@@ -117,14 +129,14 @@ jobs:
117129 strategy :
118130 fail-fast : false
119131 matrix :
120- language : ['go' ]
132+ language : ["go" ]
121133
122134 steps :
123135 - name : Checkout code
124136 uses : actions/checkout@v4
125137
126138 - name : Initialize CodeQL
127- uses : github/codeql-action/init@v2
139+ uses : github/codeql-action/init@v3
128140 with :
129141 languages : ${{ matrix.language }}
130142 queries : +security-and-quality
@@ -153,15 +165,19 @@ jobs:
153165 go build -v ./cmd/mpcium-cli
154166
155167 - name : Perform CodeQL Analysis
156- uses : github/codeql-action/analyze@v2
168+ uses : github/codeql-action/analyze@v3
157169 with :
158170 category : " /language:${{matrix.language}}"
159171
160172 # SBOM Generation
161173 sbom :
162174 runs-on : ubuntu-latest
163175 name : Generate SBOM
164-
176+ permissions :
177+ actions : read
178+ contents : read
179+ security-events : write
180+
165181 steps :
166182 - name : Checkout code
167183 uses : actions/checkout@v4
@@ -222,12 +238,14 @@ jobs:
222238 fail-build : false
223239 output-format : sarif
224240 output-file : grype-results.sarif
241+ continue-on-error : true
225242
226243 - name : Upload Grype results to GitHub Security tab
227- uses : github/codeql-action/upload-sarif@v2
244+ uses : github/codeql-action/upload-sarif@v3
228245 if : always()
229246 with :
230247 sarif_file : grype-results.sarif
248+ category : grype
231249
232250 - name : Display SBOM summary
233251 run : |
0 commit comments