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
0
160
脆弱性について
社内勉強会用資料
yuki21
October 02, 2017
Tweet
Share
More Decks by yuki21
See All by yuki21
労務ドメインを快適に開発する方法 / How to Comfortably Develop in the Labor Domain
yuki21
1
450
GitHubのコマンドパレット使ってますか?
yuki21
0
1.6k
キャッシュを利用してRailsアプリの処理を高速化する
yuki21
0
120
Next.js & ElectronでTodoアプリを作る
yuki21
0
730
gRPCを完璧に理解する
yuki21
0
50
RSpec -基本の基-
yuki21
0
49
Committeeを導入してみた
yuki21
0
140
マイクロサービスとモノリスとKBR
yuki21
0
51
ActiveModelSerializersについて
yuki21
0
39
Other Decks in Technology
See All in Technology
Data Hubグループ 紹介資料
sansan33
PRO
0
2.8k
OSSで構築するIT基盤管理実践事例: NetBox・Snipe-IT・FreeRADIUS+PrivacyIDEA / Practical Case Studies of IT Infrastructure Management Using OSS
nttcom
0
190
Oracle Cloud Infrastructure:2026年2月度サービス・アップデート
oracle4engineer
PRO
0
200
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
110
LLM活用の壁を超える:リクルートR&Dの戦略と打ち手
recruitengineers
PRO
1
220
どこで打鍵するのが良い? IaCの実行基盤選定について
nrinetcom
PRO
2
150
EMからICへ、二周目人材としてAI全振りのプロダクト開発で見つけた武器
yug1224
3
150
生成AIの利用とセキュリティ /gen-ai-and-security
mizutani
0
430
LINE Messengerの次世代ストレージ選定
lycorptech_jp
PRO
17
7.2k
JAWS DAYS 2026 CDP道場 事前説明会 / JAWS DAYS 2026 CDP Dojo briefing document
naospon
0
120
Snowflakeデータ基盤で挑むAI活用 〜4年間のDataOpsの基礎をもとに〜
kaz3284
1
330
Kaggleの経験が実務にどう活きているか / kaggle_findy
sansan_randd
1
320
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
240
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
The Spectacular Lies of Maps
axbom
PRO
1
580
So, you think you're a good person
axbom
PRO
2
1.9k
Producing Creativity
orderedlist
PRO
348
40k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
How STYLIGHT went responsive
nonsquared
100
6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
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によるセキュリティ診断を実施して、脆 弱性がない状態でサイトのリリースを行っています。