JP7024792B2 - プログラム検証システム、方法およびプログラム - Google Patents

プログラム検証システム、方法およびプログラム Download PDF

Info

Publication number
JP7024792B2
JP7024792B2 JP2019533744A JP2019533744A JP7024792B2 JP 7024792 B2 JP7024792 B2 JP 7024792B2 JP 2019533744 A JP2019533744 A JP 2019533744A JP 2019533744 A JP2019533744 A JP 2019533744A JP 7024792 B2 JP7024792 B2 JP 7024792B2
Authority
JP
Japan
Prior art keywords
program
verification
function
verified
execution
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.)
Active
Application number
JP2019533744A
Other languages
English (en)
Other versions
JPWO2019026137A1 (ja
Inventor
佑亮 森田
貴之 佐々木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2019026137A1 publication Critical patent/JPWO2019026137A1/ja
Application granted granted Critical
Publication of JP7024792B2 publication Critical patent/JP7024792B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • G06F21/53Monitoring 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 by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Bioethics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、セキュア環境下での悪意あるプログラムからの攻撃を防止するためのプログラム検証システム、プログラム検証方法およびプログラム検証プログラムに関する。
近年、IoTのセキュリティ解決策として、TEE(Trusted Execution Environment)技術と呼ばれるような、ハードウェアやソフトウェアを用いてアプリケーションの安全な実行環境を実現するための技術が注目されている。
TEEの一例として、プログラム等の実行環境を、通常の実行環境(以下、非セキュア環境という)と、所定の安全策がとられた実行環境(以下、セキュア環境という)とに分離して、セキュア環境に置かれるプログラム(以下、セキュアプログラムという)を規制したり、非セキュア環境からセキュア環境へのアクセスを禁止することなどが行われている(例えば、特許文献1)。このような制限を課すことで、外部の攻撃からセキュア環境下に置かれた秘密情報やプログラムを保護する。
また、例えば、特許文献2には、スクリプトプログラムに対して、予め所定の安全ポリシーに基づいてコードの安全性を判定し、安全でない場合にコードを拒否することや、そのスクリプトプログラムが実行された際に安全ポリシーの違反が生じた場合に実行を防止することが記載されている。
特開2014-089652号公報 特開2009-521737号公報
図14は、安全な実行環境の概念図である。図14に示すように、多くのTEEでは、非セキュア環境とセキュア環境とに分離し、提供元等において安全が保障されたセキュアプログラムのみをセキュア環境に配置した上で、非セキュア環境からセキュア環境へのアクセスを禁止することにより、安全な実行環境を構築する。仮に非セキュア環境に悪意あるプロセス(マルウェア等)が配置されても、セキュア環境下のプロセスやデータはそこからの攻撃を受けないため、正常動作を維持できる。
このように、多くのセキュアプログラムの安全性は、技術面での静的な検証と法的な保障とで賄っている。しかし、契約やon-boardingといった法的な抑止力は、悪意を持った人間には通用しない可能性が高い。
図15に示すように、一度、悪意のあるプログラムがセキュア環境に配置されてしまうと、以降、外部から悪意を検知したり、該プログラムを排除することは困難である。上述したTEEのように、セキュア環境の保護機構により、外部からの干渉を受け難くいからである。このため、検証時には悪意が見受けられないが、運用時に悪意が顕在化したセキュアプログラムが配置されてしまった場合、一方的に攻撃されるおそれがある。したがって、このような検証時に顕在化していなくてもセキュア環境下で悪意を持ち得るセキュアプログラムをセキュア環境下で動作させない(配置させないまたは実行許可を与えない)ことが重要である。
検証時に未顕在の悪意の例としては、Drive by download攻撃が挙げられる。図16に示すように、配置前の検証時には悪意が見受けられないが、運用過程で外部からのデータ入力等により悪意のあるセキュアプログラムに変異して、攻撃を与えることが考えられる。図16に示す例は、検証時には、端末とサーバ間で通信を行い、サーバから得た機密情報を端末内に安全に保持するプログラムであるように見受けられたが、運用時に、悪意のあるプログラムに変異する例である。本例では、事前に検証をクリアしたプログラムが、運用時に、所定のサーバから機密情報としてマルウェアの実行データの一部をダウンロードし、セキュアプログラムやセキュア環境の保護機構の脆弱性を利用して該実行データをセキュアプログラムに取り込ませる(該実行データに制御を渡させる)などして、マルウェアに変異する。
また、図17に示すように、配置前の検証時には悪意が見受けられないが、運用過程で外部からのデータ入力等により悪意のあるセキュアプログラムを新たに起動して、攻撃を与えることが考えられる。図17に示す例は、検証時には、端末とサーバ間で通信を行い、サーバから得た機密情報を端末内に安全に保持するプログラムであるように見受けられたが、運用時に、悪意のあるプログラムをダウンロードして起動する例である。本例は、事前に検証をクリアしたプログラムが、運用時に、所定のサーバから機密情報としてマルウェアの実行データをダウンロードしてファイル化しておき、セキュアプログラムやセキュア環境の保護機構の脆弱性を利用してあたかも正当な実行ファイルとして該実行データを起動させる。
法的な抑止力では、このような故意に未顕在の悪意を含むプログラムを配置もしくは実行させようとする、悪意ある攻撃者の行動を物理的に制限できないため、より強固な技術的な抑止力が求められる。しかし、外部入力により動的に悪意の有無が変化するようなセキュアプログラムに対して、特許文献1や特許文献2に記載の方法で悪意の検知または攻撃の防御をすることは困難である。
本発明は、上記課題に鑑み、セキュア環境下で顕在化する悪意による攻撃を防止できるプログラム検証システム、プログラム検証方法およびプログラム検証プログラムを提供することを目的とする。
本発明によるプログラム検証システムは、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からセキュア環境へのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証するプログラム検証手段と、プログラム検証手段による検証の結果に基づいて、プログラムに署名を付与する署名手段とを備え、プログラム検証手段が、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうかを検証するプログラム実行機能検証手段と、検証対象のプログラムまたはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からセキュア環境への不正なデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する外部入力攻撃防御機能検証手段とを含み、署名手段が、プログラム実行機能検証手段による検証結果と、外部入力攻撃防御機能検証手段による検証結果に基づき、いずれの検証結果も検証OKであった場合に、署名を付与することを特徴とする。
また、本発明によるプログラム検証方法は、情報処理装置が、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からセキュア環境へのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証し、検証の結果に基づいて、プログラムに署名を付与し、検証対象のプログラムにプログラム実行機能が含まれていないかどうか、および、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に外部入力攻撃防御機能が含まれているかどうかを検証するときに、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうかを検証し、検証対象のプログラムまたはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からセキュア環境への不正なデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証し、署名を付与するときに、プログラム実行機能が含まれていないかどうかに関する検証結果と、外部入力攻撃防御機能が含まれているかどうかに関する検証結果に基づき、いずれの検証結果も検証OKであった場合に、署名を付与することを特徴とする。
また、プログラム検証プログラムは、コンピュータに、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からセキュア環境へのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する処理、および検証の結果に基づいて、プログラムに署名を付与する処理を実行させ、検証対象のプログラムにプログラム実行機能が含まれていないかどうか、および、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に外部入力攻撃防御機能が含まれているかどうかを検証する処理で、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうかを検証させ、検証対象のプログラムまたはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からセキュア環境への不正なデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証させ、署名を付与する処理で、プログラム実行機能が含まれていないかどうかに関する検証結果と、外部入力攻撃防御機能が含まれているかどうかに関する検証結果に基づき、いずれの検証結果も検証OKであった場合に、署名を付与させることを特徴とする。
本発明によれば、セキュア環境下で顕在化する悪意による攻撃を防止できる。
第1の実施形態のプログラム検証システム10の構成例を示すブロック図である。 第1の実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。 第2の実施形態のプログラム検証システム10の構成例を示すブロック図である。 外部入力攻撃防御機能検証部13の構成例を示すブロック図である。 第2の実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。 第3の実施形態のプログラム検証システム10の構成例を示すブロック図である。 第3の実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。 プログラム検証システム10のプログラム実行端末への適用例を示すブロック図である。 プログラム検証システム10の他の構成例を示すブロック図である。 図9に示すプログラム検証システム10の動作の一例を示すフローチャートである。 本発明の各実施形態にかかるコンピュータの構成例を示す概略ブロック図である。 本発明のプログラム検証システム50の概要を示すブロック図である。 本発明のプログラム検証システム50の他の構成例を示すブロック図である。 安全な実行環境の概念図である。 安全でない実行環境(セキュアプログラムに悪意があった場合)の概念図である。 検証時に未顕在の悪意が運用時に顕在化する例を示す説明図である。 検証時に未顕在の悪意が運用時に顕在化する例を示す説明図である。
実施形態1.
以下、本発明の実施形態を図面を参照して説明する。図1は、第1の実施形態のプログラム検証システム10の構成例を示すブロック図である。図1に示すプログラム検証システム10は、悪意検証部11と、プログラム実行機能検証部12と、署名部2とを備える。
悪意検証部11は、検証対象のプログラムに悪意が含まれていないことを検証する。プログラムは、機械に対する命令を記述したもの(データ)である。一般に、そのうち機械が読める形式のものは実行コードと呼ばれ、人間が読める形式のものがソースコードと呼ばれる。また、「悪意」は、表示や予めされた説明とは異なる動作をしたり、機械に対して該動作をする命令を出すなどして、故意に攻撃や不正なアクセスや情報流出などを行うコード、ユースケース、運用方法などである。
例えば、悪意検証部11は、既知の方法を用いて悪意の有無を判定することが可能である。具体的には、悪意検証部11は、検証対象のプログラムとして実行コード(の集合)を入力し、該実行コードに対して既存のウィルスチェックを行ってもよい。この場合、悪意検証部11は、ウィルスが検出された場合には、検証NG(悪意あり)と判定し、それ以外の場合に、検証OK(悪意なし)と判定してもよい。
また、悪意検証部11は、例えば、検証対象のプログラムに対して、ユーザがその配布元からユースケースや運用方法についての説明を受けたか否かおよびそのときの確認結果を入力させ、その入力に基づき悪意の有無を判定してもよい。この場合、悪意検証部11は、ユーザがユースケースや運用方法についての説明を受けていない場合や、その結果安全性が確認されなかった場合には、検証NG(悪意あり)と判定し、それ以外の場合に、検証OK(悪意なし)と判定してもよい。
また、悪意検証部11は、例えば、検証対象のプログラムに対して、技術窓口(開発者等)とのon-boardingを実施したか否かおよびそのときの確認結果を入力させ、その入力に基づき悪意の有無を判定してもよい。この場合、悪意検証部11は、on-boardingを実施していない場合や、その結果安全性が確認されなかった場合には、検証NG(悪意あり)と判定し、それ以外の場合に、検証OK(悪意なし)と判定してもよい。
なお、悪意検証部11は、上記の検証方法を複数組み合わせて実施することも可能である。その場合、悪意検証部11は、1つでも検証NGであれば、検証NG(悪意あり)とし、全て検証OKであれば検証OK(悪意なし)とする。
プログラム実行機能検証部12は、検証対象のプログラムに、プログラム実行機能が含まれていないことを検証する。ここで、プログラム実行機能は、当該プログラム内で、他のプログラムまたは自身を起動するなどして、当該プログラム内の命令により、同じ環境下(すなわちセキュア環境下)に新たなプログラムを実行させる機能(コード)である。そのようなプログラム実行機能の例としては、C言語のexec系システムコールなどが挙られる。
セキュア環境下で、セキュアプログラムによって派生的に新たなプログラムが実行できるとなると、セキュアプログラム自体には悪意が含まれない場合にも、該セキュアプログラムが生成した実行ファイル等からマルウェアを起動して攻撃をすることが可能になる。本実施形態では、このような外部(セキュア領域以外の領域)からのデータ入力等を利用して、後に(運用時に)悪意あるプログラムが実行される可能性があるコードの有無を確認する。そして、そのようなコードがあった場合には、悪意を持つ可能性があるとして検証NG(プログラム実行機能あり)と判定し、それ以外の場合に、検証OK(プログラム実行機能なし)と判定する。
プログラム実行機能の有無の確認方法の例としては、逆アセンブルによる解析が挙げられる。プログラム実行機能検証部12は、例えば、検証対象のプログラムの実行コードを逆アセンブルして、システムコール実行時に、実行先の情報が格納される所定のレジスタ(例えば、システムコール番号が格納されるAXレジスタ等)を確認し、禁止されているシステムコールが呼ばれていないかを確認してもよい。
署名部2は、悪意検証部11による検証結果と、プログラム実行機能検証部12による検証結果とに基づいて、署名を行う。署名部2は、いずれの検証結果も検証OKであった場合に、検証対象のプログラムに対して署名を行う。
次に、本実施形態の動作を説明する。図2は、本実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。図2に示す例では、まず、図示しない入力部が、検証対象のプログラム(実行コード等)を入力する(ステップS101)。
次いで、悪意検証部11が、入力された検証対象のプログラムに対して、悪意の検証を行う(ステップS102)。悪意の検証の結果、悪意ありと判定された場合(ステップS103のYes)、ステップS104に移行し。そうでなければ(ステップS103のNo)、ステップS105に移行する。
ステップS104では、検証結果を検証NGすなわち署名NGとして、ステップS109に移行する。
ステップS105では、プログラム実行機能検証部12が、入力された検証対象のプログラムに対して、プログラム実行機能の検証を行う。プログラム実行機能の検証の結果、プログラム実行機能ありと判定された場合(ステップS106のYes)、ステップS104に移行し、そうでなければ(ステップS106のNo)、ステップS107に移行する。
ステップS107では、最終的に検証OKすなわち署名OKとして、ステップS108に移行する。
ステップS108では、署名部2が、署名OKと判定されたプログラムに署名を付与する。
最後に、図示しない出力部が、検証結果(検証OK/NG)を出力する(ステップS109)。ここで、該出力部は、検証結果とともに、検証対象とされたプログラム(検証OKの場合は、署名付きプログラム)や、検証NGであった場合にはその詳細(どの部分がどの検証方法によりNGとなったか等)を出力してもよい。
なお、本実施形態の署名は、セキュア環境への配置の可否およびセキュア環境下での実行の可否を判定するために使用される。ユーザもしくはセキュア環境の保護機構は、例えば、署名部2による署名がある実行コードのみをセキュア環境に配置する、またセキュア環境下での実行を許可する。
なお、上記の例では、悪意の検証(ステップS102)の後に、プログラム実行機能の検証ステップS105)を行う例を示したが、これらの検証は順不同である。すなわち、プログラム実行機能の検証を先に行ったり、両者を並列に行うことも可能である。
以上のように、本実施形態によれば、検証対象のプログラム自体に含まれる(顕在化している)悪意の有無だけでなく、顕在化しない悪意の1つとなりうるプログラム実行機能の有無を判定し、両方の点で安全性が確認された場合にのみ署名を行う。セキュア環境への配置の可否およびセキュア環境下での実行の可否を判定する際に、当該署名を利用することにより、顕在化している悪意を含むプログラムだけでなく、プログラム自体には悪意が見られないが、外部からのデータ入力等を利用して後に悪意あるプログラムを実行される可能性があるコードを含むプログラムがセキュア環境に置かれたり、セキュア環境で実行されることを事前に防ぐことができる。したがって、セキュア環境下で顕在化する悪意による攻撃を防止できる。
なお、プログラム検証システム10は、一般的な手法に基づき悪意なしと判定されたプログラムを、本実施形態の検証対象のプログラムとすることも可能である。その場合、悪意検証部11は省略可能である。そのような場合、署名部2は、悪意検証部11の検証結果の判定に代えて、一般的な手法に基づき悪意なしと判定されたプログラムに付与される第三機関等による所定の署名の有無を判定すればよい。他の実施形態においても同様である。
実施形態2.
次に、本発明の第2の実施形態を説明する。図3は、第2の実施形態のプログラム検証システム10の構成例を示すブロック図である。図3に示すプログラム検証システム10は、悪意検証部11と、外部入力攻撃防御機能検証部13と、署名部2とを備える。
悪意検証部11は、第1の実施形態と同様である。
外部入力攻撃防御機能検証部13は、セキュア環境の保護機構や検証対象のプログラムに、脆弱性緩和技術として、外部入力攻撃防御機能が有効に存在していることを検証する。ここで、外部入力攻撃防御機能は、プログラム実行中の外部からのデータ入力(特に、不正なデータ入力)に起因する攻撃(悪意あるコードの実行、領域破壊等)を防御する機能である。外部入力攻撃防御機能の例としては、スタック保護機能や、外部コード実行防止機能が挙げられる。
スタック保護機能は、外部からの入力に対してスタックを保護する機能である。ここで、スタックは、次に実行するコードに影響するデータ(ジャンプ先)を保持する領域である。なお、スタック保護機能は、事前の保護(スタックの外部入力による書き換え禁止等)であっても事後の保護(外部入力によってスタックが破壊された場合にプログラムを停止させる等)であってもよい。
外部入力攻撃防御機能検証部13は、例えば、不正なコードや予期せぬアドレスへのジャンプ(制御の明け渡し)を防止するために、検証対象のプログラムにスタック保護機能が含まれているか否かを判定する。この場合、外部入力攻撃防御機能検証部13は、スタック保護機能が含まれていない場合に、検証NG(外部入力攻撃防御機能、特にスタック保護機能なし)と判定し、それ以外の場合に、検証OK(外部入力攻撃防御機能、特にスタック保護機能あり)と判定してもよい。
具体的に、外部入力攻撃防御機能検証部13は、検証対象のプログラムとして実行コード(の集合)を入力し、該実行コードに対して、カナリアなどの所定のスタック保護機能が実装されているか否かを確認してもよい。また、外部入力攻撃防御機能検証部13は、検証対象のプログラムに、スタック保護機能として、スタックの破壊を検知した際のハンドリング関数(例えば、__Stack_chk_fail関数()など)が含まれているか否かを確認してもよい。
また、外部コード実行防止機能は、スタックやヒープ領域等の、プログラムの動作中に書き換えが許可されている領域(以下、動的領域という)内でのコードの実行を防止する機能である。ここで、動的領域に対する書き換えは、直接的であるか間接的であるかは問わない。すなわち、プログラム(より具体的にはプログラムに従って動作する情報処理装置)が直接その領域を指定して書き換えることができる領域だけでなく、外部からの入力に基づいてプログラムが間接的に書き換えることができる領域も、動的領域に含まれる。
外部入力攻撃防御機能検証部13は、例えば、外部から入力された不正なコードが実行されないように、検証対象のプログラムまたはセキュア環境の保護機構に対して、外部コード実行防止機能が含まれているか否かを判定する。この場合、外部入力攻撃防御機能検証部13は、検証対象のプログラムまたはセキュア環境の保護機構に外部コード実行防止機能が含まれていない場合に、検証NG(外部入力攻撃防御機能、特に外部コード実行防止機能なし)と判定し、それ以外の場合に、検証OK(外部入力攻撃防御機能、特に外部コード実行防止機能あり)と判定してもよい。
具体的に、外部入力攻撃防御機能検証部13は、検証対象のプログラムがELF形式のバイナリである場合、プログラムヘッダのフラグ等を参照し、動的領域として宣言された領域に実行許可がないことを確認してもよい。また、外部入力攻撃防御機能検証部13は、セキュア環境の保護機構に、NX bit(No execute bit),DEP(Data Execution Prevention),Exec-shieldなどの動的領域を保護または動的領域でのデータ実行を防止する技術が適用されていることを確認してもよい。
以下は、Linux(登録商標)で動作するセキュア環境の保護機構に対する確認の具体例である。
・起動ログに、“NX (Ececute Disable) protection:qctive”と記載されていることを確認する。
・“/proc/sys/kernerl/exec-shield”ファイルを参照して、“有効”となっていることを確認する。
なお、セキュア環境の保護機構に対する確認は、該保護機構が稼働しているコンピュータ上で実施されることが好ましい。例えば、プログラム検証システム10は、検証対象のプログラムが配置されるセキュア環境を備えた端末(以下、プログラム実行端末という)上で動作するシステムであってもよい。その場合において、プログラム検証システム10の外部入力攻撃防御機能検証部13は、検証対象のプログラムがセキュア環境に配置される前またはセキュア環境に配置された後実行される前に、外部入力攻撃防御機能の検証を行う。なお、セキュア環境の保護機構に対する確認は、例えば、プログラム実行端末以外のコンピュータが、プログラム実行端末に接続して遠隔操作により行ったり、ユーザに、該保護機構が稼働しているコンピュータ上での実施結果を入力させ、それに基づいて行うことも可能である。
また、外部入力攻撃防御機能検証部13は、上記の検証方法を複数組み合わせて実施することも可能である。その場合、外部入力攻撃防御機能検証部13は、例えば、少なくとも1つのスタック保護機能と、少なくとも1つの外部コード実行防止機能とが含まれている場合に、検証OK(外部入力攻撃防御機能あり)とし、そうでなければ検証NG(外部入力攻撃防御機能なし)としてもよい。また、外部入力攻撃防御機能検証部13は、例えば、スタック保護機能と外部コード実行防止機能のうち少なくとも1つが含まれていれば、検証OKとし、そうでなければ検証NGとしてもよい。また、例えば、検証方法の組み合わせに対して検証OKとする条件を予め設定しておき、外部入力攻撃防御機能検証部13は、実施する検証の組み合わせに応じた該条件に基づいて、最終的な検証OK/検証NGを判定してもよい。
図4は、外部入力攻撃防御機能検証部13の構成例を示すブロック図である。図4に示すように、外部入力攻撃防御機能検証部13は、スタック保護機能検証部131と、外部コード実行防止機能検証部132とを含んでいてもよい。
スタック保護機能検証部131は、上述したスタック保護機能の検証を行う。外部コード実行防止機能検証部132は、上述した外部コード実行防止機能の検証を行う。
署名部2は、悪意検証部11による検証結果と、外部入力攻撃防御機能検証部13による検証結果とに基づいて、署名を行う。署名部2は、いずれの検証結果も検証OKであった場合に、検証対象のプログラムに対して署名を行う。
次に、本実施形態の動作を説明する。図5は、本実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。なお、本例のステップS101~ステップS104、ステップS109は、第1の実施形態と同じである。
図5に示す例では、まず図示しない入力部が、検証対象のプログラム(実行コード等)を入力すると(ステップS101)、悪意検証部11が、入力された検証対象のプログラムに対して、悪意の検証を行う(ステップS102)。悪意の検証の結果、悪意ありと判定された場合(ステップS103のYes)、ステップS104に移行し。そうでなければ(ステップS103のNo)、ステップS115に移行する。
ステップS104では、検証結果を検証NGすなわち署名NGとして、ステップS109に移行する。
ステップS115では、外部入力攻撃防御機能検証部13が、入力された検証対象のプログラムおよび/またはセキュア環境の保護機構に対して、外部入力攻撃防御機能の検証を行う。外部入力攻撃防御機能の検証の結果、外部入力攻撃防御機能ありと判定された場合(ステップS116のYes)、ステップS117に移行し、そうでなければ(ステップS116のNo)、ステップS104に移行する。
ステップS117では、最終的に検証OKすなわち署名OKとして、ステップS118に移行する。
ステップS118では、署名部2が、署名OKと判定されたプログラムに署名を付与する。
最後に、図示しない出力部が、検証結果(検証OK/NG)や署名付きプログラムや検証結果の詳細等を出力する(ステップS109)。
なお、本実施形態の署名も、セキュア環境への配置の可否およびセキュア環境下での実行の可否を判定するために使用される。
また、上記の例では、悪意の検証(ステップS102)の後に、外部入力攻撃防御の検証ステップS115)を行う例を示したが、これらの検証は順不同である。すなわち、外部入力攻撃防御の検証を先に行ったり、両者を並列に行うことも可能である。また、第1の実施形態同様、悪意の検証を省略することも可能である。
以上のように、本実施形態によれば、検証対象のプログラム自体に含まれる(顕在化している)悪意の有無だけでなく、顕在化しない悪意の1つである外部入力による攻撃があるとして、そのような攻撃を防御する機能(外部入力攻撃防御機能)の有無を判定し、両方の点で安全性が確認された場合にのみ署名を行う。セキュア環境への配置の可否およびセキュア環境下での実行の可否を判定する際に、当該署名を利用することにより、顕在化している悪意を含むプログラムだけでなく、プログラム自体には悪意が見られないが、外部からのデータ入力により悪意が顕在化して攻撃を加える可能性のあるプログラムがセキュア環境に置かれたり、セキュア環境で実行されることを事前に防ぐことができる。したがって、セキュア環境下で顕在化する悪意による攻撃を防止できる。
実施形態3.
次に、本発明の第3の実施形態を説明する。図6は、第3の実施形態のプログラム検証システム10の構成例を示すブロック図である。図6に示すプログラム検証システム10は、悪意検証部11と、プログラム実行機能検証部12と、外部入力攻撃防御機能検証部13と、署名部2とを備える。なお、本例は、第1の実施形態と第2の実施形態と組み合わせた例である。
悪意検証部11およびプログラム実行機能検証部12は、第1の実施形態と同様である。また、外部入力攻撃防御機能検証部13は、第2の実施形態と同様である。
本実施形態の署名部2は、悪意検証部11による検証結果と、プログラム実行機能検証部12による検証結果と、外部入力攻撃防御機能検証部13による検証結果とに基づいて、署名を行う。署名部2は、いずれの検証結果も検証OKであった場合に、検証対象のプログラムに対して署名を行う。
次に、本実施形態の動作を説明する。図7は、本実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。なお、本例のステップS101~ステップS104、ステップS109は、第1の実施形態と同じであり、ステップS115,S116は、第2の実施形態と同じであるため、説明を省略する。
本実施形態では、検証対象のプログラム(実行コード等)が入力されると、まず、悪意検証部11が、入力された検証対象のプログラムに対して、悪意の検証を行う(ステップS102~)。その後、プログラム実行機能検証部12が、入力された検証対象のプログラムに対して、プログラム実行機能の検証を行う(ステップS105~)。その後、外部入力攻撃防御機能検証部13が、入力された検証対象のプログラムおよび/またはセキュア環境の保護機構に対して、外部入力攻撃防御機能の検証を行う(ステップS115~)。
そして、それらの結果を受けて、署名部2が、署名OKとされたプログラムに署名を付与する(ステップS127,S128)。具体的には、署名部2は、悪意の検証、プログラム実行機能の検証および外部入力攻撃防御の検証のいずれの検証結果も検証OKであった場合に、検証OKとし(ステップS127)、検証対象のプログラムに署名を付与する(ステップS128)。
最後に、図示しない出力部が、検証結果(検証OK/NG)や署名付きプログラムや検証結果の詳細等を出力する(ステップS109)。
なお、上記の例では、悪意の検証(ステップS102)の後に、プログラム実行機能の検証ステップS105)を行い、その後に、外部入力攻撃防御の検証を行う例を示したが、これらの検証は順不同である。また、プログラム検証システム10は、例えば、ユーザ指示や設定ファイル等に応じて、実施する検証方法を選択することも可能である。
以上のように、本実施形態によれば、検証対象のプログラム自体に含まれる(顕在化している)悪意の有無だけでなく、顕在化しない悪意の1つとなりうるプログラム実行機能の有無および/または顕在化しない悪意の1つである外部入力による攻撃を防御する機能の有無を判定し、判定を行ったものすべてで安全性が確認された場合にのみ署名を行う。セキュア環境への配置の可否およびセキュア環境下での実行の可否を判定する際に、当該署名を利用することにより、顕在化している悪意を含むプログラムだけでなく、プログラム自体には悪意が見られないが、外部からのデータ入力等を利用して後に悪意あるプログラムを実行される可能性があるコードを含むプログラムがセキュア環境に置かれたり、セキュア環境で実行されることを事前に防ぐことができる。したがって、セキュア環境下で顕在化する悪意による攻撃を防止できる。
また、図8は、本実施形態のプログラム検証システム10を、プログラム実行端末に適用した例である。図8に示すプログラム実行端末300は、セキュア環境310を備え、該セキュア環境310内に、プログラム検証部10Aとして、悪意検証部11、プログラム実行機能検証部12および外部入力攻撃防御機能検証部13を含むとともに、署名部2と、配置・実行部3とを含む。
配置・実行部3は、セキュア環境310にプログラムを配置する際、またはセキュア環境310でプログラムを実行する際、署名部2による署名が付与されているか否かを判定し、署名があれば配置または実行する。
また、図9は、本実施形態のプログラム検証システム10の他の構成例である。図9に示すプログラム検証システム10は、第3の実施形態のプログラム検証システム10の各要素に加えて、ソース入力部41、判定部42、外部入力攻撃防御機能付与部43、ビルド部44および実行コード出力部45を備える。
ソース入力部41は、検証対象のプログラムとして、コンパイル前のソースコードを入力する。
悪意検証部11およびプログラム実行機能検証部12は、第1の実施形態と同様である。また、外部入力攻撃防御機能検証部13は、第2の実施形態と同様である。なお、各検証において検証対象のプログラムとして実行コードが必要な場合、ソースコードをビルド部44に入力し、コンパイルを含む一連の処理(前処理、コンパイル、リンク等)をさせて実行コードを得ればよい。
判定部42は、悪意検証部11による検証結果、プログラム実行機能検証部12による検証結果および外部入力攻撃防御機能検証部13による検証結果を判定し、いずれの検証結果も検証OKであれば、署名OKとして、ソースコードをビルド部44に入力して、実行コードを生成させる。なお、すでに実行コードが生成されている場合には、該実行コードを署名部2に入力して、署名をさせる。なお、署名OKか否かの判断は、第1~第3の実施形態の署名部2の判断処理と同様でよい。
また、判定部42は、上記判定の結果、外部入力攻撃防御機能検証部13による検証結果が検証NGであれば、ソースコードを外部入力攻撃防御機能付与部43に入力して、外部入力攻撃防御機能を付与させる。
また、判定部42は、他に検証結果が検証NGの検証方法があった場合には、検証NGである旨およびそれら検証結果の詳細を出力してもよい。
外部入力攻撃防御機能付与部43は、入力されたソースコードに、外部入力攻撃防御機能を付与する。外部入力攻撃防御機能付与部43は、例えば、入力されたソースコードに、上記で示したようなスタック保護機能や、外部コード実行防止機能を追加実装して、出力する。具体的に、外部入力攻撃防御機能付与部43は、ソースコードにそのようなスタック保護機能を実装するためのコードを挿入してもよい。また、外部入力攻撃防御機能付与部43は、例えば、検証対象のプログラムが配置されるセキュア環境の保護機構において、外部コード実行防止機能が無効になっている場合には、それを有効にしてもよい。
ビルド部44は、入力されたソースコードに対して、コンパイルを含む一連のビルド処理を行う。ビルド部44は、より具体的には、入力されたソースコードを解析し、機械語に変換して、実行コードを生成する。
署名部2は、判定部42によって署名OKと判定されたソースコードから得られた実行コードに、署名を付与する。
実行コード出力部45は、署名部2が署名を付与した実行コードを出力する。
図10は、図9に示す実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。図10に示す例では、まず、ソース入力部41が、検証対象のプログラムのソースコードを入力する(ステップS201)。
次いで、悪意検証部11が、入力された検証対象のプログラム(ソースコード)に対して、悪意の検証を行う(ステップS202)。悪意の検証方法は上記の実施形態と同様でよい。悪意の検証の結果、悪意ありと判定された場合(ステップS203のYes)、ステップS204に移行し。そうでなければ(ステップS203のNo)、ステップS205に移行する。
ステップS204では、ビルド失敗(エラーコード:検証NG)として、その詳細を出力して終了する。
ステップS205では、プログラム実行機能検証部12が、プログラム実行機能の検証を行う。プログラム実行機能の検証方法は上記の実施形態と同様でよい。プログラム実行機能の検証の結果、プログラム実行機能ありと判定された場合(ステップS206のYes)、ステップS204に移行し、そうでなければ(ステップS206のNo)、ステップS207に移行する。
ステップS207では、外部入力攻撃防御機能検証部13が、外部入力攻撃防御機能の検証を行う。学部入力攻撃防御機能の検証方法は上記の実施形態と同様でよい。外部入力攻撃防御機能の検証の結果、外部入力攻撃防御機能ありと判定された場合(ステップS208のYes)、ステップS210に移行し、そうでなければ(ステップS208のNo)、ステップS209に移行する。
なお、本例では、ステップS203、ステップS206およびステップS208の判定を、判定部42が行う。
ステップS209では、外部入力攻撃防御機能付与部43が、入力されたソースコードに、外部入力攻撃防御機能を付与する。その後、ステップS207に戻る。
ステップS210では、ビルド部44が、入力されたソースコードを解析し、実行コードを生成する。
次いで、署名部2が、生成された実行コードに署名を付与する(ステップS211)。
最後に、実行コード出力部45が、署名付きの実行コードを出力する(ステップS212)。
図9に示す構成のように、プログラム検証システム10は、検証だけでなく、検証の結果、足りない機能を付与することも可能である。
なお、図8および図9では、プログラム検証部10Aとして、プログラム検証部10Aとして、悪意検証部11、プログラム実行機能検証部12および外部入力攻撃防御機能検証部13を含む例を示したが、プログラム検証部10Aは、少なくともプログラム実行機能検証部12および外部入力攻撃防御機能検証部13を含めばよい。
次に、本発明の各実施形態にかかるコンピュータの構成例を示す。図11は、本発明の各実施形態にかかるコンピュータの構成例を示す概略ブロック図である。コンピュータ1000は、CPU1001と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004と、ディスプレイ装置1005と、入力デバイス1006とを備える。
上述の各実施形態のネットワーク制御システムの各ノードは、コンピュータ1000に実装されてもよい。その場合、各ノードの動作は、プログラムの形式で補助記憶装置1003に記憶されていてもよい。CPU1001は、プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、そのプログラムに従って各実施形態における所定の処理を実施する。なお、CPU1001は、プログラムに従って動作する情報処理装置の一例であり、CPU(Central Processing Unit)以外にも、例えば、MPU(Micro Processing Unit)やMCU(Memory Control Unit)やGPU(Graphics Processing Unit)などを備えていてもよい。
補助記憶装置1003は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータは1000がそのプログラムを主記憶装置1002に展開し、各実施形態における所定の処理を実行してもよい。
また、プログラムは、各実施形態における所定の処理の一部を実現するためのものであってもよい。さらに、プログラムは、補助記憶装置1003に既に記憶されている他のプログラムとの組み合わせで各実施形態における所定の処理を実現する差分プログラムであってもよい。
インタフェース1004は、他の装置との間で情報の送受信を行う。また、ディスプレイ装置1005は、ユーザに情報を提示する。また、入力デバイス1006は、ユーザからの情報の入力を受け付ける。
また、実施形態における処理内容によっては、コンピュータ1000の一部の要素は省略可能である。例えば、ノードがユーザに情報を提示しないのであれば、ディスプレイ装置1005は省略可能である。例えば、ノードがユーザから情報入力を受け付けないのであれば、入力デバイス1006は省略可能である。
また、各装置の各構成要素の一部または全部は、汎用または専用の回路(Circuitry)、プロセッサ等やこれらの組み合わせによって実施される。これらは単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。また、各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
各装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
次に、本発明の概要を説明する。図12は、本発明のプログラム検証システム50の概要を示すブロック図である。図12に示すプログラム検証システム50は、プログラム検証手段51と、署名手段52とを備える。
プログラム検証手段51(例えば、プログラム実行機能検証部12、外部入力攻撃防御機能検証部13、プログラム検証部10A)は、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および/または、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する。
署名手段52(例えば、署名部2)は、プログラム検証手段51による検証の結果に基づいて、プログラムに署名を付与する。
このような構成により、セキュア環境下で顕在化する悪意による攻撃を防止することができる。
また、図13は、本発明のプログラム検証システム50の他の構成例を示すブロック図である。図13に示すように、プログラム検証手段51は、プログラム実行機能検証手段511と、外部入力攻撃防御機能検証手段512とを含んでいてもよい。
プログラム実行機能検証手段511(例えば、プログラム実行機能検証部12)は、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうかを検証する。
外部入力攻撃防御機能検証手段512(例えば、外部入力攻撃防御機能検証部13)は、検証対象のプログラムまたはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からの不正なデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する。
以上、本実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
本発明は、セキュア環境に限らず、堅強な実行環境を実現したい場合に、好適に適用可能である。
10 プログラム検証システム
10A プログラム検証部
11 悪意検証部
12 プログラム実行機能検証部
13 外部入力攻撃防御機能検証部
131 スタック保護機能検証部
132 外部コード実行防止機能検証部
2 署名部
300 プログラム実行端末
310 セキュア環境
3 配置・実行部
41 ソース入力部
42 判定部
43 外部入力攻撃防御機能付与部
44 ビルド部
45 実行コード出力部
1000 コンピュータ
1001 CPU
1002 主記憶装置
1003 補助記憶装置
1004 インタフェース
1005 ディスプレイ装置
1006 入力デバイス
50 プログラム検証システム
51 プログラム検証手段
511 プログラム実行機能検証手段
512 外部入力攻撃防御機能検証手段
52 署名手段

