今回も情報処理安全確保支援士の試験勉強の内容をアウトプットをしていきます。
勉強に使ったのはこちら
章の終わりにあるCheck問題に私なりの答えで解答していきます。
今回は2.8章:Webアプリケーションに不正なスクリプトや命令を実行させる攻撃のCheck問題です。
【Q1】反射型XSSはどのような仕組みで実行されるか。
ユーザからのリクエストに含まれるスクリプトに相当する文字列をWebアプリケーションが当該リクエストへのレスポンスであるWebページ内に実行可能なスクリプトとして出力してしまうタイプのXSS脆弱性を突き実行される。
どちらも以下で対策できる。
①HTTPレスポンスヘッダのContent-Typeフィールドに文字コードを指定する
②タグの属性値を必ずダブルクォーテーションで囲む
③タグの属性値等に含まれるメタキャラクタのエスケープ処理を行う
【Q3】DOM-based XSSはどのようなサイトで実行されるか。
Webページに含まれる正規のスクリプトにより、動的にWebページを操作した結果、意図しないスクリプトをWebページに出力してしまうXSS脆弱性を持つサイト。
【Q4】DOM-based XSSへの対策を述べよ。
"document.write"た"innerHTML"といった『引数として渡した文字列にHTMLタグやスクリプトに相当する文字列をそのまま解釈する』メソッドやプロパティを使用しないようにする。
"createElement"や"createTextNode"といったDOM操作用のプロパティを使用してWebページをこうちくすればよい。
【Q5】SQLインジェクションはどのようなサイトで実行されるか。
ユーザが入力した文字列をそのままSQL文に編集してDBサーバに送信するような構成のサイトで実行される。
【Q6】SQLインジェクションに対するWebアプリケーションでの対策を述べよ。
①バインド機構を使用する
②入力データのエスケープ処理を行う
③クライアントに詳細なエラーメッセージを送らないようにする
【Q7】SQLインジェクションに対するWebアプリケーション以外での対策を述べよ。
①WAFを使用してSQLインジェクションを遮断する
②Webアプリケーションからのクエリを必要最小限の権限のみを持つアカウントで処理するようにする
【Q8】OSコマンドインジェクションはどのようなサイトで実行されるか。
ユーザの入力データを基にOSのコマンドを呼び出して処理するWebページにおいて実行される。
【Q9】OSコマンドインジェクションへの対策を述べよ。
Webアプリケーションでの対策
①OSコマンドが呼び出し可能な関数を使用しない
②入力データに使用可能な文字種や書式ルールなどのルールを明確にする(文字種を制限する)
③ルールに従わないデータはエラーとする
Webアプリケーション以外での対策
④WAFを使用してOSコマンドインジェクションを遮断する
【Q10】HTTPヘッダインジェクションによってどのような攻撃が可能となるか。
①ユーザのブラウザに偽の情報を表示
②不正なスクリプトの組み込み
③任意のCookieの発行
④キャッシュサーバのキャッシュを汚染
【Q11】HTTPヘッダインジェクションへの対策を述べよ。
①HTTPレスポンスヘッダをWebアプリケーションから直接出力せず、実行環境や言語に実装されているヘッダ出力用のAPIやライブラリを使用する
②レスポンスヘッダに用いるユーザ入力データに対しては改行コードのチェックを行い、含まれていた場合には削除する
③Cookieを発行する場合にはURLエンコードを確実に行う
【Q12】メールヘッダインジェクションとはどのような手法か。
ユーザがフォームに入力したデータを基にメールを送信するWebアプリケーションにおいて、不正なメールヘッダを混入させることによって、意図しないアドレスに迷惑メールを送信するなどメール送信機能を悪用した攻撃手法。
【Q13】メールヘッダインジェクションへの対策を述べよ。
①メールヘッダを固定値にし、ユーザの入力値をメールヘッダに出力しない
②Webアプリケーションの実行環境や言語に実装されているメール送信用のAPIを使用する
③hiddenフィールドなど、改ざんが容易な場所にメール送信先のアドレスを設定しない
④メールヘッダとして用いるユーザ入力データに対して改行コードのチェックを行い、含まれていた場合には削除する
【Q14】ディレクトリトラバーサル攻撃への対策を述べよ。
①パス名からファイルのみを取り出す「basename()」などのコマンドや関数を使用し、文字列からディレクトリ名を取り除く
②Webサーバ内のファイルへのアクセス権を正しく設定する
③ファイル名を指定した文字列に「/」「\」などが含まれていないかをチェックし、そうした文字列が含まれる場合はエラー処理を行う
私が使っているのは2022年版のテキストですが、2023年版も出ています。