検索
連載

Webアプリケーションの脆弱性を総括するWebアプリケーションに潜むセキュリティホール(14)(2/5 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

SQLインジェクション

 ユーザー入力を使ってSQL文を発行しているアプリケーションに対して、不正な入力を与えることにより別の意味となるSQL文を発行させる攻撃のことである。ユーザー入力をそのままSQL文に使用してしまうことが主な原因である。

 認証にデータベースを使用している場合、認証をバイパスされてしまうことがある。また、データベース内の任意のデータの参照やデータ改ざん、破壊といった攻撃を受ける場合もある。アプリケーションレベルの直接攻撃であるため危険度は非常に高い。

脆弱性が存在する可能性がある個所

 当然SQL文を発行している個所が対象となる。SQL文を発行するであろう主な機能を以下に挙げる。開発時にSQL文を呼び出しているアプリケーションをすべてリストアップしておくと脆弱性検査が楽になる。

  • ログイン
  • 検索
  • 個人情報表示
  • 何らかの処理のコミット(登録、買い物など)

対策

  • 入力チェック
  • サニタイジング
  • バインドメカニズム

 まずは入力チェックを行い、想定内の入力であるかどうかチェックしよう。その後、サニタイジングを行ってからSQL文を生成する。また、バインドメカニズムという仕組みを使えば、本来の意味とは異なるSQL文を発行できなくなるため非常に有効である。

言語別の対策例

 以下に、SQLインジェクションに対するサニタイジングを行うコードを言語別に紹介しておく。

perl

$text =~ s/’/’’/g;
$text =~ s/\\/\\\\/g;

PHP

pg_escape_string() ・・・(PostgreSQLの場合)
mysql_escape_string() ・・・(MySQLの場合)

ASP

safe_text = Replace(str, "'", "''")
safe_text = Replace(safe_text, "\", "\\")

 バインドメカニズムを使う例については、第2回「顧客データがすべて盗まれる?!」でASPの例を示しているので参照していただきたい。

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

 Webサーバプログラム(apacheやIIS)が稼働しているOS上で任意のOSコマンドを実行させる攻撃のことである。このとき、OSコマンドは通常はWebサーバの実行ユーザーと同じ権限で実行される。

 もしWebサーバ上のコンテンツがこのユーザーで書き換え可能である場合、簡単にページ改ざんを行える。また、任意のOSコマンドが実行できるため、スパムの踏み台やほかのサーバへ侵入するための踏み台として利用されることもある。

脆弱性が存在する可能性がある個所

 OSコマンドを呼び出している個所だけでなく、perlで開発している場合はファイルを開くopen()関数が使われている個所にも存在する可能性がある。詳細は、前回「OSコマンドインジェクションを防ぐルールを作成する」を参照していただきたい。また、問い合わせアプリケーションではsendmailコマンドを呼び出している場合が多いので特に注意が必要である。

対策

  • 入力チェック
  • サニタイジング

 まず、受け付ける文字列が想定されたものかどうかチェックしよう。perlのopen()関数の場合は、これだけでほぼ防ぐことができるだろう。

 次に、入力文字列をシェルに渡すような作りの場合、シェル上の特殊文字を取り除く必要がある。シェル上の特殊文字は第2回「顧客データがすべて盗まれる?!」で説明しているので参照していただきたい。

言語別の対策例

perl

 OSコマンドに渡す引数全体を「'(シングルクオーテーション)」でくくり、シングルクオーテーションをサニタイジングすれば特殊文字は全く機能しなくなる。

$text =~ s/’/\\’/g;
system("echo ‘$text'");

PHP

$safe_text = escapeshellarg($text);
system($safe_text);

Copyright © ITmedia, Inc. All Rights Reserved.

Security & Trust 記事ランキング

  1. ランサムウェア攻撃を受けた企業、約6割が「サプライチェーンのパートナー経由で影響を受けた」 OpenText調査
  2. インサイダーが原因の情報漏えいを経験した国内企業が約3割の今、対策における「責任の所在」の誤解とは
  3. 長続きする高度セキュリティ人材育成の秘訣を「第19回情報危機管理コンテスト」から探る
  4. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  5. OpenAIの生成AIを悪用していた脅威アクターとは? OpenAIが脅威レポートの最新版を公開
  6. 米国/英国政府が勧告する25の脆弱性、活発に悪用されている9件のCVEとは、その対処法は? GreyNoise Intelligence調査
  7. 約9割の経営層が「ランサムウェアは危ない」と認識、だが約4割は「問題解決は自分の役割ではない」と考えている Vade調査
  8. セキュリティ専門家も「何かがおかしいけれど、攻撃とは言い切れない」と判断に迷う現象が急増 EGセキュアソリューションズ
  9. セキュリティ担当者の54%が「脅威検知ツールのせいで仕事が増える」と回答、懸念の正体とは? Vectra AI調査
  10. 人命を盾にする医療機関へのランサムウェア攻撃、身代金の平均支払額や損失額は? 主な手口と有効な対策とは? Microsoftがレポート
ページトップに戻る