Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GC25 Recap: The Code You Reviewed is Not the Co...
Search
mazrean
October 17, 2025
Programming
0
180
GC25 Recap: The Code You Reviewed is Not the Code You Built / #newt_gophercon_tour
mazrean
October 17, 2025
Tweet
Share
More Decks by mazrean
See All by mazrean
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
170
KessokuのDIにおけるgoroutineスケジューリング / golang.tokyo #41
mazrean
0
180
作って理解するGOCACHEPROG / Go Conference 2025(Workshop)
mazrean
0
200
実用的なGOCACHEPROG実装をするために / golang.tokyo #40
mazrean
1
470
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
300
テンプレートエンジンとして使うPHP / phponshu #4
mazrean
1
370
型付きで行うVSCode拡張機能開発 / VSCode Meetup #31
mazrean
0
810
multipart/form-dataの省メモリパース / Go Conference 2024 Pre Party #gocon24_preparty
mazrean
0
1.1k
インターフェースのラッパーを作る際の落とし穴 / Go Conference mini 2023
mazrean
0
2.1k
Other Decks in Programming
See All in Programming
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
220
[堅牢.py #1] テストを書かない研究者に送る、最初にテストを書く実験コード入門 / Let's start your ML project by writing tests
shunk031
12
7k
CSC305 Lecture 17
javiergs
PRO
0
280
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
750
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
1.4k
TypeScript 5.9 で使えるようになった import defer でパフォーマンス最適化を実現する
bicstone
1
1.1k
俺流レスポンシブコーディング 2025
tak_dcxi
13
8k
Level up your Gemini CLI - D&D Style!
palladius
1
180
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
110
AWS CDKの推しポイントN選
akihisaikeda
1
240
ゲームの物理 剛体編
fadis
0
200
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
150
Featured
See All Featured
Thoughts on Productivity
jonyablonski
73
5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Six Lessons from altMBA
skipperchong
29
4.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
4 Signs Your Business is Dying
shpigford
186
22k
Optimizing for Happiness
mojombo
379
70k
How to Ace a Technical Interview
jacobian
280
24k
Building Applications with DynamoDB
mza
96
6.8k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Practical Orchestrator
shlominoach
190
11k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Navigating Team Friction
lara
191
16k
Transcript
GC25 Recap: The Code You Reviewed is Not the Code
You Built @mazrean GopherCon Tour 2025 報告会
mazrean ▪ Goでツール等を作っている • SQL Builder GenORM • DIツールKessoku ▪
SRE @DeNA @mazrean22 マズリーン 2
Recapするセッション 3
スライド未公開セッションのRecap • 発表動画公開までは内容確認できない • メモ・記憶ベースのRecap ◦ 多少流れに差がある可能性があります
目次 1 Goにおけるサプライチェーン攻撃 2 capability解析ツールcapslock 3 capslockによるサプライチェーン攻撃対策 4 まとめ
目次 1 Goにおけるサプライチェーン攻撃 2 capability解析ツールcapslock 3 capslockによるサプライチェーン攻撃対策 4 まとめ
boltdbでのサプライチェーン攻撃 ▪ タイポスクワッティング攻撃 • パッケージのtypoを利用した攻撃 ▪ 3年以上潜伏 • Go Module
Proxyを悪用 7 github.com/boltdb-go/bolt github.com/boltdb/bolt
Go Module Proxy Goのモジュール をキャッシュ するプロキシ ▪ go.mod・コードなどをキャッシュ ▪ 依存関係の消失対策となる
8
潜伏できた理由 1. 攻撃コードにGitタグを設定 2. go get実行 • Go Module Proxyで攻撃コードをキャッシュ
3. 無害コードにGitタグを貼り替え → リポジトリ上 は無害 9
The Code You Reviewed is Not the Code You Built
レビューしたコードは ビルドされるコードとは限らない
目次 1 Goにおけるサプライチェーン攻撃 2 capability解析ツール capslock 3 capslockによるサプライチェーン攻撃対策 4 まとめ
capability解析ツールcapslock コードの行う特権的操作を解析するツール ▪ コードを静的解析 ▪ 行う特権的操作(capability)を特定 12 https://github.com/google/capslock
capability パッケージ の行う特権的操作 ▪ 以下の12種類が検出の対象 13 CAPABILITY_FILES CAPABILITY_NETWORK CAPABILITY_RUNTIME CAPABILITY_CGO
CAPABILITY_EXEC CAPABILITY_READ_SYSTEM_STATE CAPABILITY_MODIFY_SYSTEM_STATE CAPABILITY_OPERATING_SYSTEM CAPABILITY_SYSTEM_CALLS CAPABILITY_UNSAFE_POINTER CAPABILITY_REFLECT CAPABILITY_ARBITRARY_EXECUTION
capslockの仕組み ▪ コールグラフ を推移的に解析 • 外部ライブラリも含む ▪ 特定の標準ライブラリ 関数の呼び出し検出 14
目次 1 Goにおけるサプライチェーン攻撃 2 capability解析ツールcapslock 3 capslockによるサプライチェーン攻撃対策 4 まとめ
capabilityでのサプライチェーン攻撃対策 ▪ パッケージの役割とcapabilityは関連 • ロガーでネットワークアクセスはおかしい ▪ capabilityはほぼ変化しない • 3%程度の変更でのみ変化 →
capabilityの変化は怪しい 16
capability比較 以下の2つの方法で比較可能 ▪ capslock-git-diffコマンド ▪ deps.dev 17
capability比較: capslock-git-diffコマンド コミット間 のcapability比較 ▪ CIで回せる ▪ PRコメントを行うことで攻撃に気づける 18
capability比較: deps.dev パッケージバージョン間 のcapability比較 ▪ パッケージ内でcapability増減を表示 ▪ パッケージ更新時に確認 19
注意点 ▪ ビルドタグで出しわけが行われる可能性 → 開発・本番環境 の両環境でチェック必要 ▪ 確実に問題が検出できるわけではない • 既に使っているcapabilityで攻撃される可能性
• あくまでも他手段の補完 20
目次 1 Goにおけるサプライチェーン攻撃 2 capability解析ツールcapslock 3 capslockによるサプライチェーン攻撃対策 4 まとめ
まとめ ▪ Go Module Proxyを利用した攻撃が存在 • リポジトリのコードとキャッシュに差が発生 • コード確認では不十分 ▪
capslockでcapabilityの確認ができる ▪ capabilityの変化は怪しい • ほぼ変化しない ▪ capslock-git-diff・deps.devで比較可能 22