CGI プログラムの機能は強力ですが、だからこそ CGI 開発者やシステム管理者が CGI プログラムの作成や設定に注意を払わないと、システムは穴だらけになってしまいます。 この記事では、CGI のセキュリティ問題について説明します。
3. CGIの安全性
CGIプログラムの機能は通常のプログラムの機能だけでなく、プログラムの結果をWEB上に公開することもできます。 しかし、CGI プログラムの機能が非常に強力であるからこそ、CGI 開発者またはシステム管理者が CGI プログラムの作成と設定に注意を払わないと、システムは穴だらけになり、一部の違法ユーザーがそれを利用できるようになります。彼らのうち。
ここで述べたセキュリティは CGI の仕様によって引き起こされるものではなく、不適切なプログラミングやシステム設定によって引き起こされます。 CGI 仕様により、ユーザーはサーバーの計算能力を利用できるようになります。サーバー上の不適切な計算は、システムのセキュリティの脆弱性につながります。 以下に、UNIX システム上の CGI セキュリティの脆弱性を示します。この脆弱性は非常に一般的です。
# !/usr/local/bin/perl
#formmail.cgi
「cgi.pl」が必要です。
# 「formname」フィールドの Subject: ヘッダーを使用して電子メール アプリケーション「/bin/mail」を起動します
open (MAIL, "|/bin/mail -s '".$input{"フォーム名"}."' webweave");
# send "formcontents" フィールドをメッセージの本文として追加します
PRint MAIL $input{"formcontents"};
閉じる(メール);
終了(0);
この例では、CGI プログラムはフォーム情報を /bin/mail に送信し、webveave サーバーに送信します。 ほとんどの場合、この CGI プログラムは正常にタスクを完了できますが、この CGI プログラムはユーザーが WEB フォームに入力した情報をフィルタリングしないため、セキュリティ上のリスクが残ります。 ユーザーや悪意のある人が間違ったデータを入力すると、システム エラーが発生したり、不当な許可が得られたりする可能性があります。
例えば、ユーザーはWEBフォームの「フォーム名」に以下の内容を入力します。
"ls /etc/passwd '[email protected] #'
/etc/passwd の内容がユーザーの WEB ブラウザに表示されます。この UNIX システムの passwd ファイルにシャドウがない場合、ユーザーはこの内容を使用して、クラック ジャックまたはクラック ジョン! を使用してパスワードの解読を試みることができます。
前に述べたように、CGI のセキュリティはプログラマとシステム管理者の両方の責任です。ここでは、両者が注意を払うべき点について説明します。
システム管理者の仕事:
1. プログラマと協力してサーバーのセキュリティに関する情報を共有し、お互いのコードを同時にチェックし、コード内のセキュリティ上の問題をタイムリーに発見します。
2. 優れたサーバー ソフトウェアを使用し、サーバー ソフトウェアの Web サイトに頻繁にアクセスして最新情報を入手します。
3. サーバーユーザーを特定のネットワークホストに制限する、サーバーのセキュリティ管理機能を使用する、ルーティングアクセス制御を設定するなど。
4. CGI 機能を制限し、一部の高度なサービスを信頼できるユーザーに制限し、テスト済み CGI プログラムの使用を開発者に制限し、テスト済み CGI プログラムのみをユーザーに提供します。
5. 他人の CGI プログラムを使用する場合は、コードをよく確認してください。
6. CGI プログラムの使用を保護された環境に制限し、サーバーを非特権ユーザー アクセスに設定し、CGI プログラム専用の実行アカウントまたはグループを設定します。
7. CGI プログラムを実行するサーバーをファイアウォールの外側に設定します。CGI プログラムを実行するサーバーがファイアウォールの内側に設定されている場合、不正なユーザーがセキュリティの脆弱性を発見した場合は、そのサーバーをファイアウォールの外側に設定する必要があることに注意してください。 CGI プログラム サーバーを使用すると、ファイアウォール内のすべてのホストを制御できます。
8. CGI プログラムの実行優先順位を下げて、ユーザーが悪意を持って多数の CGI プログラムを実行してサーバーの過負荷を引き起こすのを防ぎます。
9. ネットワーク セキュリティに関する電子メールを購読し、ネットワーク セキュリティ ニュース グループに参加します。
CGIプログラマーの仕事:
1. システム管理者と協力してシステムのセキュリティ情報を把握し、お互いのコードを確認します。
2. 信頼できるライブラリプログラムを使用し、ライブラリプログラムのソースコードを確認してください。
3. REMOTE_HOST からクライアント名を取得し、一部の高度な機能を信頼できるクライアントに制限します。
4. WEB サーバーが HTTP パスワードの確認を提供する場合は、HTTP パスワードを使用してアクセスを制限します。
5. ユーザー入力をフィルタリングし、不正な入力データを削除します。
6. 悪意のあるユーザーが大量のデータを入力してサーバーに過負荷がかかるのを防ぐために、入力データのサイズを制限します。
7. ユーザーがコマンド インタープリタを呼び出したり、他のアプリケーションのセキュリティの脆弱性を悪用したりするのを防ぐために、ユーザー データを他のアプリケーションに渡さないようにします。
8. CGI プログラムの脆弱性を発見した場合は、誰にも知らせず、ましてやプログラムにコメントを残さないでください。すぐに脆弱性にパッチを適用する必要があります。
9. 攻撃者になることを学び、CGI プログラムのセキュリティの脆弱性を見つけます。