JPWO2019026137A1 - Program verification system, method and program - Google Patents

Program verification system, method and program Download PDF

Info

Publication number
JPWO2019026137A1
JPWO2019026137A1 JP2019533744A JP2019533744A JPWO2019026137A1 JP WO2019026137 A1 JPWO2019026137 A1 JP WO2019026137A1 JP 2019533744 A JP2019533744 A JP 2019533744A JP 2019533744 A JP2019533744 A JP 2019533744A JP WO2019026137 A1 JPWO2019026137 A1 JP WO2019026137A1
Authority
JP
Japan
Prior art keywords
program
verification
function
execution
verified
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
Application number
JP2019533744A
Other languages
Japanese (ja)
Other versions
JP7024792B2 (en
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/en
Application granted granted Critical
Publication of JP7024792B2 publication Critical patent/JP7024792B2/en
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/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/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/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/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/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)

Abstract

本発明のプログラム検証システムは、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および/または、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証するプログラム検証手段51と、プログラム検証手段51による検証の結果に基づいて、プログラムに署名を付与する署名手段52とを備える。The program verification system of the present invention includes a program execution function that is a function of executing a new program in the same environment by a command in the program to be verified, which is input as a program that operates in a secure environment. And/or external input attack protection, which is a function that protects the program to be verified or the protection mechanism of the secure environment from which it is operating, against attacks caused by data input from outside during program execution. A program verification unit 51 for verifying whether or not the function is included, and a signature unit 52 for giving a signature to the program based on the verification result by the program verification unit 51 are provided.

Description

本発明は、セキュア環境下での悪意あるプログラムからの攻撃を防止するためのプログラム検証システム、プログラム検証方法およびプログラム検証プログラムに関する。 The present invention relates to a program verification system, a program verification method, and a program verification program for preventing an attack from a malicious program in a secure environment.

近年、IoTのセキュリティ解決策として、TEE(Trusted Execution Environment)技術と呼ばれるような、ハードウェアやソフトウェアを用いてアプリケーションの安全な実行環境を実現するための技術が注目されている。 2. Description of the Related Art In recent years, as a security solution for IoT, a technology called a TEE (Trusted Execution Environment) technology for realizing a safe execution environment for applications by using hardware and software has attracted attention.

TEEの一例として、プログラム等の実行環境を、通常の実行環境(以下、非セキュア環境という)と、所定の安全策がとられた実行環境(以下、セキュア環境という)とに分離して、セキュア環境に置かれるプログラム(以下、セキュアプログラムという)を規制したり、非セキュア環境からセキュア環境へのアクセスを禁止することなどが行われている(例えば、特許文献1)。このような制限を課すことで、外部の攻撃からセキュア環境下に置かれた秘密情報やプログラムを保護する。 As an example of TEE, the execution environment of a program or the like is separated into a normal execution environment (hereinafter referred to as a non-secure environment) and an execution environment in which a predetermined safety measure is taken (hereinafter referred to as a secure environment), and secure. The programs placed in the environment (hereinafter referred to as secure programs) are regulated, and access from the non-secure environment to the secure environment is prohibited (for example, Patent Document 1). By imposing such restrictions, confidential information and programs placed in a secure environment are protected from external attacks.

また、例えば、特許文献2には、スクリプトプログラムに対して、予め所定の安全ポリシーに基づいてコードの安全性を判定し、安全でない場合にコードを拒否することや、そのスクリプトプログラムが実行された際に安全ポリシーの違反が生じた場合に実行を防止することが記載されている。 Further, for example, in Patent Document 2, the security of a code is determined in advance for a script program based on a predetermined safety policy, the code is rejected when it is not safe, and the script program is executed. It is described that the execution is prevented when a violation of the safety policy occurs.

特開2014−089652号公報JP, 2014-089652, A 特開2009−521737号公報JP, 2009-521737, A

図14は、安全な実行環境の概念図である。図14に示すように、多くのTEEでは、非セキュア環境とセキュア環境とに分離し、提供元等において安全が保障されたセキュアプログラムのみをセキュア環境に配置した上で、非セキュア環境からセキュア環境へのアクセスを禁止することにより、安全な実行環境を構築する。仮に非セキュア環境に悪意あるプロセス(マルウェア等)が配置されても、セキュア環境下のプロセスやデータはそこからの攻撃を受けないため、正常動作を維持できる。 FIG. 14 is a conceptual diagram of a safe execution environment. As shown in FIG. 14, in many TEEs, a non-secure environment and a secure environment are separated, and only a secure program whose safety is guaranteed by a provider or the like is placed in the secure environment. Build a safe execution environment by prohibiting access to. Even if a malicious process (malware, etc.) is placed in the non-secure environment, the process and data in the secure environment are not attacked by it, so normal operation can be maintained.

このように、多くのセキュアプログラムの安全性は、技術面での静的な検証と法的な保障とで賄っている。しかし、契約やon−boardingといった法的な抑止力は、悪意を持った人間には通用しない可能性が高い。 In this way, the security of many secure programs is covered by static verification of technology and legal guarantee. However, legal deterrence such as contracts and on-boarding is unlikely to be applicable to a malicious person.

図15に示すように、一度、悪意のあるプログラムがセキュア環境に配置されてしまうと、以降、外部から悪意を検知したり、該プログラムを排除することは困難である。上述したTEEのように、セキュア環境の保護機構により、外部からの干渉を受け難くいからである。このため、検証時には悪意が見受けられないが、運用時に悪意が顕在化したセキュアプログラムが配置されてしまった場合、一方的に攻撃されるおそれがある。したがって、このような検証時に顕在化していなくてもセキュア環境下で悪意を持ち得るセキュアプログラムをセキュア環境下で動作させない(配置させないまたは実行許可を与えない)ことが重要である。 As shown in FIG. 15, once the malicious program is placed in the secure environment, it is difficult to detect the malicious program from the outside or eliminate the malicious program from the outside. This is because, like the above-mentioned TEE, it is difficult to receive external interference due to the protection mechanism of the secure environment. Therefore, no malicious intent can be seen at the time of verification, but if a secure program in which malicious intent is manifested during operation is placed, it may be unilaterally attacked. Therefore, it is important not to operate (not place or give execution permission) a secure program that may have malicious intent in the secure environment even if it is not revealed during such verification.

検証時に未顕在の悪意の例としては、Drive by download攻撃が挙げられる。図16に示すように、配置前の検証時には悪意が見受けられないが、運用過程で外部からのデータ入力等により悪意のあるセキュアプログラムに変異して、攻撃を与えることが考えられる。図16に示す例は、検証時には、端末とサーバ間で通信を行い、サーバから得た機密情報を端末内に安全に保持するプログラムであるように見受けられたが、運用時に、悪意のあるプログラムに変異する例である。本例では、事前に検証をクリアしたプログラムが、運用時に、所定のサーバから機密情報としてマルウェアの実行データの一部をダウンロードし、セキュアプログラムやセキュア環境の保護機構の脆弱性を利用して該実行データをセキュアプログラムに取り込ませる(該実行データに制御を渡させる)などして、マルウェアに変異する。 An example of the malicious intention that has not been revealed at the time of verification is a Drive by download attack. As shown in FIG. 16, no malicious intent is found at the time of verification before placement, but it is conceivable that a malicious secure program may be mutated by an external data input or the like in the operation process to give an attack. The example shown in FIG. 16 seems to be a program that performs communication between the terminal and the server at the time of verification, and securely holds confidential information obtained from the server in the terminal, but a malicious program at the time of operation. This is an example of mutation. In this example, a program that has been verified in advance downloads a part of malware execution data as confidential information from a predetermined server at the time of operation and uses the vulnerability of the secure program and the protection mechanism of the secure environment to download the malware. The execution data is taken into a secure program (control is passed to the execution data), etc., and mutated into malware.

また、図17に示すように、配置前の検証時には悪意が見受けられないが、運用過程で外部からのデータ入力等により悪意のあるセキュアプログラムを新たに起動して、攻撃を与えることが考えられる。図17に示す例は、検証時には、端末とサーバ間で通信を行い、サーバから得た機密情報を端末内に安全に保持するプログラムであるように見受けられたが、運用時に、悪意のあるプログラムをダウンロードして起動する例である。本例は、事前に検証をクリアしたプログラムが、運用時に、所定のサーバから機密情報としてマルウェアの実行データをダウンロードしてファイル化しておき、セキュアプログラムやセキュア環境の保護機構の脆弱性を利用してあたかも正当な実行ファイルとして該実行データを起動させる。 Further, as shown in FIG. 17, no malicious intent is found during the verification before the placement, but it is conceivable that a malicious secure program is newly activated by an external data input or the like in the operation process to give an attack. .. The example shown in FIG. 17 seems to be a program that communicates between the terminal and the server at the time of verification, and securely holds confidential information obtained from the server in the terminal, but a malicious program at the time of operation. Is an example of downloading and starting. In this example, a program that has been verified in advance downloads malware execution data as confidential information from a specified server and files it during operation, and exploits the vulnerabilities of the secure program and the protection mechanism of the secure environment. The execution data is activated as if it were a valid execution file.

法的な抑止力では、このような故意に未顕在の悪意を含むプログラムを配置もしくは実行させようとする、悪意ある攻撃者の行動を物理的に制限できないため、より強固な技術的な抑止力が求められる。しかし、外部入力により動的に悪意の有無が変化するようなセキュアプログラムに対して、特許文献1や特許文献2に記載の方法で悪意の検知または攻撃の防御をすることは困難である。 With legal deterrence, it is not possible to physically limit the behavior of a malicious attacker who intentionally deploys or executes a program that contains unidentified malicious intent. Is required. However, it is difficult to detect malicious intent or prevent attack by a method described in Patent Document 1 or Patent Document 2 with respect to a secure program whose presence or absence of malicious intent dynamically changes due to external input.

本発明は、上記課題に鑑み、セキュア環境下で顕在化する悪意による攻撃を防止できるプログラム検証システム、プログラム検証方法およびプログラム検証プログラムを提供することを目的とする。 In view of the above problems, it is an object of the present invention to provide a program verification system, a program verification method, and a program verification program that can prevent malicious attacks that become apparent in a secure environment.

