Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go パッケージのサプライチェーン攻撃を防ぐ CI を作ってみた #sendaigo

Avatar for 弁護士ドットコム 弁護士ドットコム
February 20, 2026
140

Go パッケージのサプライチェーン攻撃を防ぐ CI を作ってみた #sendaigo

2026年2月21日(土)「Go Concerence mini 2026 in Sendai」における、クラウドサインのエンジニア筒井の登壇資料です。

Go パッケージのサプライチェーン攻撃を防ぐ CI を作ってみた
https://sendaigo.jp/

■ 弁護士ドットコム株式会社プロダクト組織について
https://speakerdeck.com/bengo4com/introduction-for-creators

■ 採用情報はこちら
https://hrmos.co/pages/bengo4/jobs

■ テックブログ:弁護士ドットコム Creators’ blog
https://creators.bengo4.com/

■ X(Twitter):弁護士ドットコム CREATOR'S
https://x.com/bengo4_creators

Avatar for 弁護士ドットコム

弁護士ドットコム

February 20, 2026
Tweet

More Decks by 弁護士ドットコム

Transcript

  1. © 2026 Bengo4.com, inc. 自己紹介 筒井 海人 Kaito Tsutsui バックエンドエンジニア

    @クラウドサイン 弁護士ドットコム株式会社 25年新卒 X: @ktsu2i
  2. © 2026 Bengo4.com, inc. 攻撃手法 typosquatting: ユーザーのタイプミスを狙 い、悪意のあるパッケージを使用させる攻撃 slopsquatting: AI

    のハルシネーションを狙い、悪意のあるパッケージを使用させる攻撃 5 ⭕ ❌ github.com/boltdb/bolt github.com/boltdb-go/bolt github.com/gorilla/securecookie github.com/gorrilla/securecookie github.com/google/uuid github.com/gooqle/uuid github.com/qiniu/qmgo github.com/qiniiu/qmgo
  3. © 2026 Bengo4.com, inc. capslock > Capslock is a capability

    analysis CLI for Go packages that informs users of which privileged operations a given package can access. - GitHub: https://github.com/google/capslock capslock は Go パッケージ向けのケイパビリティ分析 CLI ツールで、どの特権的な標準パッケージの操作にアクセスし得る かを検知します。 capslock で検知できる特権的操作の一部: 7 CAPABILITY_FILES ファイルシステム操作 os.Open(),… CAPABILITY_MODIFY_SYSTEM_STATE システム状態の変更 os.Chmod(), … CAPABILITY_NETWORK ネットワーク通信 http.Get(), … CAPABILITY_OEPRATING_SYSTEM OSの一般的な機能 os.Exit(), … CAPABILITY_READ_SYSTEM_STATE システム状態の読み取り os.Getenv(), …
  4. © 2026 Bengo4.com, inc. capslock -packages=./... -output=json main() → Gorm

    → PostgreSQL ドライバ → pgx → pgcon → pgpassfile → os.Open() CAPABLITY_FILES が検出された 9
  5. © 2026 Bengo4.com, inc. Capability の差分を出力してみた 新しいパッケージを使った Pull Request を作成したとき

    に、main ブランチとの特権的操作の差分を表示するように した。 gorilla/securecookie ではなく gorrilla/securecookie を インポートしたとき、本来必要ないはずの CAPABILITY_NETWORK と CAPABILITY_FILES が検 出された。 参考: What are your Go dependecies capable of? → パッケージによって、意図しない Capability が増えてい るかの判断が難しい...😢 10
  6. © 2026 Bengo4.com, inc. capslock-git-diff main . 11 uuidgen.init() →

    uuid.init() → sql/driver.init() → reflect.TypeFor() CAPABILITY_REFLECT が検出された capslock との違い • ブランチやコミットハッシュも渡せる • 特権的操作の差分だけ表示する • text 形式のみ → これを Claude Code Action と組み合わせてみる
  7. © 2026 Bengo4.com, inc. capslock-git-diff <base.sha> <head.sha> > out.txt コミットハッシュで比較させて、出力結果を

    Claude Code Action に読み込ませる。 → 検出された Capability を元にセキュリティリスクを 診断してくれるようになった 🎉 capslock + Claude Code Action 12
  8. © 2026 Bengo4.com, inc. まとめ 13 • capslock はパッケージの振る舞いの経路を検知してくれるので、様々な攻撃手法にも対応できる •

    悪意のあるパッケージかどうか AI が自動的に判断してくれるようになった • プルリクエストのレビュー段階で気づけるので、より安全に開発できるようになった • 新規パッケージだけしか解析していないので、既存パッケージのバージョン更新などでも解析できるようにしたい
  9. © 2026 Bengo4.com, inc. • https://github.com/google/capslock • https://medium.com/eureka-engineering/what-are-your-go-dependencies-capable-of-an-introduction-to-capslo ck-b757833c9847 •

    https://speakerdeck.com/mazrean/number-newt-gophercon-tour • https://speakerdeck.com/kuro_kurorrr/understanding-module-through-the-lens-of-supply-chain-attacks • https://www.cisa.gov/news-events/alerts/2025/09/23/widespread-supply-chain-compromise-impacting-npm-ec osystem References 15