Skip to content

GoのプロジェクトはDependabotよりgovulncheckを使うほうがいい

Filippoの発言より

Dependabot’s implementation of Go modules continues to be poor.

FWIW, I recommend Go projects just turn it off, run govulncheck in a scheduled GitHub Action for security updates, and otherwise update dependencies manually when it makes sense in their release cycle.

続き。

govulncheck does a much better job avoiding false positives. This is not just a convenience: it lets you actually triage the true positives, which is better for security.

Non-security updates are actually safer to land after they baked in the open for a while. Most supply chain attacks last ~days.

雑に訳すと、

  • Dependabotは脆弱性の影響がない場合でも報告してくるので偽陽性の確率が高い
  • サプライチェーン攻撃は数日続くので、脆弱性以外のアップデートは経過観察したほうがいい

なのでDependabotを無効にして govulncheck をスケジュールタスクで実行するほうが望ましい、脆弱性以外のアップデートはリリースサイクルに合わせてアップデートしよう、ということらしい。理解はするが、スケジュールタスクは一定期間で止められてしまうし、面倒なんだよなあ、とは思う。

面倒だなと思って調べたらgolang/govulncheck-actionがあった。これならいいかも。

いつ実行するかについてはtailscale/tailscale/.github/workflows/govulncheck.ymlが参考になる。

on:
schedule:
- cron: "0 12 * * *" # 8am EST / 10am PST / 12pm UTC
workflow_dispatch: # allow manual trigger for testing
pull_request:
paths:
- ".github/workflows/govulncheck.yml"