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
150
脆弱性について
社内勉強会用資料
yuki21
October 02, 2017
Tweet
Share
More Decks by yuki21
See All by yuki21
労務ドメインを快適に開発する方法 / How to Comfortably Develop in the Labor Domain
yuki21
1
290
GitHubのコマンドパレット使ってますか?
yuki21
0
1.3k
キャッシュを利用してRailsアプリの処理を高速化する
yuki21
0
110
Next.js & ElectronでTodoアプリを作る
yuki21
0
680
gRPCを完璧に理解する
yuki21
0
44
RSpec -基本の基-
yuki21
0
44
Committeeを導入してみた
yuki21
0
110
マイクロサービスとモノリスとKBR
yuki21
0
46
ActiveModelSerializersについて
yuki21
0
33
Other Decks in Technology
See All in Technology
5分でわかるDuckDB
chanyou0311
10
3.2k
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
330
TSKaigi 2024 の登壇から広がったコミュニティ活動について
tsukuha
0
160
祝!Iceberg祭開幕!re:Invent 2024データレイク関連アップデート10分総ざらい
kniino
2
250
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
210
Wvlet: A New Flow-Style Query Language For Functional Data Modeling and Interactive Data Analysis - Trino Summit 2024
xerial
1
110
第3回Snowflake女子会_LT登壇資料(合成データ)_Taro_CCCMK
tarotaro0129
0
180
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
1
110
Postman と API セキュリティ / Postman and API Security
yokawasa
0
200
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
160
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
280
podman_update_2024-12
orimanabu
1
260
Featured
See All Featured
Building Applications with DynamoDB
mza
91
6.1k
How GitHub (no longer) Works
holman
311
140k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
For a Future-Friendly Web
brad_frost
175
9.4k
Six Lessons from altMBA
skipperchong
27
3.5k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
A Philosophy of Restraint
colly
203
16k
Typedesign – Prime Four
hannesfritz
40
2.4k
GitHub's CSS Performance
jonrohan
1030
460k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Rails Girls Zürich Keynote
gr2m
94
13k
Building Adaptive Systems
keathley
38
2.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によるセキュリティ診断を実施して、脆 弱性がない状態でサイトのリリースを行っています。