Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@BagToad
Copy link
Member

@BagToad BagToad commented Aug 8, 2025

Description

Our govulncheck workflow is failing to upload SARIF results to Code Scanning.

image image

See a workflow run here

Explanation and solution

This is happening because we are scanning in binary mode. govulncheck is unable to deduce source code line numbers (location) from the binary. GitHub Code Scanning requires this line number information to accept a SARIF file, otherwise it cannot provide annotations directly on the vulnerable code.

The solution is to have govulncheck run on source files (./...) instead of the built binary in binary mode. This way, govulncheck can find the source code line numbers (location) and include it in the SARIF, making GitHub Code Scanning accept it.

See physicallocationobject for additional reference on this requirement.

Changed govulncheck to run on all source files (./...) instead of the built binary. This fixes uploading to GitHub Code Scanning as the location data will be valid, so it will get accepted.
Copilot AI review requested due to automatic review settings August 8, 2025 22:15
@BagToad BagToad requested a review from a team as a code owner August 8, 2025 22:15
@BagToad BagToad requested a review from williammartin August 8, 2025 22:15
@BagToad BagToad temporarily deployed to cli-automation August 8, 2025 22:15 — with GitHub Actions Inactive
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Updates the govulncheck workflow to scan source code instead of binary mode to fix SARIF upload failures to GitHub Code Scanning. The issue was that binary mode scanning cannot provide source code line numbers required by GitHub Code Scanning.

  • Removes binary build step and switches from binary mode to source code scanning
  • Changes govulncheck command to scan ./... (all packages) instead of the built binary
  • Maintains the same SARIF output format for Code Scanning integration

@andyfeller
Copy link
Member

Explanation and solution

This is happening because we are scanning in binary mode. govulncheck is unable to deduce source code line numbers (location) from the binary. GitHub Code Scanning requires this line number information to accept a SARIF file, otherwise it cannot provide annotations directly on the vulnerable code.

The solution is to have govulncheck run on source files (./...) instead of the built binary in binary mode. This way, govulncheck can find the source code line numbers (location) and include it in the SARIF, making GitHub Code Scanning accept it.

Thank you for digging into this and that explanation! ❀️

Relates #11209

Copy link
Member

@andyfeller andyfeller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that explanation, I'm happy to give this a go to see how the changes work versus any concerns I originally had with this mode.

run: |
make
go run golang.org/x/vuln/cmd/govulncheck@d1f380186385b4f64e00313f31743df8e4b89a77 -mode=binary -format sarif bin/gh > gh.sarif
go run golang.org/x/vuln/cmd/govulncheck@d1f380186385b4f64e00313f31743df8e4b89a77 -format sarif ./... > gh.sarif
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: Do you have any concerns about the other package main executables within the cli/cli code base being included in the scan?

I think this was my only concern previously but it isn't the end of the world especially with this failing.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question. I guess I don't have any problems with scanning that code also. If it becomes a problem, we could filter it out of the SARIF πŸ‘ As of now that code doesn't produce any alerts from running this on my machine.

