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
yuki21
October 02, 2017
Technology
180
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
490
GitHubのコマンドパレット使ってますか?
yuki21
0
1.7k
キャッシュを利用してRailsアプリの処理を高速化する
yuki21
0
130
Next.js & ElectronでTodoアプリを作る
yuki21
0
750
gRPCを完璧に理解する
yuki21
0
59
RSpec -基本の基-
yuki21
0
63
Committeeを導入してみた
yuki21
0
170
マイクロサービスとモノリスとKBR
yuki21
0
61
ActiveModelSerializersについて
yuki21
0
49
Other Decks in Technology
See All in Technology
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
130
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
3
1.9k
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
130
module Synths; end
asonas
1
130
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
4
1k
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
240
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
230
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
410
enechainの内製セルフサービスプラットフォーム
hiyosi
0
140
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
210
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
260
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
110
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Prompt Engineering for Job Search
mfonobong
0
440
Statistics for Hackers
jakevdp
799
230k
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Test your architecture with Archunit
thirion
2
2.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
Raft: Consensus for Rubyists
vanstee
141
7.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.7k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Balancing Empowerment & Direction
lara
6
1.3k
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によるセキュリティ診断を実施して、脆 弱性がない状態でサイトのリリースを行っています。