Claims (9)

  1. セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および、前記検証対象のプログラムもしくはその動作元である前記セキュア環境の保護機構に、プログラム実行中の外部から前記セキュア環境へのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証するプログラム検証手段と、
    前記プログラム検証手段による検証の結果に基づいて、前記プログラムに署名を付与する署名手段とを備え、
    前記プログラム検証手段は、
    前記セキュア環境下で動作するプログラムとして入力された前記検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうかを検証するプログラム実行機能検証手段と、
    前記検証対象のプログラムまたはその動作元である前記セキュア環境の保護機構に、プログラム実行中の外部から前記セキュア環境への不正なデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する外部入力攻撃防御機能検証手段とを含み、
    前記署名手段は、前記プログラム実行機能検証手段による検証結果と、前記外部入力攻撃防御機能検証手段による検証結果に基づき、いずれの検証結果も検証OKであった場合に、署名を付与する
    ことを特徴とするプログラム検証システム。
  2. 前記プログラム実行機能検証手段は、前記検証対象のプログラムに、前記同じ環境下に新たなプログラムを実行させるシステムコールが含まれていないことを確認する
    請求項1に記載のプログラム検証システム。
  3. 前記外部入力攻撃防御機能検証手段は、前記検証対象のプログラムにスタック保護機能が含まれていること、または、前記検証対象のプログラムもしくはその動作元である前記セキュア環境の保護機構に、プログラムの動作中に書き換えが許可されている領域である動的領域内でのコードの実行を防止する機能である外部コード実行防止機能が含まれていることを確認する
    請求項1に記載のプログラム検証システム。
  4. 前記外部入力攻撃防御機能検証手段は、前記スタック保護機能または前記外部コード実行防止機能が含まれている場合に、検証OKとする
    請求項3に記載のプログラム検証システム。
  5. 前記スタック保護機能は、スタックへの外部入力に対する事後的な保護を含む
    請求項3または請求項4に記載のプログラム検証システム。
  6. 前記プログラム検証手段は、少なくとも実行前のコード、ユースケースおよび/または運用方法に対する所定の検証によって安全性が確認されたプログラムを対象に前記検証を行う
    請求項1から請求項5のうちのいずれかに記載のプログラム検証システム。
  7. 検証対象のプログラムのソースコードを入力するソース入力手段と、
    前記ソースコードに対して、外部入力攻撃防御機能を付与する外部入力攻撃防御機能付与手段と、
    前記ソースコードを、機械語である実行コードに変換するビルド手段とを備え、
    前記プログラム検証手段は、前記ソースコードに対して検証を行い、
    前記外部入力攻撃防御機能付与手段は、前記プログラム検証手段による検証の結果、前記ソースコードに外部入力攻撃防御機能が含まれていなかった場合に、外部入力攻撃防御機能を付与し、
    前記署名手段は、前記プログラム検証手段による検証の結果に基づいて、プログラム実行機能が含まれていないという検証結果が得られた場合に、前記ビルド手段によるビルド後の実行コードに署名を付与する
    請求項1から請求項6のうちのいずれかに記載のプログラム検証システム。
  8. 情報処理装置が、
    セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および、前記検証対象のプログラムもしくはその動作元である前記セキュア環境の保護機構に、プログラム実行中の外部から前記セキュア環境へのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証し、
    前記検証の結果に基づいて、前記プログラムに署名を付与し、
    前記検証対象のプログラムにプログラム実行機能が含まれていないかどうか、および、前記検証対象のプログラムもしくはその動作元である前記セキュア環境の保護機構に外部入力攻撃防御機能が含まれているかどうかを検証するときに、
    前記セキュア環境下で動作するプログラムとして入力された前記検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうかを検証し、
    前記検証対象のプログラムまたはその動作元である前記セキュア環境の保護機構に、プログラム実行中の外部から前記セキュア環境への不正なデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証し、
    署名を付与するときに、
    プログラム実行機能が含まれていないかどうかに関する検証結果と、外部入力攻撃防御機能が含まれているかどうかに関する検証結果に基づき、いずれの検証結果も検証OKであった場合に、署名を付与する
    ことを特徴とするプログラム検証方法。
  9. コンピュータに、
    セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および、前記検証対象のプログラムもしくはその動作元である前記セキュア環境の保護機構に、プログラム実行中の外部から前記セキュア環境へのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する処理、および
    前記検証の結果に基づいて、前記プログラムに署名を付与する処理を実行させ、
    前記検証対象のプログラムにプログラム実行機能が含まれていないかどうか、および、前記検証対象のプログラムもしくはその動作元である前記セキュア環境の保護機構に外部入力攻撃防御機能が含まれているかどうかを検証する処理で、
    前記セキュア環境下で動作するプログラムとして入力された前記検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうかを検証させ、
    前記検証対象のプログラムまたはその動作元である前記セキュア環境の保護機構に、プログラム実行中の外部から前記セキュア環境への不正なデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証させ、
    署名を付与する処理で、
    プログラム実行機能が含まれていないかどうかに関する検証結果と、外部入力攻撃防御機能が含まれているかどうかに関する検証結果に基づき、いずれの検証結果も検証OKであった場合に、署名を付与させる
    ためのプログラム検証プログラム。
