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
mazrean
October 17, 2025
Programming
0
150
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
130
KessokuのDIにおけるgoroutineスケジューリング / golang.tokyo #41
mazrean
0
150
作って理解するGOCACHEPROG / Go Conference 2025(Workshop)
mazrean
0
150
実用的なGOCACHEPROG実装をするために / golang.tokyo #40
mazrean
1
440
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
270
テンプレートエンジンとして使うPHP / phponshu #4
mazrean
1
320
型付きで行うVSCode拡張機能開発 / VSCode Meetup #31
mazrean
0
780
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
Bakuraku E2E Scenario Test System Architecture #bakuraku_qa_study
teyamagu
PRO
0
750
知られているようで知られていない JavaScriptの仕様 4選
syumai
0
600
Honoを技術選定したAI要件定義プラットフォームAcsimでの意思決定
codenote
0
230
組織もソフトウェアも難しく考えない、もっとシンプルな考え方で設計する #phpconfuk
o0h
PRO
10
4.4k
Rails Girls Sapporo 2ndの裏側―準備の日々から見えた、私が得たもの / SAPPORO ENGINEER BASE #11
lemonade_37
2
160
AIを駆使して新しい技術を効率的に理解する方法
nogu66
1
630
AI POSにおけるLLM Observability基盤の導入 ― サイバーエージェントDXインターン成果報告
hekuchan
0
600
オフライン対応!Flutterアプリに全文検索エンジンを実装する @FlutterKaigi2025
itsmedreamwalker
2
210
DartASTとその活用
sotaatos
2
130
Querying Design System デザインシステムの意思決定を支える構造検索
ikumatadokoro
1
1.1k
CloudNative Days Winter 2025: 一週間で作る低レイヤコンテナランタイム
ternbusty
6
1.2k
Web エンジニアが JavaScript で AI Agent を作る / JSConf JP 2025 sponsor session
izumin5210
4
1.7k
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.6k
4 Signs Your Business is Dying
shpigford
186
22k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Fireside Chat
paigeccino
41
3.7k
Code Review Best Practice
trishagee
72
19k
Building Applications with DynamoDB
mza
96
6.8k
Thoughts on Productivity
jonyablonski
73
4.9k
Being A Developer After 40
akosma
91
590k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Typedesign – Prime Four
hannesfritz
42
2.9k
Six Lessons from altMBA
skipperchong
29
4.1k
Done Done
chrislema
186
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