OSコマンドインジェクション

ネスペ対策

OSコマンドインジェクション

今回はネットワークスペシャリスト令和3年 午前Ⅱ 問21で出題された問題を解説します。ネットワークスペシャリスト試験では様々な攻撃手法が問われます。攻撃名だけでなく、攻撃手法とその対策についてもよく問われるのでまとめて理解しましょう。

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2021r03_1/2021r03h_nw_am2_qs.pdf

HTTPヘッダインジェクション

HTTPヘッダインジェクションは「攻撃者が任意のレスポンスヘッダフィールドやレスポンスボディを作成する罠を仕掛け、この罠を踏んだ利用者のブラウザに偽のページを表示させたり、スクリプトを実行させたり、任意のCookieを保存させたりする攻撃」です。

脅威として以下の2点が挙げられます。

  1. 任意のCookieを発行(セッションハイジャック)
  2. キャッシュサーバのキャッシュ汚染

根本的対策としてIPAは以下の2点を挙げています

  1. ヘッダの出力を直接行わず、ウェブアプリケーションの実行環境や言語に用意されているヘッダ出力用APIを使用する
  2. 改行コードを適切に処理するヘッダ出力用APIを利用できない場合は、改行を許可しないよう、開発者自身で適切な処理を実装する

また保険的解決として以下の1点を挙げています。

  1. 外部からの入力すべてについて、改行コードを削除する
OSコマンドインジェクション

OSコマンドインジェクションは「悪意のあるリクエスト(OSコマンドを含む攻撃)を外部から送信することでをウェブサーバのOSコマンドを不正に実行し重要情報を盗んだり、攻撃の踏み台に悪用する攻撃」です。

脅威としては以下の4点が挙げられます。

  1. サーバ内のファイルの閲覧、改ざん、削除
  2. 不正なシステム操作
  3. 不正なプログラムのダウンロード、実行
  4. 他のシステムへの攻撃の踏み台

根本的対策としてIPAは以下の1点を挙げています

  1. シェルを起動できる言語機能の利用を避ける。

さらにこう付け加えられています

Perlのopen関数は、引数として与えるファイルパスに「|」(パイプ)を使うことでOSコマンドを実行できるため、外部からの入力値を引数として利用する実装は危険です。シェルを起動できる言語の利用は避けて他の関数等で代替してください。Perlでファイルを開く場合、sysopen関数を利用すればシェルを起動することはできません。

以上から設問の答えは「イ」であることがわかります。

クロスサイトリクエストフォージェリ

クロスサイトリクエストフォージェリは「利用者がターゲットとなるウェブサイトにログインした状態で攻撃者の罠サイトにアクセスすると、罠サイトがターゲットとなるウェブサイトに不正リクエストを送信し利用者が意図しない処理を実行させる攻撃」です。

脅威としては以下の2点が挙げられます。

  1. ログイン後の利用者のみが利用可能なサービスの悪用
  2. ログイン後の利用者のみが編集可能な情報(パスワード等)の改ざん、新規登録

根本的対策としてIPAは以下の3点を挙げています

  1. 処理を実行するページをPOSTメソッドでアクセスするようにし、その「hiddenパラメータ」に秘密情報が挿入されるよう、前のページを自動生成して、実行ページではその値が正しい場合のみ処理を実行する。
  2. 処理を実行する直前のページで再度パスワードの入力を求め、実行ページでは、再度入力されたパスワードが正しい場合のみ処理を実行する。
  3. Refererが正しいリンク元かを確認し、正しい場合のみ処理を実行する。
セッションハイジャック

セッションハイジャックは「ログイン中の利用者のセッションIDを不正に取得し、その利用者になりすましてアクセスする攻撃」です。

脅威として以下の3点が挙げられます。

  1. ログイン後の利用者のみが利用可能なサービスの悪用
  2. ログイン後の利用者のみが編集可能な情報の改ざん、新規登録
  3. ログイン後の利用者のみが閲覧可能な情報の改ざん

根本的対策としてIPAは以下の5点を挙げています。

  1. セッションIDを推測が困難なものにする。
  2. セッションIDをURLパラメータに格納しない
  3. HTTPS通信で利用するCookieにはsecure属性を加える
  4. ログイン成功後に、新しくセッションを開始する。
  5. ログイン成功後に、既存のセッションIDとは別に秘密情報を発行し、ページの遷移ごとにその値を確認する。

3.のsecure属性についてはネットワークスペシャリストの午後問題でも問われました。Cookieにはsecure属性という設定項目があり、これが設定されたCookieはHTTPS通信のみで利用されます。Cookieにsecure属性がないとHTTPS通信で発行したCookieは経路が暗号化されていないHTTP通信でも利用されるためHTTP通信の傍受によりCookie情報を不正に取得されてしまう可能性があります。IPAもHTTPS通信で利用するCookieには必ずsecure属性を加えるよう注意喚起しています。

コメント

タイトルとURLをコピーしました