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
mazrean
October 17, 2025
Programming
670
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
320
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
230
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
430
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
680
Go Proposal Weekly Digestの作り方 / Go Connect #11
mazrean
0
360
WebComponentとSSGで作る 個人開発Webフロントエンド / TechTalk #69
mazrean
0
280
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
830
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
640
KessokuのDIにおけるgoroutineスケジューリング / golang.tokyo #41
mazrean
0
750
Other Decks in Programming
See All in Programming
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
120
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
590
Event is what happens
moro
2
1.6k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
420
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
1.1k
Seven New Principles of Software Engineering
yegor256
0
320
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
310
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
140
Kotlinの15年とServer-Side Kotlin
n_takehata
1
170
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
840
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
1
200
ChromeでローカルLLM
ryu1013
0
160
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
630
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Building an army of robots
kneath
307
47k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
A designer walks into a library…
pauljervisheath
211
25k
Fireside Chat
paigeccino
43
4.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
860
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