Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

© 2026 Bengo4.com, inc. 自己紹介 筒井 海人 Kaito Tsutsui バックエンドエンジニア @クラウドサイン 弁護士ドットコム株式会社 25年新卒 X: @ktsu2i

Slide 3

Slide 3 text

© 2026 Bengo4.com, inc. 昨今話題のサプライチェーン攻撃 https://www.cisa.gov/news-events/alerts/2025/09/23/widespread-supply-chain-compromise-impacting-npm-ecosystem 3

Slide 4

Slide 4 text

© 2026 Bengo4.com, inc. 昨今話題のサプライチェーン攻撃 https://speakerdeck.com/kuro_kurorrr/understanding-module-through-the-lens-of-supply-chain-attacks 4

Slide 5

Slide 5 text

© 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

Slide 6

Slide 6 text

© 2026 Bengo4.com, inc. capslock 6 https://github.com/google/capslock

Slide 7

Slide 7 text

© 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(), …

Slide 8

Slide 8 text

© 2026 Bengo4.com, inc. capslock -packages=./... 8

Slide 9

Slide 9 text

© 2026 Bengo4.com, inc. capslock -packages=./... -output=json main() → Gorm → PostgreSQL ドライバ → pgx → pgcon → pgpassfile → os.Open() CAPABLITY_FILES が検出された 9

Slide 10

Slide 10 text

© 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

Slide 11

Slide 11 text

© 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 と組み合わせてみる

Slide 12

Slide 12 text

© 2026 Bengo4.com, inc. capslock-git-diff > out.txt コミットハッシュで比較させて、出力結果を Claude Code Action に読み込ませる。 → 検出された Capability を元にセキュリティリスクを 診断してくれるようになった 🎉 capslock + Claude Code Action 12

Slide 13

Slide 13 text

© 2026 Bengo4.com, inc. まとめ 13 ● capslock はパッケージの振る舞いの経路を検知してくれるので、様々な攻撃手法にも対応できる ● 悪意のあるパッケージかどうか AI が自動的に判断してくれるようになった ● プルリクエストのレビュー段階で気づけるので、より安全に開発できるようになった ● 新規パッケージだけしか解析していないので、既存パッケージのバージョン更新などでも解析できるようにしたい

Slide 14

Slide 14 text

© 2026 Bengo4.com, inc. We are Hiring

Slide 15

Slide 15 text

© 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