JPWO2014021190A1 - プログラム実行装置及びプログラム解析装置 - Google Patents
プログラム実行装置及びプログラム解析装置 Download PDFInfo
- Publication number
- JPWO2014021190A1 JPWO2014021190A1 JP2014528105A JP2014528105A JPWO2014021190A1 JP WO2014021190 A1 JPWO2014021190 A1 JP WO2014021190A1 JP 2014528105 A JP2014528105 A JP 2014528105A JP 2014528105 A JP2014528105 A JP 2014528105A JP WO2014021190 A1 JPWO2014021190 A1 JP WO2014021190A1
- Authority
- JP
- Japan
- Prior art keywords
- vulnerability
- library function
- countermeasure
- program
- countermeasure processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000006870 function Effects 0.000 claims abstract description 107
- 238000012545 processing Methods 0.000 claims abstract description 106
- 238000000034 method Methods 0.000 claims description 31
- 238000012360 testing method Methods 0.000 claims description 20
- 238000013515 script Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 13
- 238000004458 analytical method Methods 0.000 description 36
- 230000003068 static effect Effects 0.000 description 26
- 238000011161 development Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000012795 verification Methods 0.000 description 7
- 230000002411 adverse Effects 0.000 description 6
- 238000007405 data analysis Methods 0.000 description 6
- 230000005856 abnormality Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000002347 injection Methods 0.000 description 4
- 239000007924 injection Substances 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000007123 defense Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000007639 printing Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001784 detoxification Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
脆弱性を狙った攻撃がなされる前に脆弱性に対する対策処理を確実に実行する。脆弱性対策処理部1233は、汎用ライブラリ1230に含まれる汎用ライブラリ関数のうち脆弱性のある汎用ライブラリ関数である脆弱性ライブラリ関数の脆弱性に対する対策処理を行う。対策選択部1232は、Webアプリケーション1220の実行時に脆弱性ライブラリ関数の呼び出しが要求された場合に、脆弱性ライブラリ関数の脆弱性に対する対策処理を脆弱性対策処理部1233に行わせ、脆弱性対策処理部1233により対策処理が行われた後に、脆弱性ライブラリ関数を呼び出す。
Description
本発明は、プログラムの脆弱性に対する対策処理を行う技術に関する。
従来から、OS(Operating System)やアプリケーションプログラム(以下、単に「アプリケーション」という)などに存在するセキュリティ上の脆弱性を攻撃することで、データやプログラムの改ざん、コンピュータやアプリケーションの強制停止、コンピュータへの不正侵入や不正操作などの被害が発生している。
近年では、Webサーバ上で動作するWebアプリケーションへの攻撃が増加しており、機密情報や個人情報の漏えいや改ざん、サービスの不正利用などが社会的な問題となっている。
Webアプリケーションに対する攻撃は、Webアプリケーションに対するクライアントからの入力データとなるHTTP(HyperText Transfer Protocol)のリクエスト中に、不正なデータを混入させることで行う。
Webアプリケーションの脆弱性は、入力データを利用する処理内容に応じて異なり、クロスサイトスクリプティングやSQLインジェクションなどの複数の種類があることが知られている。
近年では、Webサーバ上で動作するWebアプリケーションへの攻撃が増加しており、機密情報や個人情報の漏えいや改ざん、サービスの不正利用などが社会的な問題となっている。
Webアプリケーションに対する攻撃は、Webアプリケーションに対するクライアントからの入力データとなるHTTP(HyperText Transfer Protocol)のリクエスト中に、不正なデータを混入させることで行う。
Webアプリケーションの脆弱性は、入力データを利用する処理内容に応じて異なり、クロスサイトスクリプティングやSQLインジェクションなどの複数の種類があることが知られている。
例えば、クロスサイトスクリプティングは、HTML(HyperText Markup Language)データを動的に生成する処理における脆弱性を利用した攻撃であり、この脆弱性により、HTMLデータ中にスクリプトが混入することを許してしまう。
また、SQLインジェクションは、リレーショナルデータベースのデータ操作を行うSQL文を発行する処理の脆弱性を利用した攻撃であり、この脆弱性により、アプリケーションが想定しないSQL文が実行されることを許してしまう。
また、SQLインジェクションは、リレーショナルデータベースのデータ操作を行うSQL文を発行する処理の脆弱性を利用した攻撃であり、この脆弱性により、アプリケーションが想定しないSQL文が実行されることを許してしまう。
脆弱性を攻撃するための不正なデータは、脆弱性の種類によって異なり、それらの対策方法も異なる。
例えば、クロスサイトスクリプティングを行うための方法の1つとして、不正なデータとして<SCRIPT>タグをリクエスト中に含める方法がある。
クロスサイトスクリプティングの対策としては、生成するHTML中で<SCRIPT>タグが<SCRIPT>タグとして解釈されないようにHTML文法に則り無害化することである。
また、SQLインジェクションでは、文字列を括るための「’」を混入することで文字列を終端し、その後に任意のSQL文を混入する方法がある。
このようなSQLインジェクションに対する対策は、入力データに含まれる「’」が、文字列を括る記号であることを意味しないようにSQLの文法に則り無害化することである。
例えば、クロスサイトスクリプティングを行うための方法の1つとして、不正なデータとして<SCRIPT>タグをリクエスト中に含める方法がある。
クロスサイトスクリプティングの対策としては、生成するHTML中で<SCRIPT>タグが<SCRIPT>タグとして解釈されないようにHTML文法に則り無害化することである。
また、SQLインジェクションでは、文字列を括るための「’」を混入することで文字列を終端し、その後に任意のSQL文を混入する方法がある。
このようなSQLインジェクションに対する対策は、入力データに含まれる「’」が、文字列を括る記号であることを意味しないようにSQLの文法に則り無害化することである。
従来では、Webアプリケーションの脆弱性に対する攻撃を防御するためには、主に以下の2つの対策が採られている。
1つは、各種脆弱性を発生させる入力データを検証して、不正なデータを無害化するセキュリティ機能を、脆弱性が発生しうる処理内容に応じてWebアプリケーション自体に組み込むことである。
2つ目の防御方法は、WebアプリケーションへのHTTPリクエストをWebアプリケーションに到達する前に検査して、攻撃が発生する可能性があるHTTPリクエストのブロックや無害化を行うWebアプリケーションファイアウォールを利用することである。
1つは、各種脆弱性を発生させる入力データを検証して、不正なデータを無害化するセキュリティ機能を、脆弱性が発生しうる処理内容に応じてWebアプリケーション自体に組み込むことである。
2つ目の防御方法は、WebアプリケーションへのHTTPリクエストをWebアプリケーションに到達する前に検査して、攻撃が発生する可能性があるHTTPリクエストのブロックや無害化を行うWebアプリケーションファイアウォールを利用することである。
1つ目の防御方法については、OWASP(The Open Web Application Security Project)などの組織が組み込むセキュリティ機能などのガイドラインを公開している。
また、セキュリティ機能の組み込みを支援する方法として、プログラムのソースコードを解析することで、脆弱性が発生しうる箇所を検出する方法も知られている(例えば、特許文献1)。
また、セキュリティ機能の組み込みを支援する方法として、プログラムのソースコードを解析することで、脆弱性が発生しうる箇所を検出する方法も知られている(例えば、特許文献1)。
2つ目の防御方法のWebアプリケーションファイアウォールについては、事前に登録してある不正なデータのパターンが含まれているかを検証し、不正なデータのパターンがHTTPリクエストに含まれていた場合には、通信の遮断やデータの無害化などを行う方法が一般的である(例えば、非特許文献1)。
また、各種の脆弱性対策を行うライブラリを用いる方法がある(例えば、特許文献2)。
この方法では、開発者が作成したリクエストの各パラメータに対する各種脆弱性の対策の要否を記載した設定ファイルを読込み、設定ファイルの内容に応じてHTTPリクエストの受信時にパラメータごとに指定された脆弱性対策を行うライブラリを利用することで、Webアプリケーションの脆弱性対策を効率的に行うことができる。
また、各種の脆弱性対策を行うライブラリを用いる方法がある(例えば、特許文献2)。
この方法では、開発者が作成したリクエストの各パラメータに対する各種脆弱性の対策の要否を記載した設定ファイルを読込み、設定ファイルの内容に応じてHTTPリクエストの受信時にパラメータごとに指定された脆弱性対策を行うライブラリを利用することで、Webアプリケーションの脆弱性対策を効率的に行うことができる。
ModSecurity <URL:http://www.modsecurity.org/>
従来のWebアプリケーション内のソースコードを静的に解析する方法(特許文献1)は、脆弱性が発生しうる箇所は検出するものの、脆弱性に対する対策方法の検討と修正は、Webアプリケーションの開発者が個別に行わなければいけないという課題がある。
また、Webアプリケーションファイアウォールによって対策する方法(非特許文献1)は、Webアプリケーションが行う処理内容を考慮しない。
従って、Webアプリケーションの処理内容によっては特定の種類の脆弱性が問題にならない場合やWebアプリケーションにおいて脆弱性の対策を施している場合も、不正なデータのパターンに該当するものの無害なデータが不正なデータとして誤検出されてしまう。
このため、Webアプリケーションでは実質問題がない通信を遮断することや、無害化によって、正常に扱えるデータが変換されてしまう悪影響が発生するという課題がある。
従って、Webアプリケーションの処理内容によっては特定の種類の脆弱性が問題にならない場合やWebアプリケーションにおいて脆弱性の対策を施している場合も、不正なデータのパターンに該当するものの無害なデータが不正なデータとして誤検出されてしまう。
このため、Webアプリケーションでは実質問題がない通信を遮断することや、無害化によって、正常に扱えるデータが変換されてしまう悪影響が発生するという課題がある。
さらに、リクエストのパラメータごとに対策する方法(特許文献2)は、設定ファイルを開発者がパラメータごとに設定する必要があり手間がかかるという課題がある。
さらに、設定ミスなどにより、脆弱性の対策抜けや不必要な対策を選択してしまう可能性がある。
さらに、指定された脆弱性対策は、Webアプリケーションファイアウォールと同様にHTTPリクエスト受信時に一括して行われるため、施された脆弱性対策が別の脆弱性の可能性がある処理に悪影響を及ぼすという課題もある。
さらに、設定ミスなどにより、脆弱性の対策抜けや不必要な対策を選択してしまう可能性がある。
さらに、指定された脆弱性対策は、Webアプリケーションファイアウォールと同様にHTTPリクエスト受信時に一括して行われるため、施された脆弱性対策が別の脆弱性の可能性がある処理に悪影響を及ぼすという課題もある。
この発明は上記のような課題を解決することを主な目的としており、脆弱性を狙った攻撃がなされる前に脆弱性に対する対策処理を確実に実行し、対策漏れを防止し、不要な対策処理による悪影響を回避できる構成を得ることを主な目的とする。
本発明に係るプログラム実行装置は、
ライブラリ関数を用いるプログラムを実行するプログラム実行装置であって、
前記プログラムで用いられるライブラリ関数のうち脆弱性のあるライブラリ関数である脆弱性ライブラリ関数の脆弱性に対する対策処理を行う脆弱性対策処理部と、
前記プログラム実行時に前記脆弱性ライブラリ関数の呼び出しが要求された場合に、前記脆弱性ライブラリ関数の脆弱性に対する対策処理を前記脆弱性対策処理部に行わせ、前記脆弱性対策処理部により対策処理が行われた後に、前記脆弱性ライブラリ関数を呼び出す脆弱性対策制御部とを有することを特徴とする。
ライブラリ関数を用いるプログラムを実行するプログラム実行装置であって、
前記プログラムで用いられるライブラリ関数のうち脆弱性のあるライブラリ関数である脆弱性ライブラリ関数の脆弱性に対する対策処理を行う脆弱性対策処理部と、
前記プログラム実行時に前記脆弱性ライブラリ関数の呼び出しが要求された場合に、前記脆弱性ライブラリ関数の脆弱性に対する対策処理を前記脆弱性対策処理部に行わせ、前記脆弱性対策処理部により対策処理が行われた後に、前記脆弱性ライブラリ関数を呼び出す脆弱性対策制御部とを有することを特徴とする。
本発明によれば、プログラム実行時に脆弱性ライブラリ関数の呼び出しが要求された場合に、当該脆弱性ライブラリ関数の脆弱性に対する対策処理を行うため、脆弱性を狙った攻撃がなされる前に脆弱性に対する対策処理を確実に実行することができ、対策漏れを防止し、不要な対策処理による悪影響を回避することができる。
実施の形態1.
本実施の形態及び以降の実施の形態では、必要十分なWebアプリケーションのセキュリティ対策を自動選択し、対策漏れの防止と脆弱性対策による悪影響を回避するWebアプリケーション脆弱性対策システムを説明する。
本実施の形態及び以降の実施の形態では、必要十分なWebアプリケーションのセキュリティ対策を自動選択し、対策漏れの防止と脆弱性対策による悪影響を回避するWebアプリケーション脆弱性対策システムを説明する。
図1は、本実施の形態に係るWebアプリケーション脆弱性対策システムを含むシステム構成図である。
図1に示すように、本実施の形態に係るシステムは、Webアプリケーション脆弱性対策システム1000、クライアント端末2000、ネットワーク3000(インターネット等のネットワーク)から構成される。
Webアプリケーション脆弱性対策システム1000と複数のクライアント端末2000は、ネットワーク3000を介して接続される。
図1に示すように、本実施の形態に係るシステムは、Webアプリケーション脆弱性対策システム1000、クライアント端末2000、ネットワーク3000(インターネット等のネットワーク)から構成される。
Webアプリケーション脆弱性対策システム1000と複数のクライアント端末2000は、ネットワーク3000を介して接続される。
また、図2は、本実施の形態のWebアプリケーション脆弱性対策システム1000の構成図である。
なお、図2では、図示を省略しているが、Webアプリケーション脆弱性対策システム1000は、CPU(Central Processing Unit)、メモリ、二次記憶装置等のハードウェア資源を有している。
そして、以下に説明する機能を実現するプログラムを二次記憶装置に格納しておき、プログラムの実行に際して、二次記憶装置からプログラムをメモリにロードし、CPUがメモリにロードされたプログラムを実行する。
なお、図2では、図示を省略しているが、Webアプリケーション脆弱性対策システム1000は、CPU(Central Processing Unit)、メモリ、二次記憶装置等のハードウェア資源を有している。
そして、以下に説明する機能を実現するプログラムを二次記憶装置に格納しておき、プログラムの実行に際して、二次記憶装置からプログラムをメモリにロードし、CPUがメモリにロードされたプログラムを実行する。
図2において、Webアプリケーション脆弱性対策システム1000は、開発環境1100と実行環境1200から構成される。
開発環境1100は、開発者がWebアプリケーションを実装・試験するための環境である。
実行環境1200は、運用を開始したWebアプリケーションを実行するための環境である。
実行環境1200は、プログラム実行装置の例に相当する。
開発環境1100は、開発者がWebアプリケーションを実装・試験するための環境である。
実行環境1200は、運用を開始したWebアプリケーションを実行するための環境である。
実行環境1200は、プログラム実行装置の例に相当する。
開発環境1100は、静的コード解析部1120を備える。
静的コード解析部1120は、Webアプリケーションのソースコード又は実行コード(「Webアプリケーションのソース/実行コード1101」と表記する)を読込み、Webアプリケーションのソース/実行コード1101を静的解析して、脆弱性対策のための動作設定ファイル1130を出力する。
また、静的コード解析部1120は、Webアプリケーション入力部1121、汎用ライブラリ利用検証部1122、外部入力データ解析部1123、動作設定ファイル出力部1124から構成される。
静的コード解析部1120は、Webアプリケーションのソースコード又は実行コード(「Webアプリケーションのソース/実行コード1101」と表記する)を読込み、Webアプリケーションのソース/実行コード1101を静的解析して、脆弱性対策のための動作設定ファイル1130を出力する。
また、静的コード解析部1120は、Webアプリケーション入力部1121、汎用ライブラリ利用検証部1122、外部入力データ解析部1123、動作設定ファイル出力部1124から構成される。
Webアプリケーション入力部1121は、Webアプリケーションのソース/実行コード1101を読込む。
汎用ライブラリ利用検証部1122は、Webアプリケーションのソース/実行コード1101に対する静的コード解析により汎用ライブラリ関数を呼び出しているコードの位置と汎用ライブラリI/F1231の種類を調べて、汎用ライブラリ関数の利用方法が正しいかを検証する。
外部入力データ解析部1123は、静的コード解析によりWebアプリケーションの外部からの入力データ(外部入力データ)のデータフローを解析し、その外部入力データの利用されるコードの位置と取り得る値(データの値及びデータの型)を解析する。
動作設定ファイル出力部1124は、汎用ライブラリ利用検証部1122と外部入力データ解析部1123の解析結果に基づいて、汎用ライブラリの実行時の動作を決定するための動作設定ファイル1130を出力する。
なお、動作設定ファイル1130には、脆弱性のある汎用ライブラリ関数(以下、「脆弱性ライブラリ関数」という)と、脆弱性ライブラリ関数で処理された場合に異常が発生し得るパラメータの名称と当該パラメータにおける不正値と、脆弱性ライブラリ関数を呼び出すコード位置のうち異常が発生し得るコード位置とが記述されている。
動作設定ファイル1130は、脆弱性情報の例に相当する。
汎用ライブラリ利用検証部1122は、Webアプリケーションのソース/実行コード1101に対する静的コード解析により汎用ライブラリ関数を呼び出しているコードの位置と汎用ライブラリI/F1231の種類を調べて、汎用ライブラリ関数の利用方法が正しいかを検証する。
外部入力データ解析部1123は、静的コード解析によりWebアプリケーションの外部からの入力データ(外部入力データ)のデータフローを解析し、その外部入力データの利用されるコードの位置と取り得る値(データの値及びデータの型)を解析する。
動作設定ファイル出力部1124は、汎用ライブラリ利用検証部1122と外部入力データ解析部1123の解析結果に基づいて、汎用ライブラリの実行時の動作を決定するための動作設定ファイル1130を出力する。
なお、動作設定ファイル1130には、脆弱性のある汎用ライブラリ関数(以下、「脆弱性ライブラリ関数」という)と、脆弱性ライブラリ関数で処理された場合に異常が発生し得るパラメータの名称と当該パラメータにおける不正値と、脆弱性ライブラリ関数を呼び出すコード位置のうち異常が発生し得るコード位置とが記述されている。
動作設定ファイル1130は、脆弱性情報の例に相当する。
また、実行環境1200は、Webサーバプログラム1210、Webアプリケーション1220、汎用ライブラリ1230、動作設定ファイル記憶部1240から構成される。
Webサーバプログラム1210は、Webアプリケーション1220を実行するためのプログラムである。
Webアプリケーション1220は、汎用ライブラリ関数を呼び出し、汎用ライブラリ関数の実行結果を得る。
汎用ライブラリ1230は、HTTPリクエストの送受信や、HTML出力処理や、データベースへのアクセス、ファイルの読み書きなどの一般的なWebアプリケーションで行われる処理を行うための機能を提供する。
動作設定ファイル記憶部1240は、開発環境1100の静的コード解析部1120より出力された動作設定ファイル1130を記憶する。
動作設定ファイル記憶部1240は、脆弱性情報記憶部の例に相当する。
動作設定ファイル記憶部1240は、脆弱性情報記憶部の例に相当する。
汎用ライブラリ1230は、汎用ライブラリI/F(インタフェース)1231、対策選択部1232、脆弱性対策処理部1233、汎用ライブラリ処理部1234から構成される。
汎用ライブラリI/F1231は、Webアプリケーション1220が汎用ライブラリ1230を利用するためのプログラムインタフェースを提供する。
なお、汎用ライブラリI/F1231は、HTML出力処理やデータベースアクセスなどの処理の分類ごとに用意される。
なお、汎用ライブラリI/F1231は、HTML出力処理やデータベースアクセスなどの処理の分類ごとに用意される。
脆弱性対策処理部1233は、Webアプリケーションの脆弱性に対する対策処理を行う。
なお、脆弱性対策処理部1233は、脆弱性の対策ごとに複数用意される。
つまり、脆弱性対策処理部1233は、HTML出力処理やデータベースアクセスなどの処理の分類ごとに用意される。
なお、脆弱性対策処理部1233は、脆弱性の対策ごとに複数用意される。
つまり、脆弱性対策処理部1233は、HTML出力処理やデータベースアクセスなどの処理の分類ごとに用意される。
汎用ライブラリ処理部1234は、汎用ライブラリ1230が提供する処理(HTML出力処理やデータベースアクセスなど)を行う。
汎用ライブラリ処理部1234は、汎用ライブラリ関数に相当する。
また、汎用ライブラリ処理部1234は、処理内容に応じて複数用意される。
汎用ライブラリ処理部1234は、汎用ライブラリ関数に相当する。
また、汎用ライブラリ処理部1234は、処理内容に応じて複数用意される。
対策選択部1232は、動作設定ファイル1130を読み込み、汎用ライブラリ1230内部で脆弱性の対策処理が必要か否かを判定する。
より具体的には、対策選択部1232は、Webアプリケーション1220から汎用ライブラリ関数の呼び出しが要求された場合、すなわち、汎用ライブラリ処理部1234の呼び出しが要求された場合に、動作設定ファイル1130の内容に基づき、脆弱性の対策処理が必要か否かを判定する。
そして、脆弱性の対策処理が必要な場合は、対策選択部1232は、まず、脆弱性対策処理部1233に脆弱性の対策処理を行わせ、脆弱性対策処理部1233により対策処理が行われた後に、対象の汎用ライブラリ処理部1234を呼び出す。
対策選択部1232は、脆弱性対策制御部の例に相当する。
より具体的には、対策選択部1232は、Webアプリケーション1220から汎用ライブラリ関数の呼び出しが要求された場合、すなわち、汎用ライブラリ処理部1234の呼び出しが要求された場合に、動作設定ファイル1130の内容に基づき、脆弱性の対策処理が必要か否かを判定する。
そして、脆弱性の対策処理が必要な場合は、対策選択部1232は、まず、脆弱性対策処理部1233に脆弱性の対策処理を行わせ、脆弱性対策処理部1233により対策処理が行われた後に、対象の汎用ライブラリ処理部1234を呼び出す。
対策選択部1232は、脆弱性対策制御部の例に相当する。
次に、Webアプリケーション脆弱性対策システム1000で行う動作を説明する。
Webアプリケーション脆弱性対策システム1000では、最初に開発環境1100の静的コード解析部1120でWebアプリケーションのソース/実行コード1110を静的コード解析し、動作設定ファイル1130を生成する。
そして、Webアプリケーションのソース/実行コード1110をコンパイルして実行可能にしてWebアプリケーション1220を実行環境1200に配置し、また、動作設定ファイル1130を実行環境1200に配置し、Webアプリケーション1220の運用が開始される。
Webアプリケーション脆弱性対策システム1000では、最初に開発環境1100の静的コード解析部1120でWebアプリケーションのソース/実行コード1110を静的コード解析し、動作設定ファイル1130を生成する。
そして、Webアプリケーションのソース/実行コード1110をコンパイルして実行可能にしてWebアプリケーション1220を実行環境1200に配置し、また、動作設定ファイル1130を実行環境1200に配置し、Webアプリケーション1220の運用が開始される。
開発環境1100での動作例を図3を用いて説明する。
開発環境1100では、Webアプリケーション入力部1121でWebアプリケーションのソース/実行コード1110が読込まれる(S101)。
次に、汎用ライブラリ利用検証部1122が、Webアプリケーションのソース/実行コード1110が利用する汎用ライブラリ関数を呼び出しているコードの位置(ライン数など)、呼び出しされる汎用ライブラリ関数の種類(HTML出力、データベースアクセスなど)を調べた上で、汎用ライブラリ関数に与えるデータや使い方が適切であるかを検証する(S102)。
汎用ライブラリ関数が適切に利用されていると判定した場合には(S102のYes)、外部入力データ解析部1123が、外部からの入力データが格納される変数(外部入力データ)を特定し、外部入力データのデータフローを調べて、外部入力データが利用される一連のコードの位置及び、各コードにおける外部入力データが取り得る値の範囲を調べる(S103)。
汎用ライブラリ関数が適切に利用されていないと判定した場合には(S102のNo)、適切に利用されていない汎用ライブラリ関数の種類、コード上の位置、適切に利用されていないと判定した理由などを含むメッセージを出力して処理を終了する(S104)。
次に、汎用ライブラリ利用検証部1122が、Webアプリケーションのソース/実行コード1110が利用する汎用ライブラリ関数を呼び出しているコードの位置(ライン数など)、呼び出しされる汎用ライブラリ関数の種類(HTML出力、データベースアクセスなど)を調べた上で、汎用ライブラリ関数に与えるデータや使い方が適切であるかを検証する(S102)。
汎用ライブラリ関数が適切に利用されていると判定した場合には(S102のYes)、外部入力データ解析部1123が、外部からの入力データが格納される変数(外部入力データ)を特定し、外部入力データのデータフローを調べて、外部入力データが利用される一連のコードの位置及び、各コードにおける外部入力データが取り得る値の範囲を調べる(S103)。
汎用ライブラリ関数が適切に利用されていないと判定した場合には(S102のNo)、適切に利用されていない汎用ライブラリ関数の種類、コード上の位置、適切に利用されていないと判定した理由などを含むメッセージを出力して処理を終了する(S104)。
S103の後には、動作設定ファイル出力部1124が、S102で解析した汎用ライブラリ関数を呼び出しているコードの位置及び呼び出される汎用ライブラリ関数の種類並びに、S103で解析した外部入力データが利用される一連のコードの位置及び各コードにおける外部入力データが取り得る値の結果に基づいて、動作設定ファイル1130を出力する(S105)。
この動作設定ファイル1130は、外部入力データの取り得る値によって脆弱性が発生する可能性がある汎用ライブラリ関数を呼び出すコードの位置を含む、対策選択のためのファイルである。
S105の処理をさらに具体的に説明すると、S102で解析した汎用ライブラリ関数を呼び出しているコード位置のうちS103で解析した外部入力データが利用される一連のコード位置に含まれているコード位置を抽出し、そのコード位置のコードが呼び出している汎用ライブラリ関数に、S103で解析した外部入力データの取り得る値の範囲を入力した場合に脆弱性が問題になるか否か(異常が発生するか否か)を外部入力データの値ごとに判定する。
そして、脆弱性が問題になると判定した場合には、動作設定ファイル出力部1124は、脆弱性のある汎用ライブラリ関数(脆弱性ライブラリ関数)の名称と、脆弱性ライブラリ関数を呼び出すコード位置と、外部入力データの種類(変数の名称)と、外部入力データの不正値(異常が発生する値)が記述される動作設定ファイル1130を生成する。
そして、生成された動作設定ファイル1130は、動作設定ファイル記憶部1240に出力され、動作設定ファイル記憶部1240に格納される。
この動作設定ファイル1130は、外部入力データの取り得る値によって脆弱性が発生する可能性がある汎用ライブラリ関数を呼び出すコードの位置を含む、対策選択のためのファイルである。
S105の処理をさらに具体的に説明すると、S102で解析した汎用ライブラリ関数を呼び出しているコード位置のうちS103で解析した外部入力データが利用される一連のコード位置に含まれているコード位置を抽出し、そのコード位置のコードが呼び出している汎用ライブラリ関数に、S103で解析した外部入力データの取り得る値の範囲を入力した場合に脆弱性が問題になるか否か(異常が発生するか否か)を外部入力データの値ごとに判定する。
そして、脆弱性が問題になると判定した場合には、動作設定ファイル出力部1124は、脆弱性のある汎用ライブラリ関数(脆弱性ライブラリ関数)の名称と、脆弱性ライブラリ関数を呼び出すコード位置と、外部入力データの種類(変数の名称)と、外部入力データの不正値(異常が発生する値)が記述される動作設定ファイル1130を生成する。
そして、生成された動作設定ファイル1130は、動作設定ファイル記憶部1240に出力され、動作設定ファイル記憶部1240に格納される。
次に、実行環境1200での動作例を、図4を用いて説明する。
まず、Webサーバプログラム1210は、クライアント端末2000からのHTTPリクエストを受信する(S201)。
Webサーバプログラム1210は、受信したHTTPリクエストをWebアプリケーション1220に渡す(S202)。
Webアプリケーション1220が、汎用ライブラリI/F1231を呼び出し、汎用ライブラリ関数の呼び出しを要求した場合に(S203のYes)、呼び出された汎用ライブラリI/F1231は対策選択部1232を呼び出す(S204)。
対策選択部1232は、動作設定ファイル1130を読込み、動作設定ファイル1130から、脆弱性を顕在化させる外部入力データが混入するおそれがある汎用ライブラリ関数(脆弱性ライブラリ関数)の呼び出しコード位置の情報を取得する(S205)。
次に、対策選択部1232は、S203で汎用ライブラリI/F1231を呼び出すまでに実行されたコードの位置の情報をスタックトレースなどの実行情報から取得する(S206)。
Webサーバプログラム1210は、受信したHTTPリクエストをWebアプリケーション1220に渡す(S202)。
Webアプリケーション1220が、汎用ライブラリI/F1231を呼び出し、汎用ライブラリ関数の呼び出しを要求した場合に(S203のYes)、呼び出された汎用ライブラリI/F1231は対策選択部1232を呼び出す(S204)。
対策選択部1232は、動作設定ファイル1130を読込み、動作設定ファイル1130から、脆弱性を顕在化させる外部入力データが混入するおそれがある汎用ライブラリ関数(脆弱性ライブラリ関数)の呼び出しコード位置の情報を取得する(S205)。
次に、対策選択部1232は、S203で汎用ライブラリI/F1231を呼び出すまでに実行されたコードの位置の情報をスタックトレースなどの実行情報から取得する(S206)。
次に、対策選択部1232は、脆弱性対策処理部1233を実行する必要があるか否かを判定する(S207)。
具体的には、S205で取得したコード位置の中にS206で取得したコード位置と一致するものがあれば、動作設定ファイル1130から、S206で取得したコード位置と一致するコード位置に対応付けられている脆弱性ライブラリ関数の名称と、外部入力データの種類と、外部入力データの不正値を取得する。
そして、対策選択部1232は、取得した脆弱性ライブラリ関数の名称と外部入力データの種類と外部入力データの不正値と、Webアプリケーション1220が呼び出そうとしている汎用ライブラリ関数の名称と当該汎用ライブラリ関数で処理させようとしている外部入力データの種類と外部入力データの値とを照合し、3つの要素のすべてが一致する場合に、脆弱性対策処理部1233を実行する必要があると判定する。
一方、3つの要素の少なくとも1つが一致しない場合は、脆弱性対策処理部1233を実行する必要がないと判定する。
また、対策選択部1232は、Webアプリケーション1220が呼び出そうとしている脆弱性ライブラリ関数に対応する脆弱性対策処理部1233を呼び出しの対象として指定する。
具体的には、S205で取得したコード位置の中にS206で取得したコード位置と一致するものがあれば、動作設定ファイル1130から、S206で取得したコード位置と一致するコード位置に対応付けられている脆弱性ライブラリ関数の名称と、外部入力データの種類と、外部入力データの不正値を取得する。
そして、対策選択部1232は、取得した脆弱性ライブラリ関数の名称と外部入力データの種類と外部入力データの不正値と、Webアプリケーション1220が呼び出そうとしている汎用ライブラリ関数の名称と当該汎用ライブラリ関数で処理させようとしている外部入力データの種類と外部入力データの値とを照合し、3つの要素のすべてが一致する場合に、脆弱性対策処理部1233を実行する必要があると判定する。
一方、3つの要素の少なくとも1つが一致しない場合は、脆弱性対策処理部1233を実行する必要がないと判定する。
また、対策選択部1232は、Webアプリケーション1220が呼び出そうとしている脆弱性ライブラリ関数に対応する脆弱性対策処理部1233を呼び出しの対象として指定する。
対策選択部1232は、脆弱性対策処理部1233を呼び出す必要があると判定した場合(S207のYES)には、汎用ライブラリ処理部1234の呼び出しを行う前に、脆弱性対策処理部1233の呼び出しを行い、汎用ライブラリ処理部1234が外部入力データの不正値を処理しないようにする対策処理を脆弱性対策処理部1233に行わせる(S208)。
具体的には、脆弱性対策処理部1233に外部入力データの無害化などの対策処理を行わせる。
脆弱性対策処理部1233による対策処理が完了した後に、対策選択部1232は、汎用ライブラリ処理部1234を呼び出す(S209)。
具体的には、脆弱性対策処理部1233に外部入力データの無害化などの対策処理を行わせる。
脆弱性対策処理部1233による対策処理が完了した後に、対策選択部1232は、汎用ライブラリ処理部1234を呼び出す(S209)。
脆弱性対策処理部1233の呼び出しが必要ないと判断した場合(S207のNO)には、対策選択部1232は、脆弱性対策処理部1233の呼び出しは行わずに、汎用ライブラリ処理部1234の呼び出しを行う(S209)。
以上のS203〜S209のステップは、Webサーバプログラム1210がクライアント端末2000にレスポンスを送信するまでに汎用ライブラリI/F1231が呼び出されるたびに行われる(S210)。
そして、Webサーバプログラム1210がHTTPレスポンスをクライアント端末2000に送信する場合には、Webアプリケーション1220はHTTPレスポンスをWebサーバプログラム1210に渡す(S211)。
そして、最後に、Webサーバプログラム1210は、HTTPレスポンスをクライアント端末2000に応答する(S212)。
そして、Webサーバプログラム1210がHTTPレスポンスをクライアント端末2000に送信する場合には、Webアプリケーション1220はHTTPレスポンスをWebサーバプログラム1210に渡す(S211)。
そして、最後に、Webサーバプログラム1210は、HTTPレスポンスをクライアント端末2000に応答する(S212)。
なお、開発環境100において、静的コード解析部1120がWebアプリケーションのソースコードを用いて動作設定ファイル1130を生成した場合は、動作設定ファイル1130にはソースコード上のコード位置(ライン番号等)が記述される。
一方、実行環境1200では、対策選択部1232は、コンパイル後のWebアプリケーションのコード位置をスタックトレースなどの実行情報から取得する。
このため、上記のS207では、より詳細には、対策選択部1232は、動作設定ファイル1130のソースコードでのコード位置をコンパイル後のコード位置に変換し、変換後のコード位置と、スタックトレース等により取得したコンパイル後のコード位置とを照合している。
もしくは、対策選択部1232は、スタックトレース等により取得したコンパイル後のコード位置をソースコード上のコード位置に変換し、変換後のコード位置と、動作設定ファイル1130のソースコードでのコード位置とを照合している。
このようなコード位置の変換は既存技術により可能である。
一方、実行環境1200では、対策選択部1232は、コンパイル後のWebアプリケーションのコード位置をスタックトレースなどの実行情報から取得する。
このため、上記のS207では、より詳細には、対策選択部1232は、動作設定ファイル1130のソースコードでのコード位置をコンパイル後のコード位置に変換し、変換後のコード位置と、スタックトレース等により取得したコンパイル後のコード位置とを照合している。
もしくは、対策選択部1232は、スタックトレース等により取得したコンパイル後のコード位置をソースコード上のコード位置に変換し、変換後のコード位置と、動作設定ファイル1130のソースコードでのコード位置とを照合している。
このようなコード位置の変換は既存技術により可能である。
以上のように、本実施の形態では、運用開始前にWebアプリケーションのソースコードもしくは実行コードを静的コード解析し、静的コード解析で得られたデータフローに基づいて、脆弱性対策を自動選択する機能を備えたWebアプリケーション実行環境を提供する。
これにより、必要十分なWebアプリケーションの脆弱性対策を自動選択できるため、対策漏れが防止できる上、不要な対策処理を実行しないため、対策処理による悪影響や処理速度の性能劣化を最小限にできる。
これにより、必要十分なWebアプリケーションの脆弱性対策を自動選択できるため、対策漏れが防止できる上、不要な対策処理を実行しないため、対策処理による悪影響や処理速度の性能劣化を最小限にできる。
本実施の形態では、Webアプリケーションや設定ファイルの静的コード解析の結果を使い、Webアプリケーションの脆弱性対策の必要性の有無を判定し、その判定結果に応じてWebアプリケーションの脆弱性対策を実施する機能をもつWebアプリケーション実行環境を有するWebアプリケーション脆弱性対策システムを説明した。
また、本実施の形態では、静的コード解析で得られた脆弱性対策が必要なライブラリの呼び出しの位置とWebアプリケーションの実行時に取得した呼び出されたライブラリの位置情報を比較した結果に基づいて、内部で行う動作を変更するライブラリを有することを説明した。
また、本実施の形態では、静的コード解析で得られた脆弱性対策が必要なライブラリの呼び出しの位置とWebアプリケーションの実行時に取得した呼び出されたライブラリの位置情報を比較した結果に基づいて、内部で行う動作を変更するライブラリを有することを説明した。
実施の形態2.
以上の実施の形態1では、運用開始前に外部入力データを利用する汎用ライブラリの呼び出し位置を静的コード解析で取得し、Webアプリケーションの実行時に運用開始前に取得した汎用ライブラリの呼び出し位置の情報と、スタックトレースなどのWebアプリケーションの実行情報に含まれる呼び出されたコードの位置の情報から、汎用ライブラリの内部で行う脆弱性対策の要否を動的に変更する構成を説明した。
次に、本実施の形態では、運用開始前の静的コード解析で、汎用ライブラリに渡されるデータ(HTMLやSQL文など)の構文上のどの位置に外部入力データが利用されているかを調べることで、実行時に行う脆弱性対策の正確性を向上する実施の形態を示す。
以上の実施の形態1では、運用開始前に外部入力データを利用する汎用ライブラリの呼び出し位置を静的コード解析で取得し、Webアプリケーションの実行時に運用開始前に取得した汎用ライブラリの呼び出し位置の情報と、スタックトレースなどのWebアプリケーションの実行情報に含まれる呼び出されたコードの位置の情報から、汎用ライブラリの内部で行う脆弱性対策の要否を動的に変更する構成を説明した。
次に、本実施の形態では、運用開始前の静的コード解析で、汎用ライブラリに渡されるデータ(HTMLやSQL文など)の構文上のどの位置に外部入力データが利用されているかを調べることで、実行時に行う脆弱性対策の正確性を向上する実施の形態を示す。
図5は、本実施の形態における、Webアプリケーション脆弱性対策システム1000の構成図である。
図5は、実施の形態1の構成(図2)に対して、静的コード解析部1120に構文解析部1125を追加したものである。
構文解析部1125は、外部入力データ解析部1123から呼び出されて、HTML文やSQL文などのWebアプリケーションとは異なる言語の構文を解析する機能を提供する。
構文解析部1125は、外部入力データ解析部1123から呼び出されて、HTML文やSQL文などのWebアプリケーションとは異なる言語の構文を解析する機能を提供する。
開発環境1100での動作を図6を用いて説明する。
図6のS301〜S304は、図3のS101〜S104と同様のフローであるため説明は省略する。
S305では、構文解析部1125が、汎用ライブラリ関数に渡されるデータ(HTMLやSQL文など)の構文上のどの位置に外部入力データが利用されているかを調べる。
例えば、HTML文の場合には、外部入力データが利用される箇所が、どの要素のコンテンツなのか、どの属性の属性値なのかなどを調べる。
次に、動作設定ファイル出力部1124が、S302で解析した汎用ライブラリ関数を呼び出しているコードの位置及び呼び出される汎用ライブラリ関数の名称並びに、S303で解析した外部入力データが利用される一連のコードの位置及び各コードにおける外部入力データが取り得る値、及びS305で調べた汎用ライブラリ関数に渡される外部入力データが構文上のどの位置で利用されるかの情報に基づいて、動作設定ファイル1130を出力する(S306)。
本実施の形態で生成される動作設定ファイル1130には、実施の形態1の記述内容に加えて、脆弱性ライブラリ関数に渡される外部入力データがHTML文又はSQL文の構文上のどの位置に含まれるかが記述される。
本実施の形態の動作設定ファイル1130では、この構文上の位置が複数列挙され、更に、構文上の位置ごとに対策処理が記述されている。
なお、実施の形態1の動作設定ファイル1130の記述内容は、脆弱性のある汎用ライブラリ関数(脆弱性ライブラリ関数)の名称と、脆弱性ライブラリ関数を呼び出すコード位置と、外部入力データの種類(変数の名称)と、外部入力データの不正値(異常が発生する値)である。
生成された動作設定ファイル1130は、実施の形態1と同様に、動作設定ファイル記憶部1240に出力され、動作設定ファイル記憶部1240に格納される。
S305では、構文解析部1125が、汎用ライブラリ関数に渡されるデータ(HTMLやSQL文など)の構文上のどの位置に外部入力データが利用されているかを調べる。
例えば、HTML文の場合には、外部入力データが利用される箇所が、どの要素のコンテンツなのか、どの属性の属性値なのかなどを調べる。
次に、動作設定ファイル出力部1124が、S302で解析した汎用ライブラリ関数を呼び出しているコードの位置及び呼び出される汎用ライブラリ関数の名称並びに、S303で解析した外部入力データが利用される一連のコードの位置及び各コードにおける外部入力データが取り得る値、及びS305で調べた汎用ライブラリ関数に渡される外部入力データが構文上のどの位置で利用されるかの情報に基づいて、動作設定ファイル1130を出力する(S306)。
本実施の形態で生成される動作設定ファイル1130には、実施の形態1の記述内容に加えて、脆弱性ライブラリ関数に渡される外部入力データがHTML文又はSQL文の構文上のどの位置に含まれるかが記述される。
本実施の形態の動作設定ファイル1130では、この構文上の位置が複数列挙され、更に、構文上の位置ごとに対策処理が記述されている。
なお、実施の形態1の動作設定ファイル1130の記述内容は、脆弱性のある汎用ライブラリ関数(脆弱性ライブラリ関数)の名称と、脆弱性ライブラリ関数を呼び出すコード位置と、外部入力データの種類(変数の名称)と、外部入力データの不正値(異常が発生する値)である。
生成された動作設定ファイル1130は、実施の形態1と同様に、動作設定ファイル記憶部1240に出力され、動作設定ファイル記憶部1240に格納される。
実行環境1200の動作では、図4の処理フローのS208の処理が、実施の形態1と異なる。
脆弱性対策処理部1233を呼び出す必要があると判定した場合(S207のYES)に、対策選択部1232は、S208において、無害化の対象となる外部入力データがクライアント端末2000からのHTTPリクエスト内のHTML文又はSQL文のどの位置に記述されているかを判断する。
更に、対策選択部1232は、動作設定ファイル1130に記述されている複数の構文位置の中から、HTTPリクエストにおける記述位置と合致するものを抽出し、抽出した構文位置の対策処理を抽出する。
そして、対策選択部1232は、脆弱性対策処理部1233に、抽出した対策処理を実行させて、外部入力データの無害化等を行わせる。
これ以外のフローは、図4と同じ処理フローであるため説明は省略する。
更に、対策選択部1232は、動作設定ファイル1130に記述されている複数の構文位置の中から、HTTPリクエストにおける記述位置と合致するものを抽出し、抽出した構文位置の対策処理を抽出する。
そして、対策選択部1232は、脆弱性対策処理部1233に、抽出した対策処理を実行させて、外部入力データの無害化等を行わせる。
これ以外のフローは、図4と同じ処理フローであるため説明は省略する。
以上のように、本実施の形態では、静的コード解析において、汎用ライブラリに渡すHTML文やSQL文などの構文上のどの位置に外部入力データが利用されるかを調べることで、汎用ライブラリの内部で実行する脆弱性対策の内容をより正確に選択できるようにできる。
以上、本実施の形態では、静的コード解析で得られた外部からの入力データがライブラリに渡されるデータの構文上のどこに利用されるかの情報に基づいて、内部で行う動作を変更するライブラリを有することを説明した。
実施の形態3.
以上の実施の形態1、2では、運用開始前に外部入力データを利用する汎用ライブラリの呼び出し位置などの情報を静的コード解析で取得し、Webアプリケーションの実行時に運用開始前に取得した情報と、スタックトレースなどの実行時に取得できる情報から、汎用ライブラリの内部で行う脆弱性対策の要否を動的に変更するものである。
これに対して、本実施の形態では、動的試験の試験データもしくはスクリプトを出力する例を示す。
本実施の形態の試験データもしくはスクリプトは、運用開始前の静的コード解析では、脆弱性対策の要否を判定することができないWebアプリケーションの設定ファイルの誤りによる脆弱性を検出するための動的試験に用いられる。
以上の実施の形態1、2では、運用開始前に外部入力データを利用する汎用ライブラリの呼び出し位置などの情報を静的コード解析で取得し、Webアプリケーションの実行時に運用開始前に取得した情報と、スタックトレースなどの実行時に取得できる情報から、汎用ライブラリの内部で行う脆弱性対策の要否を動的に変更するものである。
これに対して、本実施の形態では、動的試験の試験データもしくはスクリプトを出力する例を示す。
本実施の形態の試験データもしくはスクリプトは、運用開始前の静的コード解析では、脆弱性対策の要否を判定することができないWebアプリケーションの設定ファイルの誤りによる脆弱性を検出するための動的試験に用いられる。
図7は、本実施の形態における、Webアプリケーション脆弱性対策システム1000の構成図である。
図7では、実施の形態2の構成(図5)に対して、開発環境1100にWebアプリケーションの設定ファイル1111と試験データ/スクリプト1131を追加し、さらに静的コード解析部1120に、設定ファイル解析部1126、試験データ/スクリプト出力部1127を追加したものである。
図7では、実施の形態2の構成(図5)に対して、開発環境1100にWebアプリケーションの設定ファイル1111と試験データ/スクリプト1131を追加し、さらに静的コード解析部1120に、設定ファイル解析部1126、試験データ/スクリプト出力部1127を追加したものである。
設定ファイル解析部1126は、Webアプリケーションの設定ファイル1111を読込んで、設定ファイルに誤りがないことの検証と、設定ファイルで指定された値を抽出する。
試験データ/スクリプト出力部1127は、静的コード解析部1120でのWebアプリケーションのソース/実行コード1110やWebアプリケーションの設定ファイル1111に対する解析結果を用いて、試験データ/スクリプト1131を出力する。
なお、本実施の形態に係る開発環境1100は、プログラム解析装置の例に相当する。
試験データ/スクリプト出力部1127は、静的コード解析部1120でのWebアプリケーションのソース/実行コード1110やWebアプリケーションの設定ファイル1111に対する解析結果を用いて、試験データ/スクリプト1131を出力する。
なお、本実施の形態に係る開発環境1100は、プログラム解析装置の例に相当する。
実施の形態3における動作を図8を用いて説明する。
開発環境1100では、Webアプリケーション入力部1121でWebアプリケーションのソース/実行コード1110及びWebアプリケーションの設定ファイル1111が読込まれる(S401)。
次に、汎用ライブラリ利用検証部1122が、Webアプリケーションのソース/実行コード1110が利用する汎用ライブラリ関数を呼び出しているコードの位置(ライン数など)、呼び出しされる汎用ライブラリ関数の種類(HTML出力、データベースアクセスなど)を調べた上で、汎用ライブラリ関数に与えるデータや使い方が適切であることを検証する(S402)。
汎用ライブラリ関数が適切に利用されていると判定した場合(S402のYes)には、設定ファイル解析部1126が、Webアプリケーションの設定ファイル1111を解析し、Webアプリケーションの設定ファイル1111の設定内容に、設定可能な値の範囲内にないなどの明らかな設定誤りがないかを検証する(S403)。
汎用ライブラリ関数が適切に利用されていない場合(S402のNo)や、Webアプリケーションの設定ファイル1111に設定ミスがあると判定した場合(S403のNo)には、適切に利用されていない汎用ライブラリ関数の種類、コード上の位置、適切に利用されていないと判定した理由や、Webアプリケーションの設定ファイル1111の設定ミスの内容などを含むメッセージを出力して処理を終了する(S404)。
次に、汎用ライブラリ利用検証部1122が、Webアプリケーションのソース/実行コード1110が利用する汎用ライブラリ関数を呼び出しているコードの位置(ライン数など)、呼び出しされる汎用ライブラリ関数の種類(HTML出力、データベースアクセスなど)を調べた上で、汎用ライブラリ関数に与えるデータや使い方が適切であることを検証する(S402)。
汎用ライブラリ関数が適切に利用されていると判定した場合(S402のYes)には、設定ファイル解析部1126が、Webアプリケーションの設定ファイル1111を解析し、Webアプリケーションの設定ファイル1111の設定内容に、設定可能な値の範囲内にないなどの明らかな設定誤りがないかを検証する(S403)。
汎用ライブラリ関数が適切に利用されていない場合(S402のNo)や、Webアプリケーションの設定ファイル1111に設定ミスがあると判定した場合(S403のNo)には、適切に利用されていない汎用ライブラリ関数の種類、コード上の位置、適切に利用されていないと判定した理由や、Webアプリケーションの設定ファイル1111の設定ミスの内容などを含むメッセージを出力して処理を終了する(S404)。
汎用ライブラリ関数が適切に利用されており、かつWebアプリケーションの設定ファイル1111に設定誤りがないと判定した場合には(S403のNo)、S405〜S407の処理が行われる。
これらの処理は、図6のS303〜S306の処理と同じであるため説明は省略する。
これらの処理は、図6のS303〜S306の処理と同じであるため説明は省略する。
次に、試験データ/スクリプト出力部1127は、S402、S403、S405で解析した結果に基づいて、汎用ライブラリ関数が利用されている処理でWebアプリケーションの設定ファイル1111の設定によって汎用ライブラリ関数の処理の内容が変更される処理について、動的試験をするための試験データ/スクリプト1131を出力する(S408)。
つまり、試験データ/スクリプト出力部1127は、Webアプリケーションの設定ファイル111の値、脆弱性ライブラリ関数、Webアプリケーションで外部入力データが利用されるコード位置などを用いて、Webアプリケーションの設定ファイル111の値の適否を検査するための試験データ又はスクリプトを生成する。
つまり、試験データ/スクリプト出力部1127は、Webアプリケーションの設定ファイル111の値、脆弱性ライブラリ関数、Webアプリケーションで外部入力データが利用されるコード位置などを用いて、Webアプリケーションの設定ファイル111の値の適否を検査するための試験データ又はスクリプトを生成する。
以上のように、本実施の形態では、Webアプリケーション及び設定ファイルを静的コード解析した結果に基づいて、Webアプリケーションの設定ファイルの誤りによる脆弱性を検査するための試験データもしくはスクリプトを作成することによって、静的コード解析では検出できない設定ファイルの誤りを運用開始前に見つけ出すことが容易になる。
以上、本実施の形態では、Webアプリケーションの設定ファイルに依存する静的コード解析で得られた情報だけでは、ライブラリ内部で行う動作を決定できない場合に、設定ファイルに誤りがないかを動的に試験するための試験データやスクリプトを出力する静的コード解析部を有することを説明した。
最後に、実施の形態1〜3に示したWebアプリケーション脆弱性対策システム1000のハードウェア構成例について説明する。
図9は、実施の形態1〜3に示すWebアプリケーション脆弱性対策システム1000のハードウェア資源の一例を示す図である。
なお、図9の構成は、あくまでもWebアプリケーション脆弱性対策システム1000のハードウェア構成の一例を示すものであり、Webアプリケーション脆弱性対策システム1000のハードウェア構成は図9に記載の構成に限らず、他の構成であってもよい。
図9は、実施の形態1〜3に示すWebアプリケーション脆弱性対策システム1000のハードウェア資源の一例を示す図である。
なお、図9の構成は、あくまでもWebアプリケーション脆弱性対策システム1000のハードウェア構成の一例を示すものであり、Webアプリケーション脆弱性対策システム1000のハードウェア構成は図9に記載の構成に限らず、他の構成であってもよい。
図9において、Webアプリケーション脆弱性対策システム1000は、プログラムを実行するCPU911を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜3で説明した「動作設定ファイル記憶部1240」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜3で説明した「動作設定ファイル記憶部1240」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、図1に示すように、ネットワークに接続されている。
例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていてもよい。
例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていてもよい。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
Webアプリケーション脆弱性対策システム1000の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
Webアプリケーション脆弱性対策システム1000の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1〜3の説明において「〜部」(「動作設定ファイル記憶部1240」以外、以下同様)として説明している機能を実行するプログラム、「Webアプリケーション1220」、「Webサーバプログラム1210」が記憶されている。
プログラムは、CPU911により読み出され実行される。
プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1〜3の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の比較」、「〜の検証」、「〜の生成」、「〜の設定」、「〜の取得」、「〜の照合」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が、ディスクやメモリなどの記憶媒体にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、ディスクやメモリなどの記憶媒体にファイルとして記憶されてもよい。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記憶媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜3で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ブルーレイ(登録商標)ディスク、DVD等の記憶媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、暗号鍵・復号鍵や乱数値やパラメータが、ディスクやメモリなどの記憶媒体にファイルとして記憶されてもよい。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記憶媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜3で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ブルーレイ(登録商標)ディスク、DVD等の記憶媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1〜3の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
また、Webアプリケーション脆弱性対策システム1000の処理をプログラム実行方法として捉えることができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の記憶媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1〜3の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜3の「〜部」の手順や方法をコンピュータに実行させるものである。
また、Webアプリケーション脆弱性対策システム1000の処理をプログラム実行方法として捉えることができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の記憶媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1〜3の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜3の「〜部」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1〜3に示すWebアプリケーション脆弱性対策システム1000は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
1000 Webアプリケーション脆弱性対策システム、1100 開発環境、1110 Webアプリケーションのソース/実行コード、1111 Webアプリケーションの設定ファイル、1120 静的コード解析部、1121 Webアプリケーション入力部、1122 汎用ライブラリ利用検証部、1123 外部入力データ解析部、1124
動作設定ファイル出力部、1125 構文解析部、1126 設定ファイル解析部、1127 試験データ/スクリプト出力部、1130 動作設定ファイル、1131 試験データ/スクリプト、1200 実行環境、1210 Webサーバプログラム、1220 Webアプリケーション、1230 汎用ライブラリ、1231 汎用ライブラリI/F、1232 対策選択部、1233 脆弱性対策処理部、1234 汎用ライブラリ処理部、1240 動作設定ファイル記憶部、2000 クライアント端末、3000 ネットワーク。
動作設定ファイル出力部、1125 構文解析部、1126 設定ファイル解析部、1127 試験データ/スクリプト出力部、1130 動作設定ファイル、1131 試験データ/スクリプト、1200 実行環境、1210 Webサーバプログラム、1220 Webアプリケーション、1230 汎用ライブラリ、1231 汎用ライブラリI/F、1232 対策選択部、1233 脆弱性対策処理部、1234 汎用ライブラリ処理部、1240 動作設定ファイル記憶部、2000 クライアント端末、3000 ネットワーク。
Claims (7)
- ライブラリ関数を用いるプログラムを実行するプログラム実行装置であって、
前記プログラムで用いられるライブラリ関数のうち脆弱性のあるライブラリ関数である脆弱性ライブラリ関数の脆弱性に対する対策処理を行う脆弱性対策処理部と、
前記プログラム実行時に前記脆弱性ライブラリ関数の呼び出しが要求された場合に、前記脆弱性ライブラリ関数の脆弱性に対する対策処理を前記脆弱性対策処理部に行わせ、前記脆弱性対策処理部により対策処理が行われた後に、前記脆弱性ライブラリ関数を呼び出す脆弱性対策制御部とを有することを特徴とするプログラム実行装置。 - 前記プログラム実行装置は、更に、
前記脆弱性ライブラリ関数で処理されるパラメータ値における不正値が示される脆弱性情報を記憶する脆弱性情報記憶部を有し、
前記脆弱性対策制御部は、
前記脆弱性ライブラリ関数の呼び出しが要求された場合に、当該呼び出しによって前記脆弱性ライブラリ関数で処理されるパラメータ値が前記不正値に該当するか否かを判断し、
前記脆弱性ライブラリ関数で処理されるパラメータ値が前記不正値に該当する場合は、前記脆弱性ライブラリ関数が前記不正値を処理しないようにする対策処理を前記脆弱性対策処理部に行わせることを特徴とする請求項1に記載のプログラム実行装置。 - 前記脆弱性対策制御部は、
前記脆弱性ライブラリ関数以外のライブラリ関数の呼び出しが要求された場合は、前記脆弱性対策処理部に対策処理を行わせることなく、対象のライブラリ関数を呼び出し、
前記脆弱性ライブラリ関数の呼び出しが要求され、当該呼び出しによって前記脆弱性ライブラリ関数で処理されるパラメータ値が前記不正値に該当しない場合は、前記脆弱性対策処理部に対策処理を行わせることなく、前記脆弱性ライブラリ関数を呼び出すことを特徴とする請求項2に記載のプログラム実行装置。 - 前記プログラム実行装置は、
複数の脆弱性ライブラリ関数に対応させて複数の脆弱性対策処理部を有し、
前記脆弱性対策制御部は、
前記プログラム実行時に、いずれかの脆弱性ライブラリ関数の呼び出しが要求された場合に、呼び出しの対象の脆弱性ライブラリ関数に対応する脆弱性対策処理部を選択し、
選択した脆弱性対策処理部に、脆弱性に対する対策処理を行わせることを特徴とする請求項1〜3のいずれかに記載のプログラム実行装置。 - 前記プログラム実行装置は、
外部装置から受信した受信データに記述されているパラメータ値を前記脆弱性ライブラリ関数に処理させ、
前記プログラム実行装置は、更に、
前記脆弱性ライブラリ関数で処理されるパラメータ値における不正値が示されるとともに、前記脆弱性ライブラリ関数で処理されるパラメータ値の受信データにおける記述位置ごとに、対策処理が示される脆弱性情報を記憶する脆弱性情報記憶部を有し、
前記脆弱性対策制御部は、
外部装置からの受信データの受信に伴って前記脆弱性ライブラリ関数の呼び出しが要求され、当該呼び出しによって前記脆弱性ライブラリ関数で処理されるパラメータ値が前記不正値に該当する場合に、
当該パラメータ値の受信データにおける記述位置を判定し、当該パラメータ値の記述位置に対応する対策処理を前記脆弱性対策処理部に行わせることを特徴とする請求項1〜4のいずれかに記載のプログラム実行装置。 - 前記脆弱性対策処理部と前記脆弱性対策制御部が、汎用ライブラリに含まれていることを特徴とする請求項1〜5のいずれかに記載のプログラム実行装置。
- プログラム及び前記プログラムで用いられるライブラリ関数を解析して、外部入力データに対して脆弱性のあるライブラリ関数を脆弱性ライブラリ関数として抽出するとともに、
前記プログラムの設定ファイルの値の適否を検査するための試験データ及びスクリプトの少なくともいずれかを、前記設定ファイルの値と、前記脆弱性ライブラリ関数と、外部入力データが利用される前記プログラム内のコードの位置とを用いて生成することを特徴とするプログラム解析装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014528105A JP5863973B2 (ja) | 2012-08-01 | 2013-07-25 | プログラム実行装置及びプログラム解析装置 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012171164 | 2012-08-01 | ||
JP2012171164 | 2012-08-01 | ||
JP2014528105A JP5863973B2 (ja) | 2012-08-01 | 2013-07-25 | プログラム実行装置及びプログラム解析装置 |
PCT/JP2013/070188 WO2014021190A1 (ja) | 2012-08-01 | 2013-07-25 | プログラム実行装置及びプログラム解析装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5863973B2 JP5863973B2 (ja) | 2016-02-17 |
JPWO2014021190A1 true JPWO2014021190A1 (ja) | 2016-07-21 |
Family
ID=50027868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014528105A Expired - Fee Related JP5863973B2 (ja) | 2012-08-01 | 2013-07-25 | プログラム実行装置及びプログラム解析装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9507933B2 (ja) |
EP (1) | EP2881877A4 (ja) |
JP (1) | JP5863973B2 (ja) |
CN (1) | CN104508672B (ja) |
WO (1) | WO2014021190A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510596B1 (en) | 2006-02-09 | 2013-08-13 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
US9509714B2 (en) * | 2014-05-22 | 2016-11-29 | Cabara Software Ltd. | Web page and web browser protection against malicious injections |
WO2015038944A1 (en) | 2013-09-12 | 2015-03-19 | Virsec Systems, Inc. | Automated runtime detection of malware |
CA2953793C (en) | 2014-06-24 | 2021-10-19 | Virsec Systems, Inc. | System and methods for automated detection of input and output validation and resource management vulnerability |
CN105763534A (zh) * | 2016-01-21 | 2016-07-13 | 厦门市三驾马车网络科技有限公司 | 一种内容陷阱检测web系统数据库信息泄露的方法 |
US9792200B2 (en) * | 2016-03-01 | 2017-10-17 | Sap Se | Assessing vulnerability impact using call graphs |
CA3027728A1 (en) | 2016-06-16 | 2017-12-21 | Virsec Systems, Inc. | Systems and methods for remediating memory corruption in a computer application |
CN107392029B (zh) * | 2017-07-28 | 2020-07-07 | 中国人民解放军63928部队 | 一种基于化学抽象机的脆弱性模型构建方法 |
CN107798236B (zh) * | 2017-11-30 | 2021-05-04 | 阿里巴巴(中国)有限公司 | 一种对应用程序安装包实现安全安装的方法和装置 |
CN113672929A (zh) * | 2020-05-14 | 2021-11-19 | 阿波罗智联(北京)科技有限公司 | 漏洞特征获取方法、装置及电子设备 |
CN115694982B (zh) * | 2022-10-30 | 2023-09-05 | 济南三泽信息安全测评有限公司 | 网络攻防虚拟仿真系统 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2004258523B2 (en) * | 2003-07-07 | 2009-12-10 | Irdeto B.V. | Reprogrammable security for controlling piracy and enabling interactive content |
JP2006106939A (ja) | 2004-10-01 | 2006-04-20 | Hitachi Ltd | 侵入検知方法及び侵入検知装置並びにプログラム |
JPWO2006087780A1 (ja) * | 2005-02-17 | 2008-07-03 | 富士通株式会社 | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 |
JP2007047884A (ja) * | 2005-08-05 | 2007-02-22 | Recruit Co Ltd | 情報処理システム |
JP4693044B2 (ja) | 2005-08-18 | 2011-06-01 | 株式会社日立ソリューションズ | ソースコード脆弱性検査装置 |
US20070192344A1 (en) * | 2005-12-29 | 2007-08-16 | Microsoft Corporation | Threats and countermeasures schema |
JP4587976B2 (ja) | 2006-02-27 | 2010-11-24 | 日立ソフトウエアエンジニアリング株式会社 | アプリケーションの脆弱性検査方法および装置 |
JP4722730B2 (ja) | 2006-03-10 | 2011-07-13 | 富士通株式会社 | セキュリティ管理プログラム、セキュリティ管理装置、およびセキュリティ管理方法 |
JP2007241906A (ja) | 2006-03-11 | 2007-09-20 | Hitachi Software Eng Co Ltd | Webアプリケーション脆弱性動的検査方法およびシステム |
JP2008129714A (ja) | 2006-11-17 | 2008-06-05 | Univ Of Tsukuba | 異常検知方法、異常検知装置及び異常検知用プログラム並びに学習モデル生成方法 |
US8959647B2 (en) * | 2007-02-27 | 2015-02-17 | Microsoft Corporation | Runtime security and exception handler protection |
US20090030756A1 (en) * | 2007-07-27 | 2009-01-29 | Bank Of America Corporation | Managing Risk Associated with Various Transactions |
US20090276257A1 (en) * | 2008-05-01 | 2009-11-05 | Bank Of America Corporation | System and Method for Determining and Managing Risk Associated with a Business Relationship Between an Organization and a Third Party Supplier |
JP5243111B2 (ja) * | 2008-06-13 | 2013-07-24 | Necシステムテクノロジー株式会社 | 脆弱性対策システム、脆弱性対策サーバ、脆弱性対策方法、及びプログラム |
WO2010069904A1 (en) * | 2008-12-16 | 2010-06-24 | F-Secure Oyj | Method and apparatus for protecting vulnerable functions |
JP5585303B2 (ja) * | 2010-08-25 | 2014-09-10 | 日本電気株式会社 | ライブラリ実行管理システム、ライブラリ実行管理方法およびプログラム |
JP5077455B2 (ja) * | 2011-03-07 | 2012-11-21 | 富士通株式会社 | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 |
JP2013030017A (ja) * | 2011-07-28 | 2013-02-07 | Fujitsu Ltd | テストプログラム生成方法、テストプログラム生成装置、及びテストプログラム生成プログラム |
-
2013
- 2013-07-25 JP JP2014528105A patent/JP5863973B2/ja not_active Expired - Fee Related
- 2013-07-25 US US14/417,920 patent/US9507933B2/en not_active Expired - Fee Related
- 2013-07-25 CN CN201380039842.1A patent/CN104508672B/zh not_active Expired - Fee Related
- 2013-07-25 EP EP13825757.1A patent/EP2881877A4/en not_active Ceased
- 2013-07-25 WO PCT/JP2013/070188 patent/WO2014021190A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN104508672B (zh) | 2017-05-17 |
EP2881877A4 (en) | 2016-08-03 |
US20150302191A1 (en) | 2015-10-22 |
US9507933B2 (en) | 2016-11-29 |
EP2881877A1 (en) | 2015-06-10 |
JP5863973B2 (ja) | 2016-02-17 |
WO2014021190A1 (ja) | 2014-02-06 |
CN104508672A (zh) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5863973B2 (ja) | プログラム実行装置及びプログラム解析装置 | |
Mitropoulos et al. | Defending against web application attacks: Approaches, challenges and implications | |
Pietraszek et al. | Defending against injection attacks through context-sensitive string evaluation | |
US9953162B2 (en) | Rapid malware inspection of mobile applications | |
US8266700B2 (en) | Secure web application development environment | |
US9081961B2 (en) | System and method for analyzing malicious code using a static analyzer | |
US8635602B2 (en) | Verification of information-flow downgraders | |
US20170316202A1 (en) | Rasp for scripting languages | |
US8931102B2 (en) | Testing web applications for file upload vulnerabilities | |
US20170185784A1 (en) | Point-wise protection of application using runtime agent | |
US20140201840A1 (en) | Identifying stored security vulnerabilities in computer software applications | |
GB2527323A (en) | Runtime protection of web services | |
Akram et al. | How to build a vulnerability benchmark to overcome cyber security attacks | |
Song et al. | Understanding javascript vulnerabilities in large real-world android applications | |
Shalini et al. | Prevention of cross-site scripting attacks (xss) on web applications in the client side | |
Chinprutthiwong et al. | Security Study of Service Worker Cross-Site Scripting. | |
Kim et al. | {FuzzOrigin}: Detecting {UXSS} vulnerabilities in browsers through origin fuzzing | |
US20070130620A1 (en) | Method, computer arrangement, computer program and computer program product for checking for the presence of control statements in a data value | |
Kim et al. | Extending a hand to attackers: browser privilege escalation attacks via extensions | |
Ashouri | Practical dynamic taint tracking for exploiting input sanitization error in java applications | |
Boudjema et al. | Detection of security vulnerabilities in C language applications | |
Han et al. | Medusa Attack: Exploring Security Hazards of {In-App}{QR} Code Scanning | |
Popa | Requirements of a better secure program coding | |
KR102538664B1 (ko) | Excel 계열의 문서에서 수식 기능에 있는 Link의 무해화를 위한 방법 및 장치 | |
Jahanshahi et al. | Argus: All your ({{{{{PHP}}}}}) Injection-sinks are belong to us. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20151124 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151222 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5863973 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |