Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
mazrean
October 17, 2025
Programming
410
0
Share
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
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
230
Go Proposal Weekly Digestの作り方 / Go Connect #11
mazrean
0
91
WebComponentとSSGで作る 個人開発Webフロントエンド / TechTalk #69
mazrean
0
38
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
480
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
370
KessokuのDIにおけるgoroutineスケジューリング / golang.tokyo #41
mazrean
0
440
作って理解するGOCACHEPROG / Go Conference 2025(Workshop)
mazrean
0
450
実用的なGOCACHEPROG実装をするために / golang.tokyo #40
mazrean
1
680
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
650
Other Decks in Programming
See All in Programming
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.8k
感情を設計する
ichimichi
5
1.4k
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
3
520
年間50登壇、単著出版、雑誌寄稿、Podcast出演、YouTube、CM、カンファレンス主催……全部やってみたので面白さ等を比較してみよう / I’ve tried them all, so let’s compare how interesting they are.
nrslib
4
770
PDI: Como Alavancar Sua Carreira e Seu Negócio
marcelgsantos
0
110
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
300
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
6.2k
Rethinking API Platform Filters
vinceamstoutz
0
11k
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
650
存在論的プログラミング: 時間と存在を記述する
koriym
5
860
Swift Concurrency Type System
inamiy
0
430
Nuxt Server Components
wattanx
0
260
Featured
See All Featured
It's Worth the Effort
3n
188
29k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
690
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
250
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
350
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Believing is Seeing
oripsolob
1
110
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
150
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Marketing to machines
jonoalderson
1
5.2k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.8k
The Spectacular Lies of Maps
axbom
PRO
1
690
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