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
7
2k
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
2026年1月9日〜10日に開催されたBuriKaigiの登壇資料
ikechi
January 07, 2026
Tweet
Share
More Decks by ikechi
See All by ikechi
VibeCodingで決済機能を改修〜失敗から学んだこと〜
penpeen
0
70
議事録の要点整理を自動化! サーバレス Bot 構築術
penpeen
3
2.3k
NotebookLMを使ってインプット効率を爆上げしよう
penpeen
1
81
オンボーディング_AIで決済機能をスピード改修した.pptx.pdf
penpeen
0
46
Other Decks in Programming
See All in Programming
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
160
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.5k
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
170
Basic Architectures
denyspoltorak
0
180
CSC307 Lecture 04
javiergs
PRO
0
630
SQL Server 2025 LT
odashinsuke
0
140
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
180
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1.1k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
1.1k
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
7
4.3k
AtCoder Conference 2025
shindannin
0
920
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
240
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
190
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
120
Facilitating Awesome Meetings
lara
57
6.7k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
AI: The stuff that nobody shows you
jnunemaker
PRO
2
160
Discover your Explorer Soul
emna__ayadi
2
1k
Are puppies a ranking factor?
jonoalderson
0
2.6k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.5k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
How Software Deployment tools have changed in the past 20 years
geshan
0
31k
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