「SQLインジェクション」とは
DBへの不正アクセスのこと。
ウェブページ上の入力フォームに不正な文字列を入力し、その文字列から生成されたSQL文を不正なものにして、データベースの内容を不正に閲覧や削除しようとする攻撃。データの改ざん・削除・個人情報の漏洩などの被害が発生します。
<対策>
・WAF(Web Application Firewall:Webアプリケーションを保護するためのファイアウォール)を導入して、入力文字のエスケープ、バインド機構を利用する。
・エスケープとは:「’」これを「”」に変換するなど
・バインドとは:ひな形(プレースホルダ)をそのまま割り当てる処理。
あるデータやリソースを他の要素に結び付ける(関連付ける)ことを指します。
「クロスサイトスクリプティング(XSS)」とは、悪意のあるスクリプト(JavaScript など)を Web サイトに埋め込み、ユーザーのブラウザ上で実行させる攻撃のことです。
• ユーザーの個人情報やクッキー(セッション情報)が盗まれる
• フィッシングサイトへ誘導される
• ページの改ざん(偽のログイン画面やメッセージの表示)
• ブラウザの操作を乗っ取られる
<対策>
・WAF(Web Application Firewall:Webアプリケーションを保護するためのファイアウォール)を導入して、ウェブページに出力するデータのサニタイジング(無害化)する。
・Cookie:Webサーバとブラウザの間でデータを保存・管理する仕組み。
主に「同じユーザーであることを識別し、セッションを管理する」ために使われます。
「クリックジャッキング攻撃」とはユーザーに気づかれないように透明なボタンやページを重ねて配置し、不正な操作をさせる攻撃。
ユーザーは自分の意図とは異なるボタンをクリックしてしまい、個人情報の漏えいや不正操作を行ってしまう可能性がある。
<対策>
X-Frame-Options(Webサイトのページを iframe に埋め込めるかどうかを制御するHTTPヘッダー。
これを設定することで、クリックジャッキング攻撃を防ぐ)を設定する。
「ディレクトリトラバーサル」とは、本来アクセスできないはずのファイルやディレクトリに不正にアクセスする攻撃手法。
攻撃者が「../(ドットドットスラッシュ)」などの特殊なパスを使って、
サーバーの重要なファイル(例:パスワード情報、設定ファイルなど)を盗み見たり、改ざんしたりする危険がある。
<対策>
・WAFを導入して、ファイル名や”..”などの文字列をサニタイジング(無害化)
・Webサーバ上にあり閲覧などされると困るファイル:設定(config)など、サーバー上で重要なファイルにはアクセス制限をかけ、一般のユーザーからアクセスできないようにする。
「クロスサイトスクリプティングに該当するものはどれか?」
答え:攻撃者が罠を仕掛けたWebページを利用者が閲覧し、当該ページ内のリンクをクリックした時に、不正スクリプトを含む文字列が脆弱なWebサーバに送り込まれ、レスポンスに埋め込まれた不正スクリプトの実行によって、情報漏洩をもたらす。
<誤り>
「Webアプリケーションのデータ操作言語の呼び出し方に不備がある場合に攻撃者が悪意を持って構成した文字列を入力することによって、データベースのデータの不正な取得、改ざん及び削除を可能とする」
:これはSQLインジェクションに関する説明です。
「Webサイトに対して、他のサイトを介して大量のパケットを送り付け、そのネットワークトラフィックを異常に高めてサービス提供不能にする」
:これはDDoS攻撃(分散型サービス拒否攻撃)に関する説明です。
「確保されているメモリ空間の下限又は上限を超えてデータの書き込みと読み出しを行うことによって、プログラムを異常終了させたりデータエリアに挿入された不正なコードを実行させたりする」
:これはバッファオーバーフロー攻撃に関する説明です。
「クロスサイトスクリプティングの手口はどれか?」
答え:Webアプリケーションのフォーム入力フィールドに、悪意のあるJavaScriptコードを含んだデータを入力する。
<誤り>
「インターネットなどのネットワークを通じてサーバに不正にアクセスしたり、データの改ざんや破壊を行ったりする。」
:これは「不正アクセス」に関する説明です。不正アクセスは、サーバやシステムに対して許可されていない方法でアクセスし、データの改ざんや破壊を行う攻撃です。通常は、パスワードの漏洩や脆弱性を利用して不正にアクセスします。
「大量のデータをWebアプリケーションに送ることによって、用意されたバッファ領域を溢れさせる。」
:これは「バッファオーバーフロー攻撃」に該当します。バッファオーバーフローは、プログラムが許容するメモリ領域以上のデータを送り込むことで、メモリをオーバーフローさせ、悪意のあるコードを実行したり、プログラムをクラッシュさせたりします。
「パス名を推定することによって、本来は認証された後にしかアクセスが許可されないページに直接ジャンプする。」
:これは「ディレクトリトラバーサル攻撃」の説明です。攻撃者がURLやパスを推測し、認証が必要なページやファイルに不正にアクセスする手法です。システムがファイルパスを適切に検証していない場合に発生します。
「クロスサイトスクリプティング対策に該当するものはどれか?」
答え:Webページに入力されたデータの出力データが、HTMLタグとして解釈されないように処理する。
<誤り>
「WebサーバでSNMPエージェントを常時稼働させることによって、攻撃を検知する。」
:これは「SNMP(Simple Network Management Protocol)」に関する説明です。
SNMPエージェントをWebサーバで稼働させることにより、ネットワークのトラフィックやサーバの状態を監視し、異常が検知された場合にアラートを発するなどして、攻撃の兆候を早期に察知するための方法です。
XSS攻撃とは直接関係ありません。
「WebサーバのOSにセキュリティパッチを適用する。」
:これは「セキュリティパッチの適用」に関する説明です。
OSやソフトウェアのセキュリティホールを修正するために、定期的にセキュリティパッチを適用することが重要です。
これにより、攻撃者が既知の脆弱性を悪用するのを防ぐことができます。
XSS攻撃はWebアプリケーションに対する脆弱性を利用する攻撃であり、OSのセキュリティパッチ適用は直接的なXSS防止策ではありませんが、サーバ全体のセキュリティ強化には有効です。
「許容量を超えた大きさのデータをWebページに入力することを禁止する。」
:これは「バッファオーバーフロー防止や入力検証」に関する説明です。
Webページに入力されるデータのサイズに制限を設け、過剰なデータが送信されることを防ぐことが、サーバの安定性を保つために重要です。
これにより、悪意のある攻撃者が大量のデータを送りつけてサーバをクラッシュさせるバッファオーバーフロー攻撃を防止できます。
XSS攻撃の防止策とは異なります。
「クリックジャッキング攻撃に該当するものはどれか?」
答え:WebサイトAのコンテンツ上に透明化した標的サイトBのコンテンツを配置し、WebサイトA上の操作に見せかけて標的サイトBで操作させる。
<誤り>
「Webアプリケーションの脆弱性を悪用し、Webサーバに不正なリクエストを送ってWebサーバからのレスポンスを二つに分割させることによって、利用者のWebブラウザのキャッシュを偽装する。」
:「ウェブキャッシュ偽装攻撃」のことです。
「Webブラウザのタブ表示機能を利用し、Webブラウザの非活性なタブの中身を、利用者が気づかないうちに偽ログインページに書き換えて、それを操作させる。」
:「Tabnabbing(タブナビング)」攻撃です。
「利用者のWebブラウザの設定を変更することによって、利用者のWebページの閲覧履歴やパスワードなどの機密情報を盗み出す。」
:「クロスサイトスクリプティング(Cross-Site Scripting, XSS)」のことです。
「ディレクトリトラバーサル攻撃に当たるものはどれか?」
答え:攻撃者が、パス名を使ってファイルを指定し、管理者の意図していないファイルを不正に閲覧する。
<誤り>
「攻撃者が、Webアプリケーションの入力データとしてデータベースへの命令文を構成するデータを入力し、管理者の意図していないSQL文を実行させる。」
:これは「SQLインジェクション(SQL Injection)攻撃」に関する説明です。
SQLインジェクションでは、Webアプリケーションが入力されたデータを適切に検証・エスケープせずにSQLクエリに埋め込むことで、攻撃者が意図的にSQL文を変更したり、データベースを操作することを可能にします。
これにより、攻撃者はデータの不正取得、改ざん、削除などを行える場合があります。
「攻撃者が、利用者をWebサイトに誘導した上で、WebアプリケーションによるHTML出力のエスケープ処理の欠陥を悪用し、利用者のWebブラウザで悪意のあるスクリプトを実行させる。」
:これは「クロスサイトスクリプティング(XSS)」攻撃に関する説明です。
XSS攻撃では、攻撃者がWebアプリケーションで発生するHTML出力のエスケープ処理の不備を突いて、悪意のあるスクリプトを埋め込みます。
これにより、他の利用者のブラウザでそのスクリプトが実行され、クッキーの窃取やセッションの乗っ取り、情報の改ざんなどを行うことが可能です。
「セッションIDによってセッションが管理される時、攻撃者がログイン中の利用者のセッションIDを不正に取得し、その利用者になりすましてサーバにアクセスする。」
:これは「セッションハイジャック(Session Hijacking)攻撃」に関する説明です。
セッションハイジャック攻撃では、攻撃者が他の利用者のセッションIDを不正に取得し、そのセッションIDを使ってその利用者としてログインし、情報を盗み取ったり、不正アクセスを行ったりします。
「ディレクトリトラバーサル攻撃はどれか?」
答え:攻撃者が、ファイル名の入力を伴うアプリケーションに対して、上位のディレクトリを意味する文字列を使って、非公開のファイルにアクセスする。
<誤り>
「攻撃者が、OSの操作コマンドを利用するアプリケーションに対して、OSのディレクトリ作成コマンドを渡して実行する。」
: これは「コマンドインジェクション(Command Injection)攻撃」に関する説明です。
コマンドインジェクション攻撃では、攻撃者がアプリケーションにOSの操作コマンド(たとえば、ディレクトリ作成コマンドやファイル削除コマンドなど)を不正に入力させ、アプリケーションがそれを実行してしまうように仕向けます。
この場合、攻撃者はアプリケーションが予期していないコマンドを実行させることができます。
「攻撃者がSQL文のリテラル部分の生成処理に問題があるアプリケーションに対して、任意のSQL文を渡して実行する。」
: これは「SQLインジェクション(SQL Injection)攻撃」に関する説明です。
SQLインジェクションでは、攻撃者がアプリケーションのSQL文に悪意のあるコードを挿入して、データベースに不正なクエリを実行させます。リテラル部分に問題がある場合、攻撃者は自分の意図したSQL文を挿入し、データの取得や変更、削除が行えるようになります。
「攻撃者が、シングルサインオンを提供するディレクトリサービスに対して、不正に入手した認証情報を用いてログインし、複数のアプリケーションを不正利用する。」
: これは「シングルサインオン(SSO)セッションハイジャック攻撃」に関する説明です。
攻撃者は、シングルサインオン(SSO)システムの認証情報を不正に入手し、その情報を使って複数のアプリケーションに不正にアクセスします。
これにより、攻撃者は許可されていないアプリケーションにアクセスでき、機密情報を盗んだり、サービスを不正に利用したりします。
続きは
【情報セキュリティマネジメント試験対策】各種攻撃手法について②に書きます。