本発明によるプログラム検証システムは、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および/または、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証するプログラム検証手段と、プログラム検証手段による検証の結果に基づいて、プログラムに署名を付与する署名手段とを備えたことを特徴とする。 The program verification system according to the present invention includes a program execution function that is a function of executing a new program in the same environment by a command in the program to be verified, which is input as a program that operates in a secure environment. And/or external input attack protection, which is a function that protects the program to be verified or the protection mechanism of the secure environment from which it is operating, against attacks that result from external data input during program execution. It is characterized by comprising a program verification means for verifying whether or not the function is included, and a signature means for giving a signature to the program based on the verification result by the program verification means.

また、本発明によるプログラム検証方法は、情報処理装置が、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および/または、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証し、検証の結果に基づいて、プログラムに署名を付与することを特徴とする。 In the program verification method according to the present invention, the information processing apparatus has a function of causing a program to be verified input as a program operating in a secure environment to execute a new program in the same environment by an instruction in the program. And/or protects the protection mechanism of the program to be verified or the secure environment from which it is operating, against attacks caused by external data input during program execution. It is characterized by verifying whether the external input attack protection function, which is a function, is included, and adding a signature to the program based on the verification result.

また、プログラム検証プログラムは、コンピュータに、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および/または、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する処理、および検証の結果に基づいて、プログラムに署名を付与する処理を実行させることを特徴とする。 The program verification program is a program execution function that is a function that causes a program to be verified, which is input as a program that operates in a secure environment, to execute a new program in the same environment according to an instruction in the program. And/or external input that is a function that protects the protection mechanism of the program to be verified or the secure environment that is the source of the operation from an attack caused by external data input during program execution. It is characterized in that processing for verifying whether an attack defense function is included and processing for assigning a signature to a program are executed based on the result of the verification.

本発明によれば、セキュア環境下で顕在化する悪意による攻撃を防止できる。 According to the present invention, it is possible to prevent a malicious attack that becomes apparent in a secure environment.

第1の実施形態のプログラム検証システム10の構成例を示すブロック図である。It is a block diagram which shows the structural example of the program verification system 10 of 1st Embodiment. 第1の実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。3 is a flowchart showing an example of an operation of the program verification system 10 of the first exemplary embodiment. 第2の実施形態のプログラム検証システム10の構成例を示すブロック図である。It is a block diagram which shows the structural example of the program verification system 10 of 2nd Embodiment. 外部入力攻撃防御機能検証部13の構成例を示すブロック図である。3 is a block diagram showing a configuration example of an external input attack protection function verification unit 13. FIG. 第2の実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。It is a flow chart which shows an example of operation of program verification system 10 of a 2nd embodiment. 第3の実施形態のプログラム検証システム10の構成例を示すブロック図である。It is a block diagram which shows the structural example of the program verification system 10 of 3rd Embodiment. 第3の実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。It is a flow chart which shows an example of operation of program verification system 10 of a 3rd embodiment. プログラム検証システム10のプログラム実行端末への適用例を示すブロック図である。It is a block diagram which shows the example of application to the program execution terminal of the program verification system 10. プログラム検証システム10の他の構成例を示すブロック図である。3 is a block diagram showing another configuration example of the program verification system 10. FIG. 図9に示すプログラム検証システム10の動作の一例を示すフローチャートである。10 is a flowchart showing an example of the operation of the program verification system 10 shown in FIG. 9. 本発明の各実施形態にかかるコンピュータの構成例を示す概略ブロック図である。It is a schematic block diagram which shows the structural example of the computer concerning each embodiment of this invention. 本発明のプログラム検証システム50の概要を示すブロック図である。It is a block diagram which shows the outline of the program verification system 50 of this invention. 本発明のプログラム検証システム50の他の構成例を示すブロック図である。It is a block diagram which shows the other structural example of the program verification system 50 of this invention. 安全な実行環境の概念図である。It is a conceptual diagram of a safe execution environment. 安全でない実行環境(セキュアプログラムに悪意があった場合)の概念図である。It is a conceptual diagram of an unsafe execution environment (when a secure program has malicious intent). 検証時に未顕在の悪意が運用時に顕在化する例を示す説明図である。FIG. 9 is an explanatory diagram showing an example in which an unidentified malicious intention is manifested during operation during verification. 検証時に未顕在の悪意が運用時に顕在化する例を示す説明図である。FIG. 9 is an explanatory diagram showing an example in which an unidentified malicious intention is manifested during operation during verification.

実施形態1.
以下、本発明の実施形態を図面を参照して説明する。図1は、第1の実施形態のプログラム検証システム10の構成例を示すブロック図である。図1に示すプログラム検証システム10は、悪意検証部11と、プログラム実行機能検証部12と、署名部2とを備える。
Embodiment 1.
Hereinafter, embodiments of the present invention will be described with reference to the drawings. FIG. 1 is a block diagram showing a configuration example of a program verification system 10 according to the first embodiment. The program verification system 10 shown in FIG. 1 includes a maliciousness verification unit 11, a program execution function verification unit 12, and a signature unit 2.

悪意検証部11は、検証対象のプログラムに悪意が含まれていないことを検証する。プログラムは、機械に対する命令を記述したもの(データ)である。一般に、そのうち機械が読める形式のものは実行コードと呼ばれ、人間が読める形式のものがソースコードと呼ばれる。また、「悪意」は、表示や予めされた説明とは異なる動作をしたり、機械に対して該動作をする命令を出すなどして、故意に攻撃や不正なアクセスや情報流出などを行うコード、ユースケース、運用方法などである。 The malicious intent verification unit 11 verifies that the program to be verified does not include malicious intent. A program is a description (data) of instructions for a machine. Generally, the machine-readable form is called executable code, and the human-readable form is called source code. Also, "malicious" is a code that intentionally attacks, illegally accesses, leaks information, etc. by performing an operation different from the display or the explanation given in advance or issuing a command to the machine to perform the operation. , Use cases, operation methods, etc.

例えば、悪意検証部11は、既知の方法を用いて悪意の有無を判定することが可能である。具体的には、悪意検証部11は、検証対象のプログラムとして実行コード(の集合)を入力し、該実行コードに対して既存のウィルスチェックを行ってもよい。この場合、悪意検証部11は、ウィルスが検出された場合には、検証NG(悪意あり)と判定し、それ以外の場合に、検証OK(悪意なし)と判定してもよい。 For example, the malicious intent verification unit 11 can determine whether there is malicious intent using a known method. Specifically, the maliciousness verification unit 11 may input an execution code (a set) as a program to be verified and perform an existing virus check on the execution code. In this case, the malicious intent verification unit 11 may determine that verification NG (has malicious intent) when a virus is detected, and otherwise may verify OK (no malicious intent).

また、悪意検証部11は、例えば、検証対象のプログラムに対して、ユーザがその配布元からユースケースや運用方法についての説明を受けたか否かおよびそのときの確認結果を入力させ、その入力に基づき悪意の有無を判定してもよい。この場合、悪意検証部11は、ユーザがユースケースや運用方法についての説明を受けていない場合や、その結果安全性が確認されなかった場合には、検証NG(悪意あり)と判定し、それ以外の場合に、検証OK(悪意なし)と判定してもよい。 Further, the maliciousness verifying unit 11 causes the program to be verified to input, for example, whether or not the user has received an explanation about a use case or an operating method from the distributor, and a confirmation result at that time, and inputs the input. The presence or absence of malicious intent may be determined based on this. In this case, the maliciousness verification unit 11 determines that the verification is NG (malicious) if the user has not received an explanation of the use case or the operation method, or if the security has not been confirmed as a result. In other cases, it may be determined that the verification is OK (no malicious intention).

また、悪意検証部11は、例えば、検証対象のプログラムに対して、技術窓口(開発者等)とのon−boardingを実施したか否かおよびそのときの確認結果を入力させ、その入力に基づき悪意の有無を判定してもよい。この場合、悪意検証部11は、on−boardingを実施していない場合や、その結果安全性が確認されなかった場合には、検証NG(悪意あり)と判定し、それ以外の場合に、検証OK(悪意なし)と判定してもよい。 Further, the maliciousness verification unit 11 inputs, for example, whether or not on-boarding with a technical contact (developer etc.) has been performed on the program to be verified and the confirmation result at that time, and based on the input. The presence or absence of malicious intent may be determined. In this case, the maliciousness verification unit 11 determines that the verification is NG (malicious) when the on-boarding is not performed, or when the security is not confirmed as a result, and in other cases, the verification is performed. It may be determined to be OK (no malicious intention).

なお、悪意検証部11は、上記の検証方法を複数組み合わせて実施することも可能である。その場合、悪意検証部11は、1つでも検証NGであれば、検証NG(悪意あり)とし、全て検証OKであれば検証OK(悪意なし)とする。 The maliciousness verification unit 11 can also be implemented by combining a plurality of the above verification methods. In that case, the malicious intent verification unit 11 determines that verification NG (with malicious intent) if even one is unsuccessful, and verifies OK (without malicious intent) if all verifications are OK.

プログラム実行機能検証部12は、検証対象のプログラムに、プログラム実行機能が含まれていないことを検証する。ここで、プログラム実行機能は、当該プログラム内で、他のプログラムまたは自身を起動するなどして、当該プログラム内の命令により、同じ環境下(すなわちセキュア環境下)に新たなプログラムを実行させる機能(コード)である。そのようなプログラム実行機能の例としては、C言語のexec系システムコールなどが挙られる。 The program execution function verification unit 12 verifies that the program to be verified does not include the program execution function. Here, the program execution function is a function of executing a new program under the same environment (that is, under secure environment) by an instruction in the program by activating another program or itself in the program ( Code). An example of such a program execution function is an exec system call in C language.

