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
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
Search
ikechi
January 07, 2026
Programming
0
6
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
2026年1月9日〜10日に開催されたBuriKaigiの登壇資料
ikechi
January 07, 2026
Tweet
Share
More Decks by ikechi
See All by ikechi
VibeCodingで決済機能を改修〜失敗から学んだこと〜
penpeen
0
60
議事録の要点整理を自動化! サーバレス Bot 構築術
penpeen
3
2.3k
NotebookLMを使ってインプット効率を爆上げしよう
penpeen
1
71
オンボーディング_AIで決済機能をスピード改修した.pptx.pdf
penpeen
0
40
Other Decks in Programming
See All in Programming
Vibe codingでおすすめの言語と開発手法
uyuki234
0
150
AtCoder Conference 2025
shindannin
0
860
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
700
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
440
Deno Tunnel を使ってみた話
kamekyame
0
290
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
150
マスタデータ問題、マイクロサービスでどう解くか
kts
0
170
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
140
Developing static sites with Ruby
okuramasafumi
0
340
開発に寄りそう自動テストの実現
goyoki
2
1.7k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
200
ラッコキーワード サービス紹介資料
rakko
0
1.9M
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
990
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
110
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
180
Transcript
1 それ、本当に安全? ファイルアップロードで見落としがち なセキュリティリスクと対策 ~ 2026年01月10日 BuriKaigi ~
池上 寛登(ikechi) ⾃⼰紹介 SUZURI‧minne事業部 Web Engineer X: penpeenpen GitHub: PenPeen
3 • プロフィール画像 • 動画‧⾳声ファイル • CSV形式の⼀括登録機能 ファイルのアップロード機能について minne の画像アップロード機能
• 拡張⼦をチェックしているから⼤丈夫...! • Content-Typeを⾒てるから⼤丈夫...! 4 セキュリティ対策、⼤丈夫? 本当にそれだけで大丈夫かな?
サイバー攻撃は年々増加傾向... 引⽤: https://blog.checkpoint.com/research/a-closer-look-at-q3-2024-75-surge-in-cyber-attacks-worldwide/ • 2024年3Q 企業へのサイバー攻撃数は過去最⾼を記録(1,876件) • 2023年の同時期と⽐較して75%増加
1. ファイルアップロードに潜む脅威 2. 「危険なファイルアップロード」のデモ 3. セキュアな実装のベストプラクティス アジェンダ
ファイルアップロードに潜む脅威 7
8 ファイルアップロードに潜む脅威 MIME type spoofing Remote Code Execution (RCE) 蓄積型XSS
無制限ファイルアップロード攻撃 パストラバーサル攻撃 画像処理ライブラリの脆弱性悪用 ファイルインクルージョン攻撃 WebShell アップロード Polyglot File Attack メタデータインジェクション NULLバイト攻撃
• 概要: ブラウザがファイルの内容からMIMEタイプを推測する挙動 • 危険性: MIMEタイプを偽装した悪意のあるファイルがスクリプト として実⾏される可能性 9 MIME Sniffingによる脆弱性
• 概要: 攻撃者が任意のコードをサーバー上で実⾏できる脆弱性 • 危険性: 悪意あるコードの実⾏ データベース情報の窃取、システム破壊、侵⼊の踏み台利⽤ ※ 最も深刻な被害が⽣まれやすい 10
Remote Code Execution (RCE)
11 パストラバーサル攻撃 • 概要: 攻撃者が意図的に細⼯したファイル名やパスを使⽤し、想定 外の場所にファイルを保存させたり、システムの重要なファイル を上書きしたりする攻撃 • 危険性: 設定ファイルの改ざん、ファイル配置によるコード実⾏
12 画像処理ライブラリの脆弱性悪⽤ • 概要: 画像処理ライブラリ(ImageMagick、libpng…)の脆弱性を悪 ⽤した攻撃を⾏う。 • 危険性: サーバー上で任意のコードが実⾏される サービス拒否(DoS)
13 Polyglot File Attack • 概要: 複数のファイル形式として同時に解釈可能なファイルを作成 セキュリティチェックを回避する攻撃⼿法 • 危険性:
XSS、リモートコード実⾏、サーバー侵害
デモンストレーション 14
• Content-Typeを偽装して、HTMLをアップロード • ファイルを開くとスクリプトが実⾏ (XSS攻撃: Cookie / Sessionの漏洩) 15 MIME
Sniffing デモンストレーション Demonstration
16 RCE デモンストレーション Demonstration • ファイル名に任意のコマンドを埋め込みアップロード • コマンドが実⾏されてしまう(RCE)
17 パストラバーサル デモンストレーション Demonstration • ファイル名に「../../logo.png」のようなパス操作⽂字 列を含める • 意図したディレクトリの外にファイルが保存され、重 要なシステムファイルが上書きされてしまう
実装のベストプラクティス 18
• フロントエンドでできることは「補助的な対策」のみ • 根本対応にはサーバーサイドの対策が必須! 19 前提
• マジックバイトでのファイル検証 • 拡張⼦チェックは許可⽅式にする • 正規表現による検証は回避可能なパターンが⽣じやす いため、完全⼀致や、RFC標準仕様に準拠した検証 • ライブラリを⽤いて、ファイル名やMIMEタイプを安全 な形式に正規化‧サニタイズする
20 厳密な検証とサニタイゼーション
21 X-Content-Type-Options を指定する • ブラウザによる⾃動的なContent-Type推測を防⽌し、 サーバーが指定したContent-Typeを厳密に適⽤させる • 攻撃者がアップロードしたファイルを意図しない形式 として実⾏させる攻撃を防⽌する
22 ファイル配信⽤のドメインを分離する • ファイル配信を⾏うドメインを分離する • アプリケーションドメイン(google.com) • ファイル配信ドメイン(googleusercontent.com) • XSSなどの脆弱性が発⽣した場合でも、攻撃者がセッ
ションCookieや認証情報を窃取することが困難にな り、被害範囲を最⼩限に抑えられる
• ディレクトリでのスクリプト実⾏権限を無効化 • 画像処理ライブラリを最新に保つ • ウイルススキャンの実施 23 サーバー環境の保護
まとめ 24
適切なセキュリティ対策を⾏い 安⼼‧安全なシステム開発を、実現しよう! 25
脆弱性体験アプリケーションをGitHubで公開しています。 26 デモンストレーションコード
• The Web Application Hacker's Handbook • 体系的に学ぶ 安全なWebアプリケーションの作り⽅ 第2版
27 参考⽂献
ご静聴ありがとうございました 28 \\ エンジニア採⽤強化中!! ∕∕ 気になる⽅は登壇メンバーまで! @doskoi64 / @yukyan_p /
@penpeen