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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
yuki21
October 02, 2017
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
脆弱性について
社内勉強会用資料
yuki21
October 02, 2017
More Decks by yuki21
See All by yuki21
労務ドメインを快適に開発する方法 / How to Comfortably Develop in the Labor Domain
yuki21
1
470
GitHubのコマンドパレット使ってますか?
yuki21
0
1.7k
キャッシュを利用してRailsアプリの処理を高速化する
yuki21
0
120
Next.js & ElectronでTodoアプリを作る
yuki21
0
740
gRPCを完璧に理解する
yuki21
0
52
RSpec -基本の基-
yuki21
0
57
Committeeを導入してみた
yuki21
0
150
マイクロサービスとモノリスとKBR
yuki21
0
53
ActiveModelSerializersについて
yuki21
0
44
Other Decks in Technology
See All in Technology
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
110
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
770
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
0
1.7k
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
380
How Timee Delivers Day 1 Production Ready LLM Features
tomoyks
0
120
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
290
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
760
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
210
Agentic Web
dynamis
1
200
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
150
LLMと共に進化するプロセスを目指して
ymatsuwitter
12
4k
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
4
1.4k
Featured
See All Featured
Scaling GitHub
holman
464
140k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
How STYLIGHT went responsive
nonsquared
100
6.2k
A Modern Web Designer's Workflow
chriscoyier
698
190k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
380
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
560
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Transcript
脆弱性について
脆弱性とは 脆弱性とは、本来操作できないはずの操作(権限のないユーザが 権限を超えた操作を実行するなど)ができてしまったり、見える べきでない情報が第三者に見えてしまうような不具合のことをい います。
脆弱性によって受ける影響 脆弱性を放置していると、攻撃を受けて以下のような影響が出る 可能性があります。 本物サイト上への偽情報の表示 データの改ざん、消去 サーバ内ファイルの漏洩 個人情報の漏洩 Cookie情報の漏洩
攻撃によりこれらの事象が起きた場合、 サイトの停止やユーザ・クライアントへの賠償などが発生し、 多大な被害を被ることとなります。 また、このような直接的な影響だけでなく、 会社の信用問題にも繋がるため注意が必要です。
脆弱性がうまれる原因 脆弱性ができる原因は様々ですが、例として以下が挙げられます アプリケーションの設計ミス セッション管理の不備や入力チェックの不備 プログラム実装上の不備 Webサーバの設定ミス 意図しないエラーコードの表示やアクセス制限の設定ミス パッチの未適用 既知の脆弱性への対応不足
脆弱性の種類 脆弱性の種類には、 SQLインジェクション クロスサイトスクリプティング クロスサイトリクエストフォージェリ OSコマンドインジェクション メールヘッダインジェクション ディレクトリトラバーサル など様々な物があります。 今回の研修では、SQLインジェクション、クロスサイトスクリプテ
ィング、クロスサイトリクエストフォージェリの3つについて解説 を行います。
SQLインジェクション SQLインジェクションとは、データベースと連動したWebサイト で、データベースへの問い合わせや操作を行うプログラムにパラ メータとしてSQL文の断片を与えることにより、データベースを改 ざんしたり不正に情報を入手する攻撃。また、そのような攻撃を 許してしまうプログラムの脆弱性のこと。 ‐IT用語辞典より引用
例えば、メールアドレスとパスワードが一致したときにログイン するというプログラムを想定したとき、 SELECT * FROM member_t WHERE email = 'email'
AND passwd = 'passwd'; というクエリを発行して、一致するレコードがあればそのユーザ としてログインを行います。
SQLインジェクションの脆弱性が存在している場合、このクエリの emailに
[email protected]
'; ‐‐ という値を入れると SELECT * FROM member_t WHERE
email = '
[email protected]
'; ‐‐' AND passwd = 'passwd'; となり、passwdが一致していないにも関わらずemailを
[email protected]
で登録しているユーザとしてログインできてしまい ました。 また、このようなSELECT文の後に、 DELETE FROM member_t; 等を入 力することでデータの改造や破壊もできてしまいます。
対策方法 入力のエスケープ パラメータ化クエリの利用 入力値をシングルクォーテーションで囲って直接クエリに入 れるのではなく、パラメータを介して実行を行う。 SELECT * FROM member_t WHERE
email = :email AND passwd = :passwd;
クロスサイトスクリプティング (XSS) クロスサイトスクリプティング(以下、XSS)とは、Webページの ブラウザ上で、攻撃者が任意のコードを実行し得るバグ、あるい はそれを用いた攻撃手法のことです。 XSSには大きく分けて 反射型XSS、持続型XSS、DOM Based XSS の3種類があります。
反射型XSS HTTPリクエスト中に含まれる攻撃コードがそのままWebページ上 で動作するXSSのことを指します。 検索フォームなど、リクエストのパラメータ中に含まれるscriptタ グがWebページ上で動作するものなどが挙げられます。 特定のクエリに対してのみ動作するXSSなので、攻撃者は何らかの 手段を用いて標的を特定のURLに誘導する必要があります。
持続型XSS HTTPリクエスト中に攻撃コードが含まれるか否かに関わらず、あ るWebページ上で持続的に動作するXSSのことを指します。 (掲示板などの投稿に含まれるscriptタグがそのまま動作する場合 など) 攻撃者が投稿したコードが持続的に動作しているので、攻撃者は 標的がそのページにアクセスするのを待てばいいだけとなり、反 射型XSSに比して攻撃のハードルは低くなります。
DOM Based XSS DOM Based XSSはJavaScriptのバグに起因するXSSのことを指しま す。 一般的な反射型および持続型XSSのほとんどは、Webアプリケーシ ョンがサーバ上でHTMLを生成する際に、攻撃者が指定した文字列 のエスケープが漏れていることが原因で発生します。
一方、DOM‐based XSSは、サーバ上でのHTMLの生成時には問題 はなく、ブラウザ上で動作するJavaScript上のコードに問題がある ために発生します。
対策方法 入力のエスケープ Cookieにhttponly属性を付与する X-XSS-Protection レスポンスヘッダーの使用 コンテンツセキュリティポリシー (CSP) の実装
Cookieにhttponly属性を付与する JavaScriptからCookieの値にアクセスを拒否できる。 これによりXSS脆弱があったとしてもCookieを取得される被害から 守られる。
X-XSS-Protection レスポンスヘッダーの使用 ブラウザに備えられているXSSフィルタ機能を有効にする。 フィルタ機能はデフォルトで有効だが、ユーザによって無効化さ れている場合に再度有効化を行う。 ただしこの機能は、リクエスト中に出現するXSSの攻撃コードらし い文字列がエスケープされずにページ中に出力された場合にのみ 動作するため、持続型XSSやDOM Based XSSに対しては効果がな
い。
コンテンツセキュリティポリシー (CSP) の実装 XSSなどの特定の種類の攻撃を検知し、影響を軽減するために追加 できるセキュリティレイヤー。 サーバから指定されたホワイトリストに載っているドメインのス クリプトのみ実行し、他のスクリプトはすべて無視するというよ うな設定を行える。 インラインスクリプトやHTML属性値のイベントハンドラ(onclick など)も無視する対象に含まれるため、既存システムに導入した
場合影響が大きい。
クロスサイトリクエストフォージェリ (CSRF) クロスサイトリクエストフォージェリ﴾以下、CSRF)とは、悪意の あるスクリプトやURLにアクセスさせることで、意図しないWebサ イト上の操作を行わせることができるバグ、あるいはそれを用い た攻撃手法のことを指します。
XSSとは異なり、正規ユーザが本来想定されている操作を行ったか のようにリクエストを発生させることができる(リクエストの偽 造:Request Forgery)のが特徴です。 CSRFによる代表的な被害としては、掲示板への意図しない書き込 みやショッピングサイトで買うつもりの無い商品の購入、パスワ ードの強制変更などが挙げられます。
対策方法 CSRFの対策としては、正しい画面遷移でリクエストが送信されて いるか確認を行うというのが一般的です。 その方法として、以下が挙げられます。 暗号化トークンの利用 入力フォームの最初にトークンを発行し、完了時にトークン の確認を行う。 Refererのチェック ページへの遷移元を確認する。 チャレンジレスポンスの利用
CAPTCHA(画像認証)やパスワードの再認証などを行う。
5. IVPでの対策 IVPのパッケージであるERSでは、脆弱性と成り得る文字について エスケープ処理が施されています。 それに加え、VEXというアプリケーション脆弱性検査ツールを導入 しており、脆弱性に対しての検査を行っています。 新規サイトオープン時、または脆弱性が発生する恐れがあるカス タマイズ時には、必ずVEXによるセキュリティ診断を実施して、脆 弱性がない状態でサイトのリリースを行っています。