Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GC25 Recap: The Code You Reviewed is Not the Co...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mazrean
October 17, 2025
Programming
650
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GC25 Recap: The Code You Reviewed is Not the Code You Built / #newt_gophercon_tour
mazrean
October 17, 2025
More Decks by mazrean
See All by mazrean
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
290
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
190
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
400
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
640
Go Proposal Weekly Digestの作り方 / Go Connect #11
mazrean
0
320
WebComponentとSSGで作る 個人開発Webフロントエンド / TechTalk #69
mazrean
0
260
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
800
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
610
KessokuのDIにおけるgoroutineスケジューリング / golang.tokyo #41
mazrean
0
720
Other Decks in Programming
See All in Programming
setup-vp GitLab対応の裏側
naokihaba
0
150
SREの越境 / SRE Collaboration
y0hgi
2
300
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
440
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
340
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
270
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.2k
Workers Cache を知る
syumai
0
330
Heart of Swift Concurrency
koher
0
1.2k
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
620
R8 の設定見直しでアプリサイズ削減
andpad
0
140
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
520
パーソナライズPodcastを作った話
repunit11
0
120
Featured
See All Featured
Mind Mapping
helmedeiros
1
390
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
380
Designing Powerful Visuals for Engaging Learning
tmiket
1
590
Designing for Timeless Needs
cassininazir
1
520
Done Done
chrislema
187
17k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.1k
Leo the Paperboy
mayatellez
10
2.3k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Evolving SEO for Evolving Search Engines
ryanjones
0
310
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
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