JP2019533744A 2017-07-31 2017-07-31 プログラム検証システム、方法およびプログラム Active JP7024792B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/027729 WO2019026137A1 (ja) 2017-07-31 2017-07-31 プログラム検証システム、方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2019026137A1 JPWO2019026137A1 (ja) 2020-07-02
JP7024792B2 true JP7024792B2 (ja) 2022-02-24

Family

ID=65233569

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019533744A Active JP7024792B2 (ja) 2017-07-31 2017-07-31 プログラム検証システム、方法およびプログラム

Country Status (3)

Country Link
US (1) US11409886B2 (ja)
JP (1) JP7024792B2 (ja)
WO (1) WO2019026137A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220129542A1 (en) * 2019-03-05 2022-04-28 Intel Corporation Deterministic trusted execution container through managed runtime language metadata
CN110956280A (zh) * 2019-10-25 2020-04-03 中国飞行试验研究院 一种民用飞机维修程序验证的方法
CN112182517A (zh) * 2020-10-28 2021-01-05 北京智游网安科技有限公司 基于canary安全保护的检测方法、终端及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005032185A (ja) 2003-07-11 2005-02-03 Sony Corp プログラム、セキュリティ保護装置およびその方法
JP2007122745A (ja) 2006-12-20 2007-05-17 Trend Micro Inc ネットワークを介して通信端末に提供されるプログラムに対する伝送経路上でのセキュリティの確保
JP2008158686A (ja) 2006-12-21 2008-07-10 Toshiba Corp プログラム検証装置及び方法、プログラム検証に基づく署名システム
WO2012160760A1 (ja) 2011-05-25 2012-11-29 パナソニック株式会社 情報処理装置および情報処理方法
JP2016534460A (ja) 2013-08-28 2016-11-04 アマゾン テクノロジーズ インク 動的アプリケーションセキュリティ検証

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067575A (en) * 1995-12-08 2000-05-23 Sun Microsystems, Inc. System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs
US7398532B1 (en) * 2000-03-02 2008-07-08 Hewlett-Packard Development Company, L.P. System and method for establishing a secure execution environment for a software process
US20040153644A1 (en) * 2003-02-05 2004-08-05 Mccorkendale Bruce Preventing execution of potentially malicious software
EP1934742A4 (en) * 2005-08-25 2009-08-19 Fortify Software Inc DEVICE AND METHOD FOR ANALYZING AND COMPLEMENTING A PROGRAM FOR PROVIDING SAFETY
US20070107057A1 (en) 2005-11-10 2007-05-10 Docomo Communications Laboratories Usa, Inc. Method and apparatus for detecting and preventing unsafe behavior of javascript programs
US8850428B2 (en) * 2009-11-12 2014-09-30 Trustware International Limited User transparent virtualization method for protecting computer programs and data from hostile code
US9210184B2 (en) * 2009-12-29 2015-12-08 International Business Machines Corporation Determining the vulnerability of computer software applications to attacks
JP2014089652A (ja) 2012-10-31 2014-05-15 Toshiba Corp 情報処理装置
US10033747B1 (en) * 2015-09-29 2018-07-24 Fireeye, Inc. System and method for detecting interpreter-based exploit attacks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005032185A (ja) 2003-07-11 2005-02-03 Sony Corp プログラム、セキュリティ保護装置およびその方法
JP2007122745A (ja) 2006-12-20 2007-05-17 Trend Micro Inc ネットワークを介して通信端末に提供されるプログラムに対する伝送経路上でのセキュリティの確保
JP2008158686A (ja) 2006-12-21 2008-07-10 Toshiba Corp プログラム検証装置及び方法、プログラム検証に基づく署名システム
WO2012160760A1 (ja) 2011-05-25 2012-11-29 パナソニック株式会社 情報処理装置および情報処理方法
JP2016534460A (ja) 2013-08-28 2016-11-04 アマゾン テクノロジーズ インク 動的アプリケーションセキュリティ検証

