問題一覧
1
XSS脆弱性の発生箇所は?
webアプリケーションでHTML,JSを生成している箇所
2
XSS脆弱性による被害は?
被害者のブラウザでJS実行,偽情報表示
3
XSSの原因は?
HTMLを生成する際の「<」,「“」に対するエスケープ漏れ
4
XSSの対策は?
属性値は「”」で囲む HTMLの特殊文字はエスケープ
5
SQLインジェクションの発生箇所は?
SQL呼び出しをしている箇所
6
SQLインジェクションによる被害は?
データ漏洩,改竄,認証回避,プログラム実行,更新
7
SQLインジェクション対策は?
静的プレースホルダを利用してSQL呼び出し
8
CSRFとは?
罠サイトの閲覧などで、利用者の意図しない「重要な処理」をサイト上で実行する攻撃
9
XSSとは?
サイト利用者のブラウザ上で攻撃者がスクリプトを実行、クッキーを盗んで成りすましなどをする攻撃
10
CSRFの発生箇所は?
クッキーのみでセッション管理をしているサイトや、HTTP認証,TLSクライアント証明書のみで利用者の識別をしているサイト
11
CSRFによる被害は?
利用者の意図しない「重要な処理」を攻撃者が勝手に実行する
12
CSRFの対策は?
「重要な処理」の前に、正規利用者自身のリクエストであることを確認する
13
クリックジャッキングとは?
iframeやcssで上手く騙して、画面上の特定のボタンを利用者にクリックさせる事で、重要な処理を利用者に意図せず実行させる
14
クリックジャッキングの発生箇所は?
「重要な処理」をマウス操作のみで実行でき、かつ認証を要するページ
15
クリックジャッキングの被害は?
重要な処理を知らない間に勝手に実行される
16
クリックジャッキングの対策は?
「重要な処理」実行ボタンがあるページでX-Frame-Optionsヘッダーを出力する
17
セッションハイジャックとは?
利用者のセッションIDを何らかの方法で取得することで、第三者が成りすましてサイトにアクセスすること
18
セッションハイジャックのためにセッションIDを取得する方法は?3つ
セッションIDの推測 セッションIDを盗む セッションIDの固定化攻撃
19
セッションハイジャック対策とは?
webアプリケーション開発ツールが備えるセッションID管理機構を利用する
20
URL埋め込みのセッションIDはreferrerの機能でセッションIDを知られてしまう脆弱がある。このやり方を回避する方法は?
クッキーにセッションIDを保存するように設定することで、referrerにセッションIDを保存されないようにする
21
セッションIDの固定化攻撃の対策は?
認証後にセッションIDを変更する
22
オープンリダイレクト脆弱性とは?
パラメタにより指定したURLにリダイレクトできる機能を悪用して、任意のドメインにリダイレクトさせられる脆弱性のこと
23
オープンリダイレクトの発生箇所は?
外部から指定したURLにリダイレクト可能な箇所
24
オープンリダイレクトによる被害は?
フィッシングサイトに誘導される→個人情報などを知らずに入力してしまう マルウェアなどを配布されてしまう
25
オープンリダイレクト脆弱性の対策は?
・リダイレクト先を固定する ・リダイレクト先のURLを直接指定ではなく番号指定にする ・リダイレクト先をあらかじめ許可かれたドメインのみに限定する
26
HTTPヘッダインジェクションとは?
HTTPレスポンスを出力する際のパラメータに改行を仕込むことで、レスポンスヘッダを追加・偽造したり、JS実行したりする攻撃
27
HTTPヘッダインジェクションの発生箇所は?
リダイレクトやクッキー生成など、外部パラメータを元にHTTPレスポンスヘッダを出力している箇所
28
HTTPヘッダインジェクションによる被害は?
成りすまし、偽ページ表示、キャッシュ汚染、JS実行
29
HTTPヘッダインジェクションの対策は?
外部パラメタをHTTPレスポンスヘッダとして出力しない。 それが無理なら リダイレクトやクッキー生成は専用APIを使い、パラメタ内の改行文字をチェックする。
30
クッキーにまつわる脆弱性は2つのパターンが挙げられる。それらは何?
・クッキーを利用すべきでない目的で使っている ・クッキーの出力方法に問題がある
31
クッキーの不適切な利用として、クッキーに保存すべきでない情報を保存していることが挙げられる。 保存してはダメな理由と、保存すべきでない情報を答えよ
理由 クッキーはセッション変数と違い、外部から書き換えが可能なため 保存すべきでない情報 ユーザIDや権限情報
32
クッキー出力時に発生しやすい脆弱性2つ答えよ
・HTTPヘッダインジェクション脆弱性 ・クッキーのセキュア属性不備
33
クッキーのセキュア属性不備とは?
secure属性の設定をしていないクッキーは、HTTPS通信をしていたとしても内容が平文で送信されてしまう
34
クッキーにセキュア属性をつけられない場合があるが、その理由と対策は?
理由 セキュア属性をONにするとHTTP通信でクッキーが送れなくなるためHTTPとHTTPS混合のアプリでは使えない 対策 セッションIDを保持するクッキー(セキュア属性OFF)と、トークンを保持するクッキー(セキュア属性ON)の2つを生成 →この2つをチェックする
35
メール送信の問題二つを上げよ
・メールヘッダインジェクション脆弱性 ・hiddenパラメタによる宛先保持
36
メールヘッダインジェクションとは?
メールヘッダに改行を仕込んでメールヘッダや本文の追加、変更を行う攻撃
37
メールヘッダインジェクションの発生箇所は?
メール送信機能のあるページ
38
メールヘッダインジェクションによる被害は?
迷惑メール送信、メール内容や宛先改竄、ウイルス添付
39
メールヘッダインジェクションの対策は?
まず、メール送信には専用ライブラリを使用する。その上で、 ・外部からのパラメタをメールヘッダに含ませない ・外部パラメタを含める場合は改行チェック
40
ディレクトリ・トラバーサルとは?
アプリケーションの意図しないファイルに対して閲覧、改竄、削除などを行うこと
41
ディレクトリ・トラバーサルの発生箇所は?
ファイル名を外部から指定できるページ
42
ディレクトリ・トラバーサルの被害は?
秘密情報漏洩、データの改竄、削除、任意スクリプト実行など
43
ディレクトリ・トラバーサルの原因は?3つ
・ファイル名を外部から指定できる ・ファイル名として絶対パスや相対パスの形で異なるディレクトリを指定可能 ・指定されたファイルに対するアクセス権限のチェックをしていない
44
ディレクトリ・トラバーサルの対策は?3つ
・外部からファイル名を指定させる仕様をやめる ・ファイル名にディレクトリを含ませないようにする ・指定させるファイル名の文字種を英数字のみに限定する
45
ディレクトリ・リスティングとは?
URLでディレクトリ名を指定した場合にファイル一覧を表示する機能
46
OSコマンドインジェクションとは?
シェル経由でOSコマンドを呼び出す機能の使い方の不備をつき、意図しないOSコマンドを実行すること
47
OSコマンドインジェクションの発生箇所は?
シェルを呼び出す機能のある関数を実行している箇所
48
OSコマンドインジェクションによる被害は?
情報漏洩、データ改竄、削除など
49
OSコマンドインジェクションの原因は?2つ
・シェル経由でOSコマンドを呼び出す際、シェルのメタ文字がエスケープされていない ・シェル機能を呼び出す関数を使用している
50
OSコマンドインジェクション対策は?
・OSコマンド呼び出しを使わない ・シェル呼び出し機能のある関数を使わない ・外部パラメタをコマンドラインのパラメタとして使わない ・OSコマンドに渡すパラメタはエスケープ
51
ファイルアップローダに対する攻撃は?4つ
・アップロード機能に対するDoS攻撃 ・アップロードファイルによるサーバ側でのスクリプト実行 ・悪意ある仕掛けを含ませたファイルを利用者にDLさせる ・閲覧権限のないファイルのDL
52
アップロードファイルによるサーバ側でのスクリプト実行攻撃の原因は?2つ
・利用者がアップロードしたファイルをwebサーバの公開ディレクトリに保存される ・アップロード後のファイル名としてphpやaspxなどのサーバスクリプトを示す拡張子が指定可能
53
ファイルDLによるXSSとは?
DL時に、ブラウザがファイルタイプを誤認することを利用して、スクリプトを利用者にDLさせ実行する
54
ファイルDLによるXSSの対策として、アップロード時の対策は?1つ
アップロードするファイルの拡張子が許可されたものか確認
55
ファイルDLによるXSSの対策は? ファイルダウンロード時の対策3つ
・content-typeを正しく設定する ・レスポンスヘッダX-content- type-options:nosniffの指定 ・content-DisPositionを設定(ファイルをアプリケーション上で開かず、DLさえできれば良い場合)
56
PDFのFormCalcにはURL関数という機能があり、HTTPリクエストを呼び出せる。これを悪用したコンテンツハイジャックという攻撃はどんなもの?
罠サイトを閲覧したユーザーが埋め込まれたPDFのFormCalcスクリプトからHTTPリクエストを送信してしまう。その際ブラウザが保持しているクッキーが攻撃者に伝わってしまう。
57
PDFのFormCalcによるコンテンツハイジャックの対策は?2つ
・PDFはブラウザ上で開かず、DLを強制する。 ・PDFをobject要素やembed要素で開けないようにする。
58
スクリプトの一部を別ファイルから読み込む機能であるファイルインクルードを利用した攻撃、ファイルインクルード攻撃とは?
好きなファイルをインクルードさせる攻撃
59
ファイルインクルード攻撃の対策は?2つ
・インクルードするファイルに外部からのパラメタを含めない。 ・含める場合はパラメタの文字を英数字に限定する。
60
evalインジェクションとは?
evalの利用法に問題がある場合、外部からスクリプトを送り込み実行できる脆弱性を利用した攻撃
61
evalインジェクションの対策は?
evalを使わない、 使う場合は外部パラメタをevalに渡さない、 それも無理ならパラメタは英数字に限定
62
安全でないデータをデシリアライズすると何が起きる?
デシリアライズされたデータによりオブジェクトが生成され、任意コードの実行が行われる
63
安全でないデシリアライゼーションによって起こる問題を起こさないようにする対策は? 3つ
・そもそもシリアライズ形式を使わない、JSON形式でデータの受け渡しを行う ・セッション変数など書き換え不可能な形でシリアライズデータを受け渡す ・HMACなどを使い、データが改竄されていないことを確認する
64
XML外部実体参照(XXE)脆弱性とは?
XXEは外部ファイルの内容を取り込む機能、これを悪用しwebサーバ内のファイルを不正に読み取られる脆弱性
65
XXE脆弱性の対策は?
XMLでなくJSONを使う
66
競合状態の脆弱性とは?
複数プロセスやスレッドから同時に利用される共有資源(変数、共有メモリ、ファイル、DBなど)の排他制御が不十分であること
67
競合状態の脆弱性対策は?2つ
・できるだけ共有資源を使わない ・使う場合、共有資源に対して適切な排他制御を行う
68
キャッシュからの情報漏洩の原因は?2つ
・アプリ側のキャッシュ制御不備 ・キャッシュサーバの設定不備
69
JSONのエスケープに不備があるとどうなる?
スクリプトを埋め込む事で、それが実行できてしまう
70
JSON直接閲覧によるXSSの手口は?
JSONを返すAPIのMIMEタイプをtext/htmlに誤認させる事でスクリプトを仕込んだJSONがブラウザで表示される
71
JSON直接閲覧によるXSSの対策は?2つ
・MIMEタイプを正しく設定する ・X-content-type:nosniffを指定
72
JSONPのコールバック関数名によるXSSの手口は?
JSONPコールバック関数の関数名は外部から指定させる場合が多いので、関数名にスクリプトを仕込む
73
JSONPコールバック関数名によるXSS対策は?2つ
・MIMEタイプを正しく設定 ・コールバック関数名の文字種、文字数を制限
74
web APIでのCSRF対策は?3つ
・CSRFトークン(セッション変数にトークンを保持) ・二重送信クッキー ・カスタムリクエストヘッダによる対策
75
JSONハイジャックとは?
JSONデータは本来スクリプト要素として受け取れないが、スクリプト要素として受け取る手法
76
JSONハイジャック対策は?
・X-content-type-options:nosniff
77
JSONPの問題点2つ挙げよ
・JSONPはアクセス制御の仕組みがない ・JSONPは呼び出し元オリジンを制御する機能がない
78
DOM Based XSSとは?
JS処理の不備が原因のXSS
79
DOM Based XSSの原因は?
・innerHTMLやdocument.write()などの使用 ・evalなどの使用 上記などにスクリプトを埋め込んだ文字列が渡されるとXSSが起きる
80
webストレージを利用する際の注意点は?
重要な情報は保存しない
81
postMessageとは?
iframeやwindow.openで開いたウィンドウなど、複数のウィンドウが異なるオリジンで協調して動作する環境で、メッセージやデータのやり取りを行う汎用的な仕組みのこと
82
postMessageの不備とは?2つ
・メッセージ送信先オリジンを指定しない ・メッセージ送信元オリジンを確認しない