セキュア環境下で、セキュアプログラムによって派生的に新たなプログラムが実行できるとなると、セキュアプログラム自体には悪意が含まれない場合にも、該セキュアプログラムが生成した実行ファイル等からマルウェアを起動して攻撃をすることが可能になる。本実施形態では、このような外部(セキュア領域以外の領域)からのデータ入力等を利用して、後に(運用時に)悪意あるプログラムが実行される可能性があるコードの有無を確認する。そして、そのようなコードがあった場合には、悪意を持つ可能性があるとして検証NG(プログラム実行機能あり)と判定し、それ以外の場合に、検証OK(プログラム実行機能なし)と判定する。 In a secure environment, if a secure program can run a new program as a derivative, even if the secure program itself does not have malicious intent, it launches malware from the executable file generated by the secure program and attacks. It becomes possible to do. In the present embodiment, by using such data input from the outside (areas other than the secure area), it is confirmed whether or not there is a code in which a malicious program may be executed later (during operation). If such a code is present, it is determined that there is a possibility of malicious intent, and it is determined as verification NG (with a program execution function), and otherwise, it is determined as verification OK (without a program execution function). ..

プログラム実行機能の有無の確認方法の例としては、逆アセンブルによる解析が挙げられる。プログラム実行機能検証部12は、例えば、検証対象のプログラムの実行コードを逆アセンブルして、システムコール実行時に、実行先の情報が格納される所定のレジスタ(例えば、システムコール番号が格納されるAXレジスタ等)を確認し、禁止されているシステムコールが呼ばれていないかを確認してもよい。 An example of a method for checking the presence or absence of the program execution function is analysis by disassembly. The program execution function verification unit 12, for example, disassembles the execution code of the program to be verified, and when a system call is executed, a predetermined register (for example, an AX in which a system call number is stored) in which information of an execution destination is stored. Register) to check if a prohibited system call is called.

署名部2は、悪意検証部11による検証結果と、プログラム実行機能検証部12による検証結果とに基づいて、署名を行う。署名部2は、いずれの検証結果も検証OKであった場合に、検証対象のプログラムに対して署名を行う。 The signature unit 2 makes a signature based on the verification result by the maliciousness verification unit 11 and the verification result by the program execution function verification unit 12. The signature unit 2 signs the program to be verified when all the verification results are verification OK.

次に、本実施形態の動作を説明する。図2は、本実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。図2に示す例では、まず、図示しない入力部が、検証対象のプログラム(実行コード等)を入力する(ステップS101)。 Next, the operation of this embodiment will be described. FIG. 2 is a flowchart showing an example of the operation of the program verification system 10 of this embodiment. In the example shown in FIG. 2, first, an input unit (not shown) inputs a program to be verified (execution code or the like) (step S101).

次いで、悪意検証部11が、入力された検証対象のプログラムに対して、悪意の検証を行う(ステップS102)。悪意の検証の結果、悪意ありと判定された場合(ステップS103のYes)、ステップS104に移行し。そうでなければ(ステップS103のNo)、ステップS105に移行する。 Next, the malicious intent verification unit 11 verifies the maliciousness of the input program to be verified (step S102). As a result of the malicious intent verification, if it is determined that there is malicious intent (Yes in step S103), the process proceeds to step S104. Otherwise (No in step S103), the process proceeds to step S105.

ステップS104では、検証結果を検証NGすなわち署名NGとして、ステップS109に移行する。 In step S104, the verification result is set to verification NG, that is, signature NG, and the process proceeds to step S109.

ステップS105では、プログラム実行機能検証部12が、入力された検証対象のプログラムに対して、プログラム実行機能の検証を行う。プログラム実行機能の検証の結果、プログラム実行機能ありと判定された場合(ステップS106のYes)、ステップS104に移行し、そうでなければ(ステップS106のNo)、ステップS107に移行する。 In step S105, the program execution function verification unit 12 verifies the program execution function of the input verification target program. As a result of the verification of the program execution function, if it is determined that the program execution function is present (Yes in step S106), the process proceeds to step S104, and if not (No in step S106), the process proceeds to step S107.

ステップS107では、最終的に検証OKすなわち署名OKとして、ステップS108に移行する。 In step S107, verification OK, that is, signature OK is finally made, and the process proceeds to step S108.

ステップS108では、署名部2が、署名OKと判定されたプログラムに署名を付与する。 In step S108, the signature unit 2 adds a signature to the program for which the signature is determined to be OK.

最後に、図示しない出力部が、検証結果(検証OK/NG)を出力する(ステップS109)。ここで、該出力部は、検証結果とともに、検証対象とされたプログラム(検証OKの場合は、署名付きプログラム)や、検証NGであった場合にはその詳細(どの部分がどの検証方法によりNGとなったか等)を出力してもよい。 Finally, the output unit (not shown) outputs the verification result (verification OK/NG) (step S109). Here, the output unit, together with the verification result, the program to be verified (the signed program in the case of verification OK) and the details thereof in the case of verification NG (which part is NG depending on which verification method). May be output).

なお、本実施形態の署名は、セキュア環境への配置の可否およびセキュア環境下での実行の可否を判定するために使用される。ユーザもしくはセキュア環境の保護機構は、例えば、署名部2による署名がある実行コードのみをセキュア環境に配置する、またセキュア環境下での実行を許可する。 The signature of the present embodiment is used to determine whether or not it can be placed in the secure environment and whether or not it can be executed in the secure environment. The user or the secure environment protection mechanism, for example, places only the execution code signed by the signature unit 2 in the secure environment, and permits execution in the secure environment.

なお、上記の例では、悪意の検証(ステップS102)の後に、プログラム実行機能の検証ステップS105)を行う例を示したが、これらの検証は順不同である。すなわち、プログラム実行機能の検証を先に行ったり、両者を並列に行うことも可能である。 In the above example, the malicious execution verification (step S102) and the program execution function verification step S105) are performed, but the verifications are performed in any order. That is, the verification of the program execution function can be performed first, or both can be performed in parallel.

以上のように、本実施形態によれば、検証対象のプログラム自体に含まれる(顕在化している)悪意の有無だけでなく、顕在化しない悪意の1つとなりうるプログラム実行機能の有無を判定し、両方の点で安全性が確認された場合にのみ署名を行う。セキュア環境への配置の可否およびセキュア環境下での実行の可否を判定する際に、当該署名を利用することにより、顕在化している悪意を含むプログラムだけでなく、プログラム自体には悪意が見られないが、外部からのデータ入力等を利用して後に悪意あるプログラムを実行される可能性があるコードを含むプログラムがセキュア環境に置かれたり、セキュア環境で実行されることを事前に防ぐことができる。したがって、セキュア環境下で顕在化する悪意による攻撃を防止できる。 As described above, according to the present embodiment, it is determined whether or not there is a malicious intent (which has become apparent) included in the program to be verified, as well as whether or not there is a program execution function that can be one of unintentional malicious intent. , Sign only if both are confirmed secure. By using the signature when determining whether to deploy in the secure environment and whether to execute in the secure environment, not only the program including the actual malicious intent but also the malicious in itself is found in the program itself. Although it is not, it is possible to prevent in advance from being placed in a secure environment or being executed in a secure environment, a program including code that may execute a malicious program later by using data input from the outside. it can. Therefore, it is possible to prevent malicious attacks that become apparent in a secure environment.

なお、プログラム検証システム10は、一般的な手法に基づき悪意なしと判定されたプログラムを、本実施形態の検証対象のプログラムとすることも可能である。その場合、悪意検証部11は省略可能である。そのような場合、署名部2は、悪意検証部11の検証結果の判定に代えて、一般的な手法に基づき悪意なしと判定されたプログラムに付与される第三機関等による所定の署名の有無を判定すればよい。他の実施形態においても同様である。 It should be noted that the program verification system 10 can also use a program determined to have no malicious intent based on a general method as a program to be verified in the present embodiment. In that case, the maliciousness verification unit 11 can be omitted. In such a case, the signature unit 2 replaces the determination of the verification result of the maliciousness verification unit 11 with the presence or absence of a predetermined signature by a third party or the like given to the program determined to be non-malicious based on a general method. Should be determined. The same applies to other embodiments.

実施形態2.
次に、本発明の第2の実施形態を説明する。図3は、第2の実施形態のプログラム検証システム10の構成例を示すブロック図である。図3に示すプログラム検証システム10は、悪意検証部11と、外部入力攻撃防御機能検証部13と、署名部2とを備える。
Embodiment 2.
Next, a second embodiment of the present invention will be described. FIG. 3 is a block diagram showing a configuration example of the program verification system 10 of the second exemplary embodiment. The program verification system 10 shown in FIG. 3 includes a maliciousness verification unit 11, an external input attack defense function verification unit 13, and a signature unit 2.

悪意検証部11は、第1の実施形態と同様である。 The maliciousness verification unit 11 is the same as that in the first embodiment.

外部入力攻撃防御機能検証部13は、セキュア環境の保護機構や検証対象のプログラムに、脆弱性緩和技術として、外部入力攻撃防御機能が有効に存在していることを検証する。ここで、外部入力攻撃防御機能は、プログラム実行中の外部からのデータ入力(特に、不正なデータ入力)に起因する攻撃(悪意あるコードの実行、領域破壊等)を防御する機能である。外部入力攻撃防御機能の例としては、スタック保護機能や、外部コード実行防止機能が挙げられる。 The external input attack defense function verification unit 13 verifies that the external input attack defense function effectively exists as a vulnerability mitigation technique in the protection mechanism of the secure environment and the program to be verified. Here, the external input attack defense function is a function of defending against an attack (execution of malicious code, area destruction, etc.) caused by external data input (especially illegal data input) during program execution. Examples of the external input attack defense function include a stack protection function and an external code execution prevention function.

スタック保護機能は、外部からの入力に対してスタックを保護する機能である。ここで、スタックは、次に実行するコードに影響するデータ(ジャンプ先)を保持する領域である。なお、スタック保護機能は、事前の保護(スタックの外部入力による書き換え禁止等)であっても事後の保護(外部入力によってスタックが破壊された場合にプログラムを停止させる等)であってもよい。 The stack protection function is a function that protects the stack against external input. Here, the stack is an area for holding data (jump destination) that affects the code to be executed next. Note that the stack protection function may be protection in advance (such as prohibition of rewriting by external input of the stack) or subsequent protection (such as stopping the program when the stack is destroyed by external input).