@BagToad BagToad merged commit 1b083c2 into trunk Aug 11, 2025
11 checks passed
@BagToad BagToad deleted the kw/fix-govulncheck-sarif-upload branch August 11, 2025 21:18
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Aug 22, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [cli/cli](https://github.com/cli/cli) | minor | `v2.76.2` -> `v2.78.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>cli/cli (cli/cli)</summary>

### [`v2.78.0`](https://github.com/cli/cli/releases/tag/v2.78.0): GitHub CLI 2.78.0

[Compare Source](cli/cli@v2.77.0...v2.78.0)

#### ℹ️ Note

This release was cut primarily to resolve a Linux package distribution issue. We recommend reviewing [the v2.77.0 release notes](https://github.com/cli/cli/releases/tag/v2.77.0) for the complete set of latest features and fixes.

#### What's Changed

##### ✨ Features

- Add `--force` flag to `gh run cancel` by [@&#8203;ankddev](https://github.com/ankddev) in [#&#8203;11513](cli/cli#11513)

##### πŸ› Fixes

- Fix failing to release Linux packages (affected v2.77.0). See [v2.77.0](https://github.com/cli/cli/releases/tag/v2.77.0) for more information.

**Full Changelog**: <cli/cli@v2.77.0...v2.78.0>

### [`v2.77.0`](https://github.com/cli/cli/releases/tag/v2.77.0): GitHub CLI 2.77.0

[Compare Source](cli/cli@v2.76.2...v2.77.0)

#### ⚠️ Incomplete Release

The v2.77.0 release experienced a failure publishing to our official Linux repos. This is resolved in [v2.78.0](https://github.com/cli/cli/releases/tag/v2.78.0), so we recommend using that release instead.

#### What's Changed

##### ✨ Features

- Report that v1 classic projects are detected on GHES 3.16.x or older by [@&#8203;andyfeller](https://github.com/andyfeller) in [#&#8203;11491](cli/cli#11491)
- Display v2 projects in `gh issue view` by [@&#8203;andyfeller](https://github.com/andyfeller) in [#&#8203;11496](cli/cli#11496)
- View v2 projects in `gh pr view` output by [@&#8203;andyfeller](https://github.com/andyfeller) in [#&#8203;11497](cli/cli#11497)
- Ensure users can see v2 projects when viewing issues and MRs, avoid v1 projects on GHES 3.17 and newer by [@&#8203;andyfeller](https://github.com/andyfeller) in [#&#8203;11514](cli/cli#11514)

##### πŸ› Fixes

- fix error for ErrReleaseNotFound when fetching ref by [@&#8203;ejahnGithub](https://github.com/ejahnGithub) in [#&#8203;11451](cli/cli#11451)
- add test for FetchRefSHA by [@&#8203;ejahnGithub](https://github.com/ejahnGithub) in [#&#8203;11481](cli/cli#11481)
- Fix `gh repo delete --yes` safety issue when no repository argument provided by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;11536](cli/cli#11536)

##### πŸ“š Docs & Chores

- Improve spam detection evals by [@&#8203;babakks](https://github.com/babakks) in [#&#8203;11419](cli/cli#11419)
- Fix `help wanted` label regexp in CI automation by [@&#8203;babakks](https://github.com/babakks) in [#&#8203;11423](cli/cli#11423)
- Update spam detection to comment on and close issue by [@&#8203;andyfeller](https://github.com/andyfeller) in [#&#8203;11435](cli/cli#11435)
- Adding a note to `gh search` docs to explain the usage of `--` to exclude certain results by [@&#8203;Sukhpreet-s](https://github.com/Sukhpreet-s) in [#&#8203;11162](cli/cli#11162)
- Update issue triage guidelines and label usage by [@&#8203;BagToad](https://github.com/BagToad) in [#&#8203;11454](cli/cli#11454)
- Reorganize installation docs by [@&#8203;andyfeller](https://github.com/andyfeller) in [#&#8203;11473](cli/cli#11473)
- Update govulncheck workflow to scan source code by [@&#8203;BagToad](https://github.com/BagToad) in [#&#8203;11482](cli/cli#11482)
- Hidden trusted root flag for release verify by [@&#8203;ejahnGithub](https://github.com/ejahnGithub) in [#&#8203;11511](cli/cli#11511)

##### :dependabot: Dependencies

- Regenerate third-party licenses on trunk pushes by [@&#8203;andyfeller](https://github.com/andyfeller) in [#&#8203;11370](cli/cli#11370)
- Update third-party license versions by [@&#8203;BagToad](https://github.com/BagToad) in [#&#8203;11557](cli/cli#11557)
- Bump Go to 1.24.6 by [@&#8203;github-actions](https://github.com/github-actions)\[bot] in [#&#8203;11467](cli/cli#11467)
- chore(deps): bump github.com/spf13/pflag from 1.0.6 to 1.0.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;11319](cli/cli#11319)
- chore(deps): bump actions/download-artifact from 4 to 5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;11458](cli/cli#11458)
- chore(deps): bump actions/checkout from 4 to 5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;11490](cli/cli#11490)
- chore(deps): bump github.com/yuin/goldmark from 1.7.12 to 1.7.13 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;11368](cli/cli#11368)
- Bump google.golang.org/grpc & other required dependencies by [@&#8203;BagToad](https://github.com/BagToad) in [#&#8203;11510](cli/cli#11510)
- chore(deps): bump google.golang.org/grpc from 1.73.0 to 1.74.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;11367](cli/cli#11367)
- chore(deps): bump github.com/cli/go-gh/v2 from 2.12.1 to 2.12.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;11537](cli/cli#11537)
- chore(deps): bump github.com/go-viper/mapstructure/v2 from 2.3.0 to 2.4.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;11556](cli/cli#11556)

#### New Contributors

- [@&#8203;Sukhpreet-s](https://github.com/Sukhpreet-s) made their first contribution in [#&#8203;11162](cli/cli#11162)
- [@&#8203;Copilot](https://github.com/Copilot) made their first contribution in [#&#8203;11536](cli/cli#11536)

**Full Changelog**: <cli/cli@v2.76.2...v2.77.0>

</details>

---

### Configuration

πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

β™» **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

πŸ”• **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS44Mi4xIiwidXBkYXRlZEluVmVyIjoiNDEuODIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants