(57)【要約】      （修正有）【課題】セキュリティーホールなどの欠陥に対し、パッチが配布されるまでの間、セキュリティを確保する。【解決手段】引数を関数に渡す前に受け取る段階と、該引数を対応する関数に渡す段階とを有し、受け取った引数が関数のセキュリティーホールまたは異常動作をする範囲内のときは、該範囲に該当しない値に当該引数を変更して渡すことにより、ソフトウエアの欠陥を一時的に修正する。【選択図】  図１
2006018765.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウエアの一時的な修正方法であって、引数をルーチンに渡す前に受け取る段階と、引数を対応するルーチンに渡す段階とを有し、受け取った引数がルーチンのセキュリティーホールまたは異常動作をする範囲内のときは、該範囲に該当しない値に当該引数を変更して渡すことによりルーチンの動作を制御する方法。
【請求項２】
ソフトウエアの一時的な修正方法であって、引数をルーチンに渡す前に受け取る段階と、引数を対応するルーチンに渡す段階とを有し、受け取った引数がルーチンのセキュリティーホールまたは異常動作をする範囲内であるとき、警告メッセージを管理者に送信する方法。
【請求項３】
ソフトウエアの一時的な修正方法であって、引数をルーチンに渡す前に受け取る段階と、引数を対応するルーチンに渡す段階とを有し、受け取った引数が関数のセキュリティーホールまたは異常動作をする範囲内のときに、呼び出しを行ったプロセスがネットワーク経由で他のシステムと接続しているとき、接続先のシステムからの通信を遮断してネットワークの保護を行う方法。
【請求項４】
ソフトウエアの一時的な修正方法であって、引数をルーチンに渡す前に受け取る段階と、引数を対応するルーチンに渡す段階とを有し、受け取ったルーチンが関数のセキュリティーホールまたは異常動作をする範囲内のときは、引数を変更せず呼び出し元にエラーコードを入れて返す方法。
【請求項５】
引数が前記範囲内の時は、当該引数を変更せずに対応するルーチンに渡し警告メッセージを表示する請求項２に記載の方法。
【請求項６】
引数が前記範囲内の時は、当該引数を変更して対応するルーチンに渡し警告メッセージを表示する請求項２に記載の方法。
【請求項７】
前記ルーチンは関数またはシステムコールである請求項１ないし７のいずれか１項に記載の方法。
【請求項８】
ソフトウエアの一時的な修正方法であって、引数をルーチンに渡す前に受け取る段階と、引数を対応するルーチンに渡す段階とを有し、受け取った引数がルーチンのセキュリティーホールまたは異常動作をする範囲内のときは、該範囲に該当しない値に当該引数を変更して渡すことによりルーチンの動作を制御するプログラム。
【請求項９】
ソフトウエアの一時的な修正方法であって、引数をルーチンに渡す前に受け取る段階と、引数を対応するルーチンに渡す段階とを有し、受け取った引数がルーチンのセキュリティーホールまたは異常動作をする範囲内であるとき、警告メッセージを管理者に送信するプログラム。
【請求項１０】
ソフトウエアの一時的な修正方法であって、引数をルーチンに渡す前に受け取る段階と、引数を対応するルーチンに渡す段階とを有し、受け取った引数が関数のセキュリティーホールまたは異常動作をする範囲内のときに、呼び出しを行ったプロセスがネットワーク経由で他のシステムと接続しているとき、接続先のシステムからの通信を遮断してネットワークの保護を行うプログラム。
【請求項１１】
ソフトウエアの一時的な修正方法であって、引数をルーチンに渡す前に受け取る段階と、引数を対応するルーチンに渡す段階とを有し、受け取ったルーチンが関数のセキュリティーホールまたは異常動作をする範囲内のときは、引数を変更せず呼び出し元にエラーコードを入れて返すプログラム。
【請求項１２】
引数が前記範囲内の時は、当該引数を変更せずに対応するルーチンに渡し警告メッセージを表示する請求項２に記載のプログラム。
【請求項１３】
引数が前記範囲内の時は、当該引数を変更して対応するルーチンに渡し警告メッセージを表示する請求項２に記載のプログラム。
【請求項１４】
前記ルーチンは関数またはシステムコールである請求項１ないし７のいずれか１項に記載のプログラム。
【請求項１５】
ソフトウエアの一時的な修正方法であって、請求項８ないし１４のいずれか１項に記載のプログラムをあらかじめソフトウエアに組み込む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソフトウエアにセキュリティーホールまたはバグ等の欠陥が発見された際に、パッチ等の修正プログラムを配布するまでの間の期間に、一時的にこれらの欠陥を修正する方法およびプログラムに関する。
【背景技術】
【０００２】
現在、コンピュータシステムでは、データやシステムに不正アクセスが可能となるいわゆるセキュリティーホールが問題となっている。これはオペレーティングシステムやアプリケーションに存在する欠陥が原因であり、これを解決するには修正プログラム、いわゆるパッチを配布する必要がある。
【０００３】
しかしながらパッチは、修正された部分が他のアプリケーションに影響を及ぼすことがあるため、パッチの影響をテストして動作確認を行った後に配布しなければならない。
【０００４】
パッチのテストには時間がかかるためパッチを適用するまでの間はシステムは修正されないままになり、セキュリティーホールへの侵入に対して脆弱となる。また重要なシステムにはパッチを適用することが事実上不可能であったり、すぐには適用できない場合も多く、その間に不正アクセスの被害を受ける場合がある。
【特許文献１】特開平５−１８１６６４
【特許文献２】特開平５−２４１８１３
【特許文献３】特開平５−１５０９７２
【特許文献４】特開平５−１４３３１４
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従って、正式なパッチが配布されシステムに適用されるまでの間に、一時的にセキュリティーホール等の欠陥に対して適切な対処を取ることが要求されている。
【課題を解決するための手段】
【０００６】
上述のような問題に鑑みて、本発明は、ソフトウエアの一時的な修正方法であって、引数をルーチンに渡す前に受け取る段階と、引数を対応するルーチンに渡す段階とを有し、受け取った引数がルーチンのセキュリティーホールまたは異常動作をする範囲内のときは、該範囲に該当しない値に当該引数を変更して渡すことによりルーチンの動作を制御する方法を提供する。これによってセキュリティーホールによる不正進入などの場合でも引数を変更してシステムを保護することが出来る。
【０００７】
本発明の他の実施形態として、ソフトウエアの一時的な修正方法であって、引数をルーチンに渡す前に受け取る段階と、引数を対応するルーチンに渡す段階とを有し、受け取った引数がルーチンのセキュリティーホールまたは異常動作をする範囲であるとき、警告メッセージを管理者に送信する方法も提供する。警告メッセージを管理者に送信することにより、システム等をネットワークから一時的に遮断するなどの応急的な処置を施すことが出来る。警告メッセージの送信には、電子メール、ＳＮＭＰトラップ、各種インスタント・メッセージング・サービス、ＨＴＴＰプロトコル、各種ＴＣＰコネクション、各種ＵＤＰパケット、シリアル通信、携帯電話、ポケットベル等が使用できる。
【０００８】
本発明は引数を関数に渡す前にチェックすることが特徴であるため、受け取った引数が関数のセキュリティーホールまたは異常動作をする範囲内のときに、呼び出しを行ったプロセスがネットワーク経由で他のシステムと接続している場合、接続先のシステムからの通信を遮断してネットワークの保護を行う方法も提供できる。通信を遮断する手段としては、ファイアウォールのポリシーを変更、ルータのアクセス制御リストを変更、スイッチングハブのＶＬＡＮの設定を変更、等が可能である。
【０００９】
また引数がルーチンの異常動作を引き起こす範囲内の時に引数を変更せず、呼び出し元にエラーコードを入れて返す方法も提供する。これと類似の方法として、当該引数を変更せずに対応するルーチンに渡し警告メッセージを表示することもできる。同様に引数を変更してメッセージを表示することもできる。また、本発明において、ルーチンとは関数またはシステムコールを想定しているが、これに類するものにも対応することができる。
【００１０】
さらに、上記のそれぞれの方法を実現するコンピュータプログラムを提供する。これによって実際にコンピュータ、或いはインターネットなどのネットワークにおいて、セキュリティーホールを一時的に修正することが出来る。またこのようなプログラムを配布する方法として、あらかじめソフトウエアに組み込む方法を提供する。この場合、あるルーチンにセキュリティーホールが発生した場合には、そのルーチンを指定するパラメータと、そのルーチンの引数のチェック方法を指定するパラメータ、ならびに受け取った引数がチェックでルーチンのセキュリティーホールまたは異常動作をする範囲であると判定された際に行うべき処理を指定するパラメータ等をそのプログラムに設定することで、毎回、プログラムをインストールすること無く、上記のそれぞれの方法を実現することも可能である。ここで指定する各種パラメータをこのプログラムを使用する第三者に配布する場合、パラメータの内容が改ざんされたり悪意の第三者が作成していないことを保証するために、暗号化したり電子署名を行った上で配布することも可能である。
【発明を実施するための最良の形態】
【００１１】
以下に本発明を図を用いて説明する。図１は本発明の引数チェックの方法を示したブロック図である。まずセキュリティーホールやバグなどの欠陥が見つかった場合、参照番号１で示されているように、該当するルーチンが異常動作をする引数の範囲を設定する。まだ欠陥が見つかっていない場合は設定する必要がないので、このブロックの処理は省略する。
【００１２】
次に参照番号２で示されているように引数および引数関連情報を取得する。通常、ソフトウエアでは多くの引数を使用するため、引数を渡すルーチンを識別するための引数関連情報も同時に取得する。この引数関連情報は例えば、ルーチン名、ルーチンのアドレス、ルーチンのハンドルなどである。また、ルーチンは関数またはシステムコールである。しかしながら、これらに限定されるものではなく、引数関連情報は引数とルーチンを関連づけることができる情報であればよく、ルーチンはメインルーチンから呼び出され、引数を受け取るものであればよい。
【００１３】
次の段階では、参照番号３で示されているように引数の値が設定されているか否かを調べる。ここで引数の値が設定されていなければ、参照番号５で示されているように引数を対応するルーチンに渡す。引数の値が設定されていれば次の段階の処理を行う。
【００１４】
次の段階４では、引数関連情報に基づいて取得した引数が、参照番号１の段階で設定された範囲内であるか否かを調べる。設定された範囲外である場合には、参照番号５で示されたように、引数を引数関連情報に基づいて対応するルーチンに渡す。引数が設定された範囲内である時は次の段階の処理を行う。
【００１５】
最後の段階６ではセキュリティーホールやバグなどに対応できるように適切な処理を行う。この処理は以下の処理のいずれかを行う。
（１）  引数を設定した範囲外に変更して、対応するルーチンに渡す。
（２）  警告メッセージを表示する。
（３）  呼び出しを行ったプロセスがネットワークを経由して他のシステムと接続しているとき、接続先のシステムからの通信を遮断する。
（４）  引数を変更せずに、呼び出し元にエラーコードを入れて値を返す。
（５）  引数を変更せずに対応するルーチンに渡して、警告メッセージを表示する。
【００１６】
以上のように、引数をルーチンに渡す前に受け取り、値をチェックすることによってソフトウエアの欠陥に対して、パッチを配布するまでの間、適切な処置を施すことができる。このような各処理をプログラムとして実装することによってセキュリティーホールやバグなどによるソフトウエアの異常動作を一時的に修正することができる。また本発明のプログラムを配布する方法としては、あらかじめソフトウエアに組み込んでおくことが好ましい。しかしながらこれに限定されるものではなく、例えば各種ローダブルモジュールや実行モジュールで実装して、ＣＤＲＯＭなどの媒体やインターネット等のネットワーク経由で配布することもできる。
【００１７】
本発明の引数チェックプログラムの動作において、引数および引数関連情報を記憶するために、これらの情報を蓄える参照テーブルを用いることができる。引数チェックにはこの参照テーブルを用いて引数の範囲をチェックする。また、ソフトウエアに欠陥が見つかった場合は参照テーブルに記憶させる情報のみを送信する。これによってより迅速にソフトウエアの欠陥に対応することができる。
【００１８】
このように本発明の方法は引数をルーチンに渡す前に受け取り、値の範囲をチェックするものであるため、パッチ等の開発に比べて早く開発できる利点を有している。また処理のロジックを変更することがないため、引数チェックプログラムをカーネル等に組み込んだ場合の他の処理への影響が無く、事前テストも不要となる。さらに、セキュリティホールなどが発生した時にのみ引数チェックを行うのでシステムのパフォーマンスに影響を及ぼすことがない。従って、新たに開発する製品にこのようなプログラムまたは方法を組み込むだけでなく、従来の製品にも本発明のプログラムまたは方法を組み込んで配布することもできる。
【図面の簡単な説明】
【００１９】
【図１】図１は本発明の方法を示したブロック図である。
【符号の説明】
【００２０】
１  引数の値、引数関連情報を設定する段階
２  引数および引数関連情報を取得する段階
３  引数の値が設定されているか否かを判断する段階
４  引数が設定された範囲内にあるか否かを判断する段階
５  引数を、引数関連情報に基づいて対応する関数に渡す段階
６  適切な処理を行う段階
【図１】
2006018765.tif 000003