外部入力攻撃防御機能検証部13は、例えば、不正なコードや予期せぬアドレスへのジャンプ(制御の明け渡し)を防止するために、検証対象のプログラムにスタック保護機能が含まれているか否かを判定する。この場合、外部入力攻撃防御機能検証部13は、スタック保護機能が含まれていない場合に、検証NG(外部入力攻撃防御機能、特にスタック保護機能なし)と判定し、それ以外の場合に、検証OK(外部入力攻撃防御機能、特にスタック保護機能あり)と判定してもよい。 The external input attack defense function verification unit 13 determines whether or not the program to be verified includes a stack protection function in order to prevent, for example, an illegal code or an unexpected jump to an address (passing of control). judge. In this case, the external input attack protection function verification unit 13 determines that the verification is NG (external input attack protection function, especially no stack protection function) when the stack protection function is not included, and verifies otherwise. It may be determined to be OK (there is an external input attack protection function, especially a stack protection function).

具体的に、外部入力攻撃防御機能検証部13は、検証対象のプログラムとして実行コード(の集合)を入力し、該実行コードに対して、カナリアなどの所定のスタック保護機能が実装されているか否かを確認してもよい。また、外部入力攻撃防御機能検証部13は、検証対象のプログラムに、スタック保護機能として、スタックの破壊を検知した際のハンドリング関数(例えば、__Stack_chk_fail関数()など)が含まれているか否かを確認してもよい。 Specifically, the external input attack defense function verification unit 13 inputs an execution code (a set) as a program to be verified, and determines whether or not a predetermined stack protection function such as a canary is implemented for the execution code. You may check In addition, the external input attack defense function verification unit 13 determines whether or not the verification target program includes, as a stack protection function, a handling function (for example, _Stack_chk_fail function ()) at the time of detecting the stack destruction. You may check.

また、外部コード実行防止機能は、スタックやヒープ領域等の、プログラムの動作中に書き換えが許可されている領域(以下、動的領域という)内でのコードの実行を防止する機能である。ここで、動的領域に対する書き換えは、直接的であるか間接的であるかは問わない。すなわち、プログラム(より具体的にはプログラムに従って動作する情報処理装置)が直接その領域を指定して書き換えることができる領域だけでなく、外部からの入力に基づいてプログラムが間接的に書き換えることができる領域も、動的領域に含まれる。 The external code execution prevention function is a function of preventing code execution in an area (hereinafter referred to as a dynamic area) such as a stack or a heap area in which rewriting is permitted during the operation of the program. Here, rewriting to the dynamic area does not matter whether it is direct or indirect. That is, the program (more specifically, the information processing device that operates according to the program) can directly rewrite the area by directly designating the area, and the program can also indirectly rewrite based on the input from the outside. The area is also included in the dynamic area.

外部入力攻撃防御機能検証部13は、例えば、外部から入力された不正なコードが実行されないように、検証対象のプログラムまたはセキュア環境の保護機構に対して、外部コード実行防止機能が含まれているか否かを判定する。この場合、外部入力攻撃防御機能検証部13は、検証対象のプログラムまたはセキュア環境の保護機構に外部コード実行防止機能が含まれていない場合に、検証NG(外部入力攻撃防御機能、特に外部コード実行防止機能なし)と判定し、それ以外の場合に、検証OK(外部入力攻撃防御機能、特に外部コード実行防止機能あり)と判定してもよい。 The external input attack defense function verification unit 13 includes, for example, an external code execution prevention function for the program to be verified or the protection mechanism of the secure environment so that an illegal code input from the outside is not executed. Determine whether or not. In this case, the external input attack defense function verification unit 13 verifies NG (external input attack defense function, particularly external code execution) when the program to be verified or the protection mechanism of the secure environment does not include the external code execution prevention function. It may be determined that there is no prevention function, and in other cases, it may be determined that the verification is OK (external input attack protection function, especially with external code execution prevention function).

具体的に、外部入力攻撃防御機能検証部13は、検証対象のプログラムがELF形式のバイナリである場合、プログラムヘッダのフラグ等を参照し、動的領域として宣言された領域に実行許可がないことを確認してもよい。また、外部入力攻撃防御機能検証部13は、セキュア環境の保護機構に、NX bit(No execute bit),DEP(Data Execution Prevention),Exec−shieldなどの動的領域を保護または動的領域でのデータ実行を防止する技術が適用されていることを確認してもよい。 Specifically, when the program to be verified is an ELF binary, the external input attack defense function verification unit 13 refers to the flag of the program header, etc., and the area declared as the dynamic area has no execution permission. You may check. In addition, the external input attack protection function verification unit 13 protects dynamic areas such as NX bit (No execute bit), DEP (Data Execution Prevention), and Exec-shield in the protection mechanism of the secure environment. It may be confirmed that a technique for preventing data execution is applied.

以下は、Linux(登録商標)で動作するセキュア環境の保護機構に対する確認の具体例である。
・起動ログに、“NX (Ececute Disable) protection:qctive”と記載されていることを確認する。
・“/proc/sys/kernerl/exec-shield”ファイルを参照して、“有効”となっていることを確認する。
The following is a specific example of confirmation with respect to the protection mechanism of the secure environment that operates on Linux (registered trademark).
-Check that "NX (Ececute Disable) protection:qctive" is written in the startup log.
-Refer to the "/proc/sys/kernerl/exec-shield" file and confirm that it is "enabled".

なお、セキュア環境の保護機構に対する確認は、該保護機構が稼働しているコンピュータ上で実施されることが好ましい。例えば、プログラム検証システム10は、検証対象のプログラムが配置されるセキュア環境を備えた端末(以下、プログラム実行端末という)上で動作するシステムであってもよい。その場合において、プログラム検証システム10の外部入力攻撃防御機能検証部13は、検証対象のプログラムがセキュア環境に配置される前またはセキュア環境に配置された後実行される前に、外部入力攻撃防御機能の検証を行う。なお、セキュア環境の保護機構に対する確認は、例えば、プログラム実行端末以外のコンピュータが、プログラム実行端末に接続して遠隔操作により行ったり、ユーザに、該保護機構が稼働しているコンピュータ上での実施結果を入力させ、それに基づいて行うことも可能である。 It should be noted that the confirmation of the protection mechanism of the secure environment is preferably performed on the computer on which the protection mechanism operates. For example, the program verification system 10 may be a system that operates on a terminal (hereinafter referred to as a program execution terminal) having a secure environment in which a program to be verified is arranged. In that case, the external input attack defense function verification unit 13 of the program verification system 10 performs the external input attack defense function before the program to be verified is placed in the secure environment or before being executed after being placed in the secure environment. Verify. It should be noted that the confirmation of the protection mechanism of the secure environment is performed, for example, by a computer other than the program execution terminal being connected to the program execution terminal by remote control, or performed by the user on a computer on which the protection mechanism is operating. It is also possible to input the result and perform the operation based on it.

また、外部入力攻撃防御機能検証部13は、上記の検証方法を複数組み合わせて実施することも可能である。その場合、外部入力攻撃防御機能検証部13は、例えば、少なくとも1つのスタック保護機能と、少なくとも1つの外部コード実行防止機能とが含まれている場合に、検証OK(外部入力攻撃防御機能あり)とし、そうでなければ検証NG(外部入力攻撃防御機能なし)としてもよい。また、外部入力攻撃防御機能検証部13は、例えば、スタック保護機能と外部コード実行防止機能のうち少なくとも1つが含まれていれば、検証OKとし、そうでなければ検証NGとしてもよい。また、例えば、検証方法の組み合わせに対して検証OKとする条件を予め設定しておき、外部入力攻撃防御機能検証部13は、実施する検証の組み合わせに応じた該条件に基づいて、最終的な検証OK/検証NGを判定してもよい。 Further, the external input attack protection function verification unit 13 can also be implemented by combining a plurality of the above verification methods. In that case, the external input attack defense function verification unit 13 verifies OK (there is an external input attack defense function) when, for example, at least one stack protection function and at least one external code execution prevention function are included. Otherwise, verification NG (no external input attack protection function) may be used. Further, the external input attack defense function verification unit 13 may be verified OK if at least one of the stack protection function and the external code execution prevention function is included, and may be verified NG otherwise. In addition, for example, a condition for verification OK is set in advance for a combination of verification methods, and the external input attack defense function verification unit 13 determines a final condition based on the condition according to the combination of verifications to be performed. The verification OK/verification NG may be determined.

図4は、外部入力攻撃防御機能検証部13の構成例を示すブロック図である。図4に示すように、外部入力攻撃防御機能検証部13は、スタック保護機能検証部131と、外部コード実行防止機能検証部132とを含んでいてもよい。 FIG. 4 is a block diagram showing a configuration example of the external input attack defense function verification unit 13. As shown in FIG. 4, the external input attack defense function verification unit 13 may include a stack protection function verification unit 131 and an external code execution prevention function verification unit 132.

スタック保護機能検証部131は、上述したスタック保護機能の検証を行う。外部コード実行防止機能検証部132は、上述した外部コード実行防止機能の検証を行う。 The stack protection function verification unit 131 verifies the stack protection function described above. The external code execution prevention function verification unit 132 verifies the external code execution prevention function described above.

署名部2は、悪意検証部11による検証結果と、外部入力攻撃防御機能検証部13による検証結果とに基づいて、署名を行う。署名部2は、いずれの検証結果も検証OKであった場合に、検証対象のプログラムに対して署名を行う。 The signature unit 2 makes a signature based on the verification result by the maliciousness verification unit 11 and the verification result by the external input attack defense function verification unit 13. The signature unit 2 signs the program to be verified when all the verification results are verification OK.

次に、本実施形態の動作を説明する。図5は、本実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。なお、本例のステップS101〜ステップS104、ステップS109は、第1の実施形態と同じである。 Next, the operation of this embodiment will be described. FIG. 5 is a flowchart showing an example of the operation of the program verification system 10 of this embodiment. Note that steps S101 to S104 and step S109 of this example are the same as those in the first embodiment.

図5に示す例では、まず図示しない入力部が、検証対象のプログラム(実行コード等)を入力すると(ステップS101)、悪意検証部11が、入力された検証対象のプログラムに対して、悪意の検証を行う(ステップS102)。悪意の検証の結果、悪意ありと判定された場合(ステップS103のYes)、ステップS104に移行し。そうでなければ(ステップS103のNo)、ステップS115に移行する。 In the example shown in FIG. 5, when an input unit (not shown) first inputs a program to be verified (execution code or the like) (step S101), the malicious intent verification unit 11 verifies that the input program to be verified is malicious. Verification is performed (step S102). As a result of the malicious intent verification, if it is determined that there is malicious intent (Yes in step S103), the process proceeds to step S104. Otherwise (No in step S103), the process proceeds to step S115.

ステップS104では、検証結果を検証NGすなわち署名NGとして、ステップS109に移行する。 In step S104, the verification result is set to verification NG, that is, signature NG, and the process proceeds to step S109.

ステップS115では、外部入力攻撃防御機能検証部13が、入力された検証対象のプログラムおよび/またはセキュア環境の保護機構に対して、外部入力攻撃防御機能の検証を行う。外部入力攻撃防御機能の検証の結果、外部入力攻撃防御機能ありと判定された場合(ステップS116のYes)、ステップS117に移行し、そうでなければ(ステップS116のNo)、ステップS104に移行する。 In step S115, the external input attack defense function verification unit 13 verifies the external input attack defense function with respect to the input verification target program and/or the protection mechanism of the secure environment. As a result of the verification of the external input attack protection function, if it is determined that the external input attack protection function is present (Yes in step S116), the process proceeds to step S117, and if not (No in step S116), the process proceeds to step S104. ..

ステップS117では、最終的に検証OKすなわち署名OKとして、ステップS118に移行する。 In step S117, verification OK, that is, signature OK is finally made, and the process proceeds to step S118.

ステップS118では、署名部2が、署名OKと判定されたプログラムに署名を付与する。 In step S118, the signature unit 2 adds a signature to the program for which the signature is OK.

最後に、図示しない出力部が、検証結果(検証OK/NG)や署名付きプログラムや検証結果の詳細等を出力する(ステップS109)。 Finally, the output unit (not shown) outputs the verification result (verification OK/NG), the signed program, the details of the verification result, and the like (step S109).

なお、本実施形態の署名も、セキュア環境への配置の可否およびセキュア環境下での実行の可否を判定するために使用される。 The signature of the present embodiment is also used to determine whether or not placement in the secure environment and execution in the secure environment are possible.

また、上記の例では、悪意の検証(ステップS102)の後に、外部入力攻撃防御の検証ステップS115)を行う例を示したが、これらの検証は順不同である。すなわち、外部入力攻撃防御の検証を先に行ったり、両者を並列に行うことも可能である。また、第1の実施形態同様、悪意の検証を省略することも可能である。 Further, in the above example, an example in which the malicious input verification (step S102) is followed by the external input attack defense verification step S115) is shown, but these verifications are performed in any order. That is, it is possible to verify the external input attack protection first, or to perform both in parallel. Further, as in the first embodiment, it is possible to omit malicious verification.

以上のように、本実施形態によれば、検証対象のプログラム自体に含まれる(顕在化している)悪意の有無だけでなく、顕在化しない悪意の1つである外部入力による攻撃があるとして、そのような攻撃を防御する機能(外部入力攻撃防御機能)の有無を判定し、両方の点で安全性が確認された場合にのみ署名を行う。セキュア環境への配置の可否およびセキュア環境下での実行の可否を判定する際に、当該署名を利用することにより、顕在化している悪意を含むプログラムだけでなく、プログラム自体には悪意が見られないが、外部からのデータ入力により悪意が顕在化して攻撃を加える可能性のあるプログラムがセキュア環境に置かれたり、セキュア環境で実行されることを事前に防ぐことができる。したがって、セキュア環境下で顕在化する悪意による攻撃を防止できる。 As described above, according to the present embodiment, it is assumed that there is an attack by external input, which is one of the unrealized malicious intentions, as well as the presence/absence of malicious intentions (which is manifested) included in the program to be verified. It is judged whether or not there is a function to prevent such an attack (external input attack protection function), and a signature is given only when safety is confirmed in both points. By using the signature when determining whether to deploy in the secure environment and whether to execute in the secure environment, not only the program including the actual malicious intent but also the malicious in itself is found in the program itself. Although it is not, it is possible to prevent in advance programs from being put in the secure environment or executed in the secure environment, which may cause malicious attacks due to external data input. Therefore, it is possible to prevent malicious attacks that become apparent in a secure environment.

実施形態3.
次に、本発明の第3の実施形態を説明する。図6は、第3の実施形態のプログラム検証システム10の構成例を示すブロック図である。図6に示すプログラム検証システム10は、悪意検証部11と、プログラム実行機能検証部12と、外部入力攻撃防御機能検証部13と、署名部2とを備える。なお、本例は、第1の実施形態と第2の実施形態と組み合わせた例である。
Embodiment 3.
Next, a third embodiment of the present invention will be described. FIG. 6 is a block diagram showing a configuration example of the program verification system 10 of the third exemplary embodiment. The program verification system 10 shown in FIG. 6 includes a maliciousness verification unit 11, a program execution function verification unit 12, an external input attack defense function verification unit 13, and a signature unit 2. In addition, this example is an example in which the first embodiment and the second embodiment are combined.

悪意検証部11およびプログラム実行機能検証部12は、第1の実施形態と同様である。また、外部入力攻撃防御機能検証部13は、第2の実施形態と同様である。 The maliciousness verification unit 11 and the program execution function verification unit 12 are the same as those in the first embodiment. The external input attack protection function verification unit 13 is the same as that in the second embodiment.

本実施形態の署名部2は、悪意検証部11による検証結果と、プログラム実行機能検証部12による検証結果と、外部入力攻撃防御機能検証部13による検証結果とに基づいて、署名を行う。署名部2は、いずれの検証結果も検証OKであった場合に、検証対象のプログラムに対して署名を行う。 The signature unit 2 of the present embodiment signs based on the verification result by the maliciousness verification unit 11, the verification result by the program execution function verification unit 12, and the verification result by the external input attack defense function verification unit 13. The signature unit 2 signs the program to be verified when all the verification results are verification OK.

次に、本実施形態の動作を説明する。図7は、本実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。なお、本例のステップS101〜ステップS104、ステップS109は、第1の実施形態と同じであり、ステップS115,S116は、第2の実施形態と同じであるため、説明を省略する。 Next, the operation of this embodiment will be described. FIG. 7 is a flowchart showing an example of the operation of the program verification system 10 of this embodiment. Note that steps S101 to S104 and step S109 of the present example are the same as those in the first embodiment, and steps S115 and S116 are the same as those in the second embodiment, so description thereof will be omitted.

本実施形態では、検証対象のプログラム(実行コード等)が入力されると、まず、悪意検証部11が、入力された検証対象のプログラムに対して、悪意の検証を行う(ステップS102〜)。その後、プログラム実行機能検証部12が、入力された検証対象のプログラムに対して、プログラム実行機能の検証を行う(ステップS105〜)。その後、外部入力攻撃防御機能検証部13が、入力された検証対象のプログラムおよび/またはセキュア環境の保護機構に対して、外部入力攻撃防御機能の検証を行う(ステップS115〜)。 In this embodiment, when a program to be verified (execution code or the like) is input, first, the maliciousness verification unit 11 verifies maliciousness with respect to the input program to be verified (step S102-). After that, the program execution function verification unit 12 verifies the program execution function of the inputted program to be verified (step S105-). After that, the external input attack defense function verification unit 13 verifies the external input attack defense function with respect to the inputted program to be verified and/or the protection mechanism of the secure environment (steps S115 to S115).

そして、それらの結果を受けて、署名部2が、署名OKとされたプログラムに署名を付与する(ステップS127,S128)。具体的には、署名部2は、悪意の検証、プログラム実行機能の検証および外部入力攻撃防御の検証のいずれの検証結果も検証OKであった場合に、検証OKとし(ステップS127)、検証対象のプログラムに署名を付与する(ステップS128)。 Then, in response to these results, the signature unit 2 adds a signature to the program whose signature is OK (steps S127 and S128). Specifically, if the verification results of the maliciousness verification, the program execution function verification, and the external input attack defense verification are OK, the signature unit 2 determines that the verification is OK (step S127), and verifies the verification target. A signature is added to the program (step S128).

最後に、図示しない出力部が、検証結果(検証OK/NG)や署名付きプログラムや検証結果の詳細等を出力する(ステップS109)。 Finally, the output unit (not shown) outputs the verification result (verification OK/NG), the signed program, the details of the verification result, and the like (step S109).

なお、上記の例では、悪意の検証(ステップS102)の後に、プログラム実行機能の検証ステップS105)を行い、その後に、外部入力攻撃防御の検証を行う例を示したが、これらの検証は順不同である。また、プログラム検証システム10は、例えば、ユーザ指示や設定ファイル等に応じて、実施する検証方法を選択することも可能である。 In the above example, the maliciousness verification (step S102) is followed by the program execution function verification step S105), and then the external input attack protection verification is performed, but these verifications are performed in any order. Is. Further, the program verification system 10 can also select a verification method to be executed according to, for example, a user instruction or a setting file.

