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
MCP Security Best Practices に見るセキュリティリスクとmodelc...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
dak2
November 28, 2025
0
22
MCP Security Best Practices に見るセキュリティリスクとmodelcontextprotocol/ruby-sdk の authorization の現在地
TokyuRuby会議16で発表したLTスライド
https://tokyurb.connpass.com/event/375027/
dak2
November 28, 2025
Tweet
Share
More Decks by dak2
See All by dak2
自然言語で ActiveRecord を操作する試み
dak2
0
33
DoD x RBS
dak2
0
2
Featured
See All Featured
Everyday Curiosity
cassininazir
0
130
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
110
Making Projects Easy
brettharned
120
6.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.9k
Prompt Engineering for Job Search
mfonobong
0
160
Building an army of robots
kneath
306
46k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Building the Perfect Custom Keyboard
takai
2
680
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Transcript
MCP Security Best Practices に見るセキュリティ リスクとmodelcontextprotocol/ruby-sdk の authorization の現在地 TokyuRubyKaigi#16
2025/11/29 神山大智 @_dak2_
目次 • Security Best Practices • 主要な5つのリスク • 3つの対策方針 •
ruby-sdk の authorization
hogehoge
自己紹介
自己紹介 Daichi Kamiyama (@dak2) • 株式会社タイミー • バックエンドエンジニア • RailsTokyo
の運営をしています • `modelcontextprotocol/ruby-sdk` にコ ミットしてます • 最近 YAPC::Fukuoka に行ってきました
MCP Security Best Practices
MCP Security Best Practices Anthropic が定めている MCP の Security Best
Practices https://modelcontextprotocol.io/specification/draft/basic/security _best_practices
主要な5つのリスク
1. 「混乱した代理人」問題 (Confused Deputy) 2. トークンパススルー (Token Passthrough) 3. セッションハイジャック
(Session Hijacking) 4. ローカルサーバーによる侵害 (Local Server Compromise) 5. 過剰なスコープ (Scope Maximization) 主要な5つのリスク
「混乱した代理人」問題 (Confused Deputy)
MCP 認証後に Cookie が攻撃者に利用され、認証を skip されてしまい、MCP サーバーへ勝手にアクセス できてしまう https://modelcontextprotocol.io/specification/draft/basic/security _best_practices#confused-deputy-problem
「混乱した代理人」問題 (Confused Deputy)
トークンパススルー (Token Passthrough)
MCP サーバーがトークンを適切な検証をせずに受け入 れてしまい、攻撃者が不正にアクセスできてしまう https://modelcontextprotocol.io/specification/draft/basic/security _best_practices#token-passthrough トークンパススルー (Token Passthrough)
セッションハイジャック (Session Hijacking)
サーバーから返却されたセッションを盗用され、攻撃 者がなりすましアクセスできてしまう https://modelcontextprotocol.io/specification/draft/basic/security _best_practices#session-hijacking セッションハイジャック (Session Hijacking)
ローカルサーバーによる侵害 (Local Server Compromise)
悪意の有無に関わらず、ローカルで起動している MCP サーバーが攻撃の踏み台にされてしまう https://modelcontextprotocol.io/specification/draft/basic/security _best_practices#local-mcp-server-compromise ローカルサーバーによる侵害 (Local Server Compromise)
過剰なスコープ (Scope Maximization)
MCP サーバーが過剰な権限を持ってしまい、攻撃者が 不正にシステムリソースへアクセスできてしまう https://modelcontextprotocol.io/specification/draft/basic/security _best_practices#scope-minimization 過剰なスコープ (Scope Maximization)
対策
3つの基本方針
• 検証(Verify) • 同意(Consent) • 最小化(Minimize) 3つの基本方針
検証(Verify)
• Redirect URI の完全一致: ◦ `start_with?` や正規表現ではなく `==` で検証する ◦
ワイルドカードを使わない • State パラメータの検証: ◦ CSRF対策として、認証リクエストごとに `SecureRandom.urlsafe_base64` 等で生成し、検証する • トークンのAudience確認: ◦ 送られてきたトークンが「自分(このMCPサーバー)」宛の ものか必ず確認する(Token Passthrough対策) 検証(Verify)- 信頼せず、常に確認する -
同意(Consent)
• クライアントごとの同意 (Per-Client Consent): ◦ クライアントAで認証したCookieを、クライアントBの認証 に使い回さない ◦ client_id ごとに明示的な同意画面を挟む
• 実行前の確認 (Human-in-the-loop): ◦ 特にローカルサーバーの場合、重要な操作(ファイルの書 き込み、外部通信)の前にユーザー確認を求める ◦ sampling 機能等を利用し、LLMが勝手に実行するのを 防ぐ 同意(Consent)- 安易に許可しない -
最小化(Minimize)
• スコープの細分化: ◦ `filesystem:read:*` ではなく `filesystem:read:/home/user/project` に限定する ◦ `admin` のような包括的な権限を避ける
• プログレッシブな権限昇格: ◦ 最初からフル権限を要求せず、必要になったタイミ ングで追加のスコープを要求する (Step-up auth) 最小化(Minimize)- 必要最小限の意識 -
modelcontextprotocol/ruby-sdk の authorization
実装中!! https://github.com/modelcontextprotocol/ruby- sdk/pull/38 modelcontextprotocol/ruby-sdk の authorization
すでに Authorization の仕様は前に進 んでいる
2025/11/29現在は、2025-06-18 版の仕様が最新 https://github.com/modelcontextprotocol/model contextprotocol/blob/main/docs/specification/2 025-06-18/basic/authorization.mdx すでに Authorization の仕様は前に進んでいる
Authorization の変更点
• Resource Indicators for OAuth 2.0 [RFC 8707] の実装が必須化 •
MCP サーバーは OAuth 2.1 resource server とし て振る舞うことが明確化 • etc… Authorization の変更点(一例)
追従していくしかない
まとめ
• Verify: 入力値(URI, Token)を疑い、安全なIDを 使う • Consent: クライアントIDごとに同意を取り、勝手 な流用を防ぐ •
Minimize: ツールができることを絞り込み、影響範 囲を限定する MCP のセキュリティリスクに対する基本方針
• 現在実装中 • 仕様はすでに前に進んでいるので、今後のアップ デートを注視していきたい `modelcontextprotocol/ruby-sdk` の authorization の現在地
Thank you!!!