Also Published As

Publication number Publication date
US20200184079A1 (en) 2020-06-11
JPWO2019026137A1 (ja) 2020-07-02
WO2019026137A1 (ja) 2019-02-07
US11409886B2 (en) 2022-08-09

Similar Documents

Publication Publication Date Title
US9372699B2 (en) System and method for processing requests to alter system security databases and firmware stores in a unified extensible firmware interface-compliant computing device
US10496812B2 (en) Systems and methods for security in computer systems
EP3779745B1 (en) Code pointer authentication for hardware flow control
Marpaung et al. Survey on malware evasion techniques: State of the art and challenges
EP2946330B1 (en) Method and system for protecting computerized systems from malicious code
US8195953B1 (en) Computer program with built-in malware protection
US9934380B2 (en) Execution profiling detection of malicious objects
JP2008537224A (ja) 安全な起動方法およびシステム
Liu et al. Launching return-oriented programming attacks against randomized relocatable executables
JP7024792B2 (ja) プログラム検証システム、方法およびプログラム
JP2010205270A (ja) 取り外し可能な媒体に格納された実行可能なコードにタンパーエビデント性を提供する装置
US20180004946A1 (en) Regulating control transfers for execute-only code execution
Kellner et al. False sense of security: A study on the effectivity of jailbreak detection in banking apps
CN107980133B (zh) 暂时进程特权解除
Wu et al. An overview of mobile malware and solutions
Kuzminykh et al. Analysis of security of rootkit detection methods
US11194899B2 (en) Apparatus and methods for transitioning between a secure area and a less-secure area
Krishnan et al. PAM: process authentication mechanism for protecting system services against malicious code attacks
Wang et al. Kernel and application integrity assurance: Ensuring freedom from rootkits and malware in a computer system
Sarker et al. MVAM: Multi-variant attacks on memory for IoT trust computing
KR101197182B1 (ko) 컴퓨터 시스템에서의 해킹 방지 장치 및 방법
Aquilino Relevance of security features introduced in modern Windows OS
EP2919146A1 (en) An apparatus for enforcing control flows
Wang et al. Coprocessor-based hierarchical trust management for software integrity and digital identity protection
Rijah et al. Security Issues and Challenges in Windows OS Level

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211025

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: 20220111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220124

R151 Written notification of patent or utility model registration

Ref document number: 7024792

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151