以上のように、本実施形態によれば、検証対象のプログラム自体に含まれる(顕在化している)悪意の有無だけでなく、顕在化しない悪意の1つとなりうるプログラム実行機能の有無および/または顕在化しない悪意の1つである外部入力による攻撃を防御する機能の有無を判定し、判定を行ったものすべてで安全性が確認された場合にのみ署名を行う。セキュア環境への配置の可否およびセキュア環境下での実行の可否を判定する際に、当該署名を利用することにより、顕在化している悪意を含むプログラムだけでなく、プログラム自体には悪意が見られないが、外部からのデータ入力等を利用して後に悪意あるプログラムを実行される可能性があるコードを含むプログラムがセキュア環境に置かれたり、セキュア環境で実行されることを事前に防ぐことができる。したがって、セキュア環境下で顕在化する悪意による攻撃を防止できる。 As described above, according to the present embodiment, not only the presence/absence of (major) malicious intent included in the program to be verified, but also the presence/absence of a program execution function that can be one of the unintentional malicious intent and/or The presence or absence of a function that protects against an attack by external input, which is one of the malicious intentions that does not manifest, is judged, and a signature is given only when the security is confirmed by all the judged ones. By using the signature when determining whether to deploy in the secure environment and whether to execute in the secure environment, not only the program including the actual malicious intent but also the malicious in itself is found in the program itself. Although it is not, it is possible to prevent in advance from being placed in a secure environment or being executed in a secure environment, a program including code that may execute a malicious program later by using data input from the outside. it can. Therefore, it is possible to prevent malicious attacks that become apparent in a secure environment.

また、図8は、本実施形態のプログラム検証システム10を、プログラム実行端末に適用した例である。図8に示すプログラム実行端末300は、セキュア環境310を備え、該セキュア環境310内に、プログラム検証部10Aとして、悪意検証部11、プログラム実行機能検証部12および外部入力攻撃防御機能検証部13を含むとともに、署名部2と、配置・実行部3とを含む。 Further, FIG. 8 is an example in which the program verification system 10 of the present embodiment is applied to a program execution terminal. The program execution terminal 300 shown in FIG. 8 includes a secure environment 310, and in the secure environment 310, a malicious intent verification unit 11, a program execution function verification unit 12, and an external input attack defense function verification unit 13 are provided as a program verification unit 10A. In addition to including, the signature unit 2 and the placement/execution unit 3 are included.

配置・実行部3は、セキュア環境310にプログラムを配置する際、またはセキュア環境310でプログラムを実行する際、署名部2による署名が付与されているか否かを判定し、署名があれば配置または実行する。 When arranging the program in the secure environment 310 or executing the program in the secure environment 310, the arrangement/execution unit 3 determines whether or not a signature by the signature unit 2 is given, and if there is a signature, the arrangement/execution unit Execute.

また、図9は、本実施形態のプログラム検証システム10の他の構成例である。図9に示すプログラム検証システム10は、第3の実施形態のプログラム検証システム10の各要素に加えて、ソース入力部41、判定部42、外部入力攻撃防御機能付与部43、ビルド部44および実行コード出力部45を備える。 Further, FIG. 9 is another example of the configuration of the program verification system 10 of the present embodiment. The program verification system 10 shown in FIG. 9 includes a source input unit 41, a determination unit 42, an external input attack defense function addition unit 43, a build unit 44, and an execution unit in addition to the elements of the program verification system 10 of the third embodiment. The code output unit 45 is provided.

ソース入力部41は、検証対象のプログラムとして、コンパイル前のソースコードを入力する。 The source input unit 41 inputs a source code before compilation as a program to be verified.

悪意検証部11およびプログラム実行機能検証部12は、第1の実施形態と同様である。また、外部入力攻撃防御機能検証部13は、第2の実施形態と同様である。なお、各検証において検証対象のプログラムとして実行コードが必要な場合、ソースコードをビルド部44に入力し、コンパイルを含む一連の処理(前処理、コンパイル、リンク等)をさせて実行コードを得ればよい。 The maliciousness verification unit 11 and the program execution function verification unit 12 are the same as those in the first embodiment. The external input attack protection function verification unit 13 is the same as that in the second embodiment. If the execution code is required as the program to be verified in each verification, the source code is input to the build unit 44 and a series of processes including pre-compilation (preprocessing, compilation, linking, etc.) is performed to obtain the execution code. Good.

判定部42は、悪意検証部11による検証結果、プログラム実行機能検証部12による検証結果および外部入力攻撃防御機能検証部13による検証結果を判定し、いずれの検証結果も検証OKであれば、署名OKとして、ソースコードをビルド部44に入力して、実行コードを生成させる。なお、すでに実行コードが生成されている場合には、該実行コードを署名部2に入力して、署名をさせる。なお、署名OKか否かの判断は、第1〜第3の実施形態の署名部2の判断処理と同様でよい。 The determination unit 42 determines the verification result by the maliciousness verification unit 11, the verification result by the program execution function verification unit 12 and the verification result by the external input attack defense function verification unit 13, and if all the verification results are verification OK, the signature is obtained. As an OK, the source code is input to the build unit 44 to generate an execution code. If the execution code has already been generated, the execution code is input to the signature unit 2 to be signed. The determination as to whether the signature is OK may be the same as the determination process of the signature unit 2 of the first to third embodiments.

また、判定部42は、上記判定の結果、外部入力攻撃防御機能検証部13による検証結果が検証NGであれば、ソースコードを外部入力攻撃防御機能付与部43に入力して、外部入力攻撃防御機能を付与させる。 Further, if the result of the above determination is that the verification result by the external input attack defense function verification unit 13 is verification NG, the determination unit 42 inputs the source code to the external input attack defense function addition unit 43 to protect the external input attack defense function. Add functionality.

また、判定部42は、他に検証結果が検証NGの検証方法があった場合には、検証NGである旨およびそれら検証結果の詳細を出力してもよい。 Further, when there is another verification method in which the verification result is verification NG, the determination unit 42 may output the fact that the verification result is verification NG and the details of these verification results.

外部入力攻撃防御機能付与部43は、入力されたソースコードに、外部入力攻撃防御機能を付与する。外部入力攻撃防御機能付与部43は、例えば、入力されたソースコードに、上記で示したようなスタック保護機能や、外部コード実行防止機能を追加実装して、出力する。具体的に、外部入力攻撃防御機能付与部43は、ソースコードにそのようなスタック保護機能を実装するためのコードを挿入してもよい。また、外部入力攻撃防御機能付与部43は、例えば、検証対象のプログラムが配置されるセキュア環境の保護機構において、外部コード実行防止機能が無効になっている場合には、それを有効にしてもよい。 The external input attack defense function adding unit 43 adds an external input attack defense function to the input source code. The external input attack defense function providing unit 43 additionally mounts the above-described stack protection function and external code execution prevention function on the input source code and outputs the source code. Specifically, the external input attack protection function addition unit 43 may insert a code for implementing such a stack protection function into the source code. In addition, the external input attack defense function providing unit 43, even if the external code execution prevention function is disabled in the protection mechanism of the secure environment in which the program to be verified is placed, enables it. Good.

ビルド部44は、入力されたソースコードに対して、コンパイルを含む一連のビルド処理を行う。ビルド部44は、より具体的には、入力されたソースコードを解析し、機械語に変換して、実行コードを生成する。 The build unit 44 performs a series of build processes including compilation on the input source code. More specifically, the build unit 44 analyzes the input source code, converts the source code into a machine language, and generates an execution code.

署名部2は、判定部42によって署名OKと判定されたソースコードから得られた実行コードに、署名を付与する。 The signature unit 2 attaches a signature to the execution code obtained from the source code determined to be OK by the determination unit 42.

実行コード出力部45は、署名部2が署名を付与した実行コードを出力する。 The execution code output unit 45 outputs the execution code signed by the signature unit 2.

図10は、図9に示す実施形態のプログラム検証システム10の動作の一例を示すフローチャートである。図10に示す例では、まず、ソース入力部41が、検証対象のプログラムのソースコードを入力する(ステップS201)。 FIG. 10 is a flowchart showing an example of the operation of the program verification system 10 of the embodiment shown in FIG. In the example shown in FIG. 10, first, the source input unit 41 inputs the source code of the program to be verified (step S201).

次いで、悪意検証部11が、入力された検証対象のプログラム(ソースコード)に対して、悪意の検証を行う(ステップS202)。悪意の検証方法は上記の実施形態と同様でよい。悪意の検証の結果、悪意ありと判定された場合(ステップS203のYes)、ステップS204に移行し。そうでなければ(ステップS203のNo)、ステップS205に移行する。 Next, the maliciousness verification unit 11 verifies the maliciousness of the input verification target program (source code) (step S202). The maliciousness verification method may be the same as that in the above embodiment. As a result of the malicious intent verification, when it is determined that there is malicious intent (Yes in step S203), the process proceeds to step S204. Otherwise (No in step S203), the process proceeds to step S205.

ステップS204では、ビルド失敗(エラーコード:検証NG)として、その詳細を出力して終了する。 In step S204, the build fails (error code: verification NG), the details are output, and the process ends.

ステップS205では、プログラム実行機能検証部12が、プログラム実行機能の検証を行う。プログラム実行機能の検証方法は上記の実施形態と同様でよい。プログラム実行機能の検証の結果、プログラム実行機能ありと判定された場合(ステップS206のYes)、ステップS204に移行し、そうでなければ(ステップS206のNo)、ステップS207に移行する。 In step S205, the program execution function verification unit 12 verifies the program execution function. The method of verifying the program execution function may be the same as in the above embodiment. As a result of the verification of the program execution function, if it is determined that the program execution function is present (Yes in step S206), the process proceeds to step S204, and if not (No in step S206), the process proceeds to step S207.

ステップS207では、外部入力攻撃防御機能検証部13が、外部入力攻撃防御機能の検証を行う。学部入力攻撃防御機能の検証方法は上記の実施形態と同様でよい。外部入力攻撃防御機能の検証の結果、外部入力攻撃防御機能ありと判定された場合(ステップS208のYes)、ステップS210に移行し、そうでなければ(ステップS208のNo)、ステップS209に移行する。 In step S207, the external input attack defense function verification unit 13 verifies the external input attack defense function. The method of verifying the undergraduate input attack defense function may be the same as in the above embodiment. As a result of the verification of the external input attack defense function, if it is determined that the external input attack defense function is present (Yes in step S208), the process proceeds to step S210, and if not (No in step S208), the process proceeds to step S209. ..

なお、本例では、ステップS203、ステップS206およびステップS208の判定を、判定部42が行う。 In this example, the determination unit 42 makes the determinations in step S203, step S206, and step S208.

ステップS209では、外部入力攻撃防御機能付与部43が、入力されたソースコードに、外部入力攻撃防御機能を付与する。その後、ステップS207に戻る。 In step S209, the external input attack defense function adding unit 43 adds the external input attack defense function to the input source code. Then, it returns to step S207.

