Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
430
GitHubのコマンドパレット使ってますか?
yuki21
0
1.6k
キャッシュを利用してRailsアプリの処理を高速化する
yuki21
0
120
Next.js & ElectronでTodoアプリを作る
yuki21
0
730
gRPCを完璧に理解する
yuki21
0
48
RSpec -基本の基-
yuki21
0
49
Committeeを導入してみた
yuki21
0
140
マイクロサービスとモノリスとKBR
yuki21
0
48
ActiveModelSerializersについて
yuki21
0
37
Other Decks in Technology
See All in Technology
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
120
20251203_AIxIoTビジネス共創ラボ_第4回勉強会_BP山崎.pdf
iotcomjpadmin
0
140
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
2
200
Introduce marp-ai-slide-generator
itarutomy
0
110
[2025-12-12]あの日僕が見た胡蝶の夢 〜人の夢は終わらねェ AIによるパフォーマンスチューニングのすゝめ〜
tosite
0
180
AgentCoreとStrandsで社内d払いナレッジボットを作った話
motojimayu
1
920
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
360
Lookerで実現するセキュアな外部データ提供
zozotech
PRO
0
200
Amazon Bedrock Knowledge Bases × メタデータ活用で実現する検証可能な RAG 設計
tomoaki25
6
2.4k
通勤手当申請チェックエージェント開発のリアル
whisaiyo
3
450
AI駆動開発ライフサイクル(AI-DLC)の始め方
ryansbcho79
0
170
ハッカソンから社内プロダクトへ AIエージェント「ko☆shi」開発で学んだ4つの重要要素
sonoda_mj
6
1.6k
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Optimizing for Happiness
mojombo
379
70k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
190
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
0
300
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
120
Music & Morning Musume
bryan
46
7k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
750
The Language of Interfaces
destraynor
162
25k
Code Review Best Practice
trishagee
74
19k
Everyday Curiosity
cassininazir
0
110
Building Adaptive Systems
keathley
44
2.9k
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によるセキュリティ診断を実施して、脆 弱性がない状態でサイトのリリースを行っています。