ステップS210では、ビルド部44が、入力されたソースコードを解析し、実行コードを生成する。 In step S210, the build unit 44 analyzes the input source code and generates an execution code.

次いで、署名部2が、生成された実行コードに署名を付与する(ステップS211)。 Next, the signature unit 2 gives a signature to the generated execution code (step S211).

最後に、実行コード出力部45が、署名付きの実行コードを出力する(ステップS212)。 Finally, the execution code output unit 45 outputs the execution code with the signature (step S212).

図9に示す構成のように、プログラム検証システム10は、検証だけでなく、検証の結果、足りない機能を付与することも可能である。 As in the configuration shown in FIG. 9, the program verification system 10 can provide not only the verification but also a missing function as a result of the verification.

なお、図8および図9では、プログラム検証部10Aとして、プログラム検証部10Aとして、悪意検証部11、プログラム実行機能検証部12および外部入力攻撃防御機能検証部13を含む例を示したが、プログラム検証部10Aは、少なくともプログラム実行機能検証部12および外部入力攻撃防御機能検証部13を含めばよい。 8 and 9, the program verification unit 10A includes the malicious program verification unit 11, the program execution function verification unit 12, and the external input attack defense function verification unit 13 as the program verification unit 10A. The verification unit 10A may include at least the program execution function verification unit 12 and the external input attack defense function verification unit 13.

次に、本発明の各実施形態にかかるコンピュータの構成例を示す。図11は、本発明の各実施形態にかかるコンピュータの構成例を示す概略ブロック図である。コンピュータ1000は、CPU1001と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004と、ディスプレイ装置1005と、入力デバイス1006とを備える。 Next, a configuration example of a computer according to each embodiment of the present invention will be shown. FIG. 11 is a schematic block diagram showing a configuration example of a computer according to each embodiment of the present invention. The computer 1000 includes a CPU 1001, a main storage device 1002, an auxiliary storage device 1003, an interface 1004, a display device 1005, and an input device 1006.

上述の各実施形態のネットワーク制御システムの各ノードは、コンピュータ1000に実装されてもよい。その場合、各ノードの動作は、プログラムの形式で補助記憶装置1003に記憶されていてもよい。CPU1001は、プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、そのプログラムに従って各実施形態における所定の処理を実施する。なお、CPU1001は、プログラムに従って動作する情報処理装置の一例であり、CPU(Central Processing Unit)以外にも、例えば、MPU(Micro Processing Unit)やMCU(Memory Control Unit)やGPU(Graphics Processing Unit)などを備えていてもよい。 Each node of the network control system of each of the embodiments described above may be implemented in the computer 1000. In that case, the operation of each node may be stored in the auxiliary storage device 1003 in the form of a program. The CPU 1001 reads the program from the auxiliary storage device 1003, expands it in the main storage device 1002, and executes the predetermined processing in each embodiment according to the program. The CPU 1001 is an example of an information processing device that operates according to a program, and in addition to a CPU (Central Processing Unit), for example, an MPU (Micro Processing Unit), an MCU (Memory Control Unit), a GPU (Graphics Processing Unit), or the like. May be provided.

補助記憶装置1003は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータは1000がそのプログラムを主記憶装置1002に展開し、各実施形態における所定の処理を実行してもよい。 The auxiliary storage device 1003 is an example of a non-transitory tangible medium. Other examples of non-transitory tangible media include magnetic disks, magneto-optical disks, CD-ROMs, DVD-ROMs, semiconductor memories, etc. connected via the interface 1004. Further, when this program is distributed to the computer 1000 via a communication line, the computer to which the program is distributed may have the program expand the program in the main storage device 1002 and execute a predetermined process in each embodiment.

また、プログラムは、各実施形態における所定の処理の一部を実現するためのものであってもよい。さらに、プログラムは、補助記憶装置1003に既に記憶されている他のプログラムとの組み合わせで各実施形態における所定の処理を実現する差分プログラムであってもよい。 Further, the program may be a program for realizing a part of the predetermined processing in each embodiment. Further, the program may be a difference program that realizes a predetermined process in each embodiment in combination with another program already stored in the auxiliary storage device 1003.

インタフェース1004は、他の装置との間で情報の送受信を行う。また、ディスプレイ装置1005は、ユーザに情報を提示する。また、入力デバイス1006は、ユーザからの情報の入力を受け付ける。 The interface 1004 exchanges information with other devices. In addition, the display device 1005 presents information to the user. The input device 1006 also receives input of information from the user.

また、実施形態における処理内容によっては、コンピュータ1000の一部の要素は省略可能である。例えば、ノードがユーザに情報を提示しないのであれば、ディスプレイ装置1005は省略可能である。例えば、ノードがユーザから情報入力を受け付けないのであれば、入力デバイス1006は省略可能である。 Further, depending on the processing content in the embodiment, some elements of the computer 1000 can be omitted. For example, the display device 1005 can be omitted if the node does not present any information to the user. For example, if the node does not accept information input from the user, the input device 1006 can be omitted.

また、各装置の各構成要素の一部または全部は、汎用または専用の回路(Circuitry)、プロセッサ等やこれらの組み合わせによって実施される。これらは単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。また、各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。 Further, some or all of the constituent elements of each device are implemented by a general-purpose or dedicated circuit (Circuitry), a processor, or a combination thereof. These may be configured by a single chip, or may be configured by a plurality of chips connected via a bus. Further, some or all of the constituent elements of each device may be realized by a combination of the above-described circuits and the like and a program.

各装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。 When some or all of the components of each device are realized by a plurality of information processing devices, circuits, etc., the plurality of information processing devices, circuits, etc. may be centrally arranged or distributed. Good. For example, the information processing device, the circuit, and the like may be realized as a form in which a client and server system, a cloud computing system, and the like are connected to each other via a communication network.

次に、本発明の概要を説明する。図12は、本発明のプログラム検証システム50の概要を示すブロック図である。図12に示すプログラム検証システム50は、プログラム検証手段51と、署名手段52とを備える。 Next, the outline of the present invention will be described. FIG. 12 is a block diagram showing an outline of the program verification system 50 of the present invention. The program verification system 50 shown in FIG. 12 includes a program verification unit 51 and a signature unit 52.

プログラム検証手段51(例えば、プログラム実行機能検証部12、外部入力攻撃防御機能検証部13、プログラム検証部10A)は、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および/または、検証対象のプログラムもしくはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する。 The program verification unit 51 (for example, the program execution function verification unit 12, the external input attack defense function verification unit 13, and the program verification unit 10A) adds the verification target program input as the program operating under the secure environment to the program concerned. Command does not include a program execution function that is a function of executing a new program in the same environment, and/or the program to be verified or the protection mechanism of the secure environment that is the operation source of the program has a program It is verified whether the external input attack protection function, which is the function to protect the attack caused by the external data input being executed, is included.

署名手段52(例えば、署名部2)は、プログラム検証手段51による検証の結果に基づいて、プログラムに署名を付与する。 The signature unit 52 (for example, the signature unit 2) gives a signature to the program based on the verification result by the program verification unit 51.

このような構成により、セキュア環境下で顕在化する悪意による攻撃を防止することができる。 With such a configuration, it is possible to prevent malicious attacks that are manifested in a secure environment.

また、図13は、本発明のプログラム検証システム50の他の構成例を示すブロック図である。図13に示すように、プログラム検証手段51は、プログラム実行機能検証手段511と、外部入力攻撃防御機能検証手段512とを含んでいてもよい。 FIG. 13 is a block diagram showing another configuration example of the program verification system 50 of the present invention. As shown in FIG. 13, the program verification means 51 may include a program execution function verification means 511 and an external input attack defense function verification means 512.

プログラム実行機能検証手段511(例えば、プログラム実行機能検証部12)は、セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうかを検証する。 The program execution function verification unit 511 (for example, the program execution function verification unit 12) adds a new program under the same environment to the verification target program input as the program operating under the secure environment by the instruction in the program. Verify whether the program execution function that is the function to be executed is not included.

外部入力攻撃防御機能検証手段512(例えば、外部入力攻撃防御機能検証部13)は、検証対象のプログラムまたはその動作元であるセキュア環境の保護機構に、プログラム実行中の外部からの不正なデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する。 The external input attack defense function verification unit 512 (for example, the external input attack defense function verification unit 13) inputs an illegal data from the outside during execution of the program to the verification target program or the protection mechanism of the secure environment which is the operation source. It is verified whether the external input attack defense function, which is the function that defends against the attacks caused by, is included.

以上、本実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。 Although the present invention has been described with reference to the exemplary embodiments and examples, the present invention is not limited to the above-described exemplary embodiments and examples. Various modifications that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention.

本発明は、セキュア環境に限らず、堅強な実行環境を実現したい場合に、好適に適用可能である。 INDUSTRIAL APPLICABILITY The present invention is suitably applicable not only to a secure environment but also to a robust execution environment.

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 署名手段
10 program verification system 10A program verification unit 11 maliciousness verification unit 12 program execution function verification unit 13 external input attack defense function verification unit 131 stack protection function verification unit 132 external code execution prevention function verification unit 2 signature unit 300 program execution terminal 310 secure environment 3 Placement/Execution Section 41 Source Input Section 42 Judgment Section 43 External Input Attack Defense Function Adding Section 44 Build Section 45 Execution Code Output Section 1000 Computer 1001 CPU
1002 Main storage device 1003 Auxiliary storage device 1004 Interface 1005 Display device 1006 Input device 50 Program verification system 51 Program verification means 511 Program execution function verification means 512 External input attack protection function verification means 52 Signing means

Claims (10)

セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および/または、前記検証対象のプログラムもしくはその動作元である前記セキュア環境の保護機構に、プログラム実行中の外部からのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証するプログラム検証手段と、
前記プログラム検証手段による検証の結果に基づいて、前記プログラムに署名を付与する署名手段とを備えた
ことを特徴とするプログラム検証システム。
Whether the program to be verified that has been input as a program that operates in the secure environment does not include a program execution function that is a function to execute a new program in the same environment by an instruction in the program, and/ Alternatively, whether the program to be verified or the protection mechanism of the secure environment that is the operation source of the program includes an external input attack protection function that protects an attack caused by external data input during execution of the program. Program verification means to verify whether
A program verifying system comprising: a signature unit that adds a signature to the program based on a result of verification by the program verifying unit.
前記プログラム検証手段は、
セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうかを検証するプログラム実行機能検証手段と、
前記検証対象のプログラムまたはその動作元である前記セキュア環境の保護機構に、プログラム実行中の外部からの不正なデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する外部入力攻撃防御機能検証手段とを含み、
前記署名手段は、前記プログラム実行機能検証手段による検証結果と、前記外部入力攻撃防御機能検証手段による検証結果に基づき、いずれの検証結果も検証OKであった場合に、署名を付与する
請求項1に記載のプログラム検証システム。
The program verification means,
It is verified whether the program to be verified that is input as a program that operates in the secure environment does not include the program execution function that is a function to execute a new program in the same environment by the instruction in the program. Program execution function verification means,
Whether the program to be verified or the protection mechanism of the secure environment, which is the operation source of the program, includes an external input attack protection function that is a function of protecting an attack caused by unauthorized data input from the outside during execution of the program. Including external input attack defense function verification means for verifying whether
The signature means assigns a signature based on the verification result by the program execution function verification means and the verification result by the external input attack defense function verification means when all verification results are verification OK. The program verification system described in.
前記プログラム実行機能検証手段は、前記検証対象のプログラムに、機械に新たなプログラムを実行させるシステムコールが含まれていないことを確認する
請求項2に記載のプログラム検証システム。
The program verification system according to claim 2, wherein the program execution function verification means confirms that the program to be verified does not include a system call that causes a machine to execute a new program.
前記外部入力攻撃防御機能検証手段は、前記検証対象のプログラムにスタック保護機能が含まれていること、または、前記検証対象のプログラムもしくはその動作元である前記セキュア環境の保護機構に、プログラムの動作中に書き換えが許可されている領域である動的領域内でのコードの実行を防止する機能である外部コード実行防止機能が含まれていることを確認する
請求項2に記載のプログラム検証システム。
The external input attack defense function verification means is that the program to be verified includes a stack protection function, or the program to be verified or the protection mechanism of the secure environment that is the operating source of the program operates. The program verification system according to claim 2, wherein the program verification system includes a function for preventing execution of code in a dynamic area, which is an area in which rewriting is permitted, which is an external code execution prevention function.
前記外部入力攻撃防御機能検証手段は、前記スタック保護機能または前記外部コード実行防止機能が含まれている場合に、検証OKとする
請求項4に記載のプログラム検証システム。
The program verification system according to claim 4, wherein the external input attack defense function verification means performs verification OK when the stack protection function or the external code execution prevention function is included.
前記スタック保護機能は、スタックへの外部入力に対する事後的な保護を含む
請求項4または請求項5に記載のプログラム検証システム。
The program verification system according to claim 4 or 5, wherein the stack protection function includes a posteriori protection against an external input to the stack.
前記プログラム検証手段は、少なくとも実行前のコード、ユースケースおよび/または運用方法に対する所定の検証によって安全性が確認されたプログラムを対象に前記検証を行う
請求項1から請求項6のうちのいずれかに記載のプログラム検証システム。
7. The program verification means performs the verification at least for a program whose safety has been confirmed by a predetermined verification of pre-execution code, use case and/or operating method. The program verification system described in.
検証対象のプログラムのソースコードを入力するソース入力手段と、
前記ソースコードに対して、外部入力攻撃防御機能を付与する外部入力攻撃機能付与手段と、
前記ソースコードを、機械語である実行コードに変換するビルド手段とを備え、
前記プログラム検証手段は、前記ソースコードに対して検証を行い、
前記外部入力攻撃機能付与手段は、前記プログラム検証手段による検証の結果、前記ソースコードに外部入力攻撃機能が含まれていなかった場合に、外部入力攻撃機能を付与し、
前記署名手段は、前記プログラム検証手段による検証の結果に基づいて、前記ビルド手段によるビルド後の実行コードに署名を付与する
請求項1から請求項7のうちのいずれかに記載のプログラム検証システム。
Source input means for inputting the source code of the program to be verified,
External input attack function imparting means for imparting an external input attack defense function to the source code,
And a build means for converting the source code into an execution code that is a machine language,
The program verification means verifies the source code,
The external input attack function adding means adds the external input attack function when the source code does not include the external input attack function as a result of the verification by the program verifying means,
The program verification system according to any one of claims 1 to 7, wherein the signature means adds a signature to the execution code after the build by the build means based on a result of verification by the program verification means.
情報処理装置が、
セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および/または、前記検証対象のプログラムもしくはその動作元である前記セキュア環境の保護機構に、プログラム実行中の外部からのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証し、
前記検証の結果に基づいて、前記プログラムに署名を付与する
ことを特徴とするプログラム検証方法。
The information processing device
Whether the program to be verified that has been input as a program that operates in the secure environment does not include a program execution function that is a function to execute a new program in the same environment by an instruction in the program, and/ Alternatively, whether the program to be verified or the protection mechanism of the secure environment that is the operation source of the program includes an external input attack protection function that protects an attack caused by external data input during execution of the program. To verify
A program verification method, wherein a signature is added to the program based on a result of the verification.
コンピュータに、
セキュア環境下で動作するプログラムとして入力された検証対象のプログラムに、当該プログラム内の命令により、同じ環境下に新たなプログラムを実行させる機能であるプログラム実行機能が含まれていないかどうか、および/または、前記検証対象のプログラムもしくはその動作元である前記セキュア環境の保護機構に、プログラム実行中の外部からのデータ入力に起因する攻撃を防御する機能である外部入力攻撃防御機能が含まれているかどうかを検証する処理、および
前記検証の結果に基づいて、前記プログラムに署名を付与する処理
を実行させるためのプログラム検証プログラム。
On the computer,
Whether the program to be verified that has been input as a program that operates in the secure environment does not include a program execution function that is a function to execute a new program in the same environment by an instruction in the program, and/ Alternatively, whether the program to be verified or the protection mechanism of the secure environment that is the operation source of the program includes an external input attack protection function that protects an attack caused by external data input during execution of the program. A program verification program for executing a process of verifying whether or not to perform a process of assigning a signature to the program based on a result of the verification.
JP2019533744A 2017-07-31 2017-07-31 Program verification system, method and program Active JP7024792B2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/027729 WO2019026137A1 (en) 2017-07-31 2017-07-31 Program verification system, method, and program

Publications (2)

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

Family

ID=65233569

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019533744A Active JP7024792B2 (en) 2017-07-31 2017-07-31 Program verification system, method and program

Country Status (3)

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

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 (en) * 2019-10-25 2020-04-03 中国飞行试验研究院 Civil aircraft maintenance program verification method
CN112182517A (en) * 2020-10-28 2021-01-05 北京智游网安科技有限公司 CANARY security protection-based detection method, terminal and storage medium

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005032185A (en) * 2003-07-11 2005-02-03 Sony Corp Program, security protection device, and its method
JP2007122745A (en) * 2006-12-20 2007-05-17 Trend Micro Inc Assurance of security on transmission path to program provided to communication terminal via network
JP2008158686A (en) * 2006-12-21 2008-07-10 Toshiba Corp Program verification device and method, signature system based on program verification
WO2012160760A1 (en) * 2011-05-25 2012-11-29 パナソニック株式会社 Information processing device and information processing method
JP2016534460A (en) * 2013-08-28 2016-11-04 アマゾン テクノロジーズ インク Dynamic application security verification

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 Apparatus and method for analyzing and supplementing a program to provide security
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 (en) 2012-10-31 2014-05-15 Toshiba Corp Information processing apparatus
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 (en) * 2003-07-11 2005-02-03 Sony Corp Program, security protection device, and its method
JP2007122745A (en) * 2006-12-20 2007-05-17 Trend Micro Inc Assurance of security on transmission path to program provided to communication terminal via network
JP2008158686A (en) * 2006-12-21 2008-07-10 Toshiba Corp Program verification device and method, signature system based on program verification
WO2012160760A1 (en) * 2011-05-25 2012-11-29 パナソニック株式会社 Information processing device and information processing method
JP2016534460A (en) * 2013-08-28 2016-11-04 アマゾン テクノロジーズ インク Dynamic application security verification

Also Published As

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

Similar Documents

Publication Publication Date Title
US20230066210A1 (en) Method and system for preventing and detecting security threats
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
EP3779745B1 (en) Code pointer authentication for hardware flow control
CN106682497B (en) The system and method for secure execution code under supervisor mode
US8195953B1 (en) Computer program with built-in malware protection
US9934380B2 (en) Execution profiling detection of malicious objects
KR101503785B1 (en) Method And Apparatus For Protecting Dynamic Library
JP2008537224A (en) Safe starting method and system
JP2011096253A (en) Method and device for providing authenticated anti-virus agents with direct access to scan memory
US9870466B2 (en) Hardware-enforced code paths
JP2010205270A (en) Device for providing tamper evident property to executable code stored in removable medium
JP7024792B2 (en) Program verification system, method and program
WO2018005388A1 (en) Regulating control transfers for execute-only code execution
CN107980133B (en) Temporary process deprivileging
Turaev et al. Prevention of ransomware execution in enterprise environment on windows os: Assessment of application whitelisting solutions
US20120278883A1 (en) Method and System for Protecting a Computing System
CN112948863B (en) Sensitive data reading method and device, electronic equipment and storage medium
CN106778286A (en) A kind of system and method whether attacked for detection service device hardware
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
Laurén et al. Diversification of system calls in linux kernel
EP2919146A1 (en) An apparatus for enforcing control flows
KR101197182B1 (en) Method and apparatus for protecting a hacking in computer system
Wang et al. Coprocessor-based hierarchical trust management for software integrity and digital identity protection
KR20190079103A (en) Malicious code blocking system using client virtualization

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