JP7218793B2 - プログラムの機能を向上するための制御フローシステム、非一時的可読媒体、および方法 - Google Patents
プログラムの機能を向上するための制御フローシステム、非一時的可読媒体、および方法 Download PDFInfo
- Publication number
- JP7218793B2 JP7218793B2 JP2021506000A JP2021506000A JP7218793B2 JP 7218793 B2 JP7218793 B2 JP 7218793B2 JP 2021506000 A JP2021506000 A JP 2021506000A JP 2021506000 A JP2021506000 A JP 2021506000A JP 7218793 B2 JP7218793 B2 JP 7218793B2
- Authority
- JP
- Japan
- Prior art keywords
- control flow
- source code
- program
- graph
- flow graph
- 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
Links
- 238000000034 method Methods 0.000 title claims description 69
- 230000002708 enhancing effect Effects 0.000 title claims description 9
- 230000006870 function Effects 0.000 claims description 92
- 230000015654 memory Effects 0.000 claims description 42
- 230000000007 visual effect Effects 0.000 claims description 23
- 238000011161 development Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 22
- 230000007704 transition Effects 0.000 claims description 21
- 238000012546 transfer Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 2
- 230000000116 mitigating effect Effects 0.000 claims 1
- 238000013459 approach Methods 0.000 description 27
- 238000012986 modification Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 13
- 238000012545 processing Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000007792 addition Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013502 data validation Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Description
Claims (24)
- プログラムの機能を向上するための制御フローシステムであって、
ひとつ以上のプロセッサ(110)と、
ひとつ以上の前記プロセッサに通信可能に結合されたメモリ(120)と、を備え、
前記メモリは、分析モジュール(130)と、グラフモジュール(140)と、を格納しており、
前記分析モジュールは、ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに、前記プログラムのソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別させる命令を含み、
前記グラフモジュールは、ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに、前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新させる命令を含み、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記グラフモジュールは、前記ソースコードの調整を容易にすることによって前記プログラムの機能を向上するために、前記制御フローグラフを提供する命令をさらに含み、
前記グラフモジュールは、前記制御フローグラフを提供する命令として、前記制御フローグラフの視覚的表現を生成し、前記コードセグメントが前記制御フローグラフを介して前記プログラムのリアルタイム表現を提供するように生成されるときに、統合開発環境(IDE)内で前記視覚的表現を動的に表示する命令を含み、
前記グラフモジュールは、前記制御フローグラフを更新する命令として、前記コードセグメントに対応するように前記制御フローグラフの既存のノードおよびエッジを修正しながら、前記コードセグメントに対応する前記制御フロー特性を前記制御フローグラフに追加する命令を含む、制御フローシステム。 - プログラムの機能を向上するための制御フローシステムであって、
ひとつ以上のプロセッサ(110)と、
ひとつ以上の前記プロセッサに通信可能に結合されたメモリ(120)と、を備え、
前記メモリは、分析モジュール(130)と、グラフモジュール(140)と、を格納しており、
前記分析モジュールは、ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに、前記プログラムのソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別させる命令を含み、
前記グラフモジュールは、ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに、前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新させる命令を含み、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記グラフモジュールは、前記ソースコードの調整を容易にすることによって前記プログラムの機能を向上するために、前記制御フローグラフを提供する命令をさらに含み、
前記グラフモジュールは、前記制御フローグラフを提供する命令として、前記プログラムがセキュリティの脆弱性を回避することを保証することでプログラムの機能を向上するために、前記ソースコードが開発される際にリアルタイムで前記制御フローグラフを提供する命令を含む、制御フローシステム。 - 前記分析モジュールは、前記コードセグメントを検出する命令として、前記コードセグメントを構成するステートメントについて、コンピューティングデバイス内の統合開発環境(IDE)への電子入力ストリームを監視することを含み、前記コードセグメントは前記ソースコードの一部を形成する、請求項2に記載の制御フローシステム。
- プログラムの機能を向上するための制御フローシステムであって、
ひとつ以上のプロセッサ(110)と、
ひとつ以上の前記プロセッサに通信可能に結合されたメモリ(120)と、を備え、
前記メモリは、分析モジュール(130)と、グラフモジュール(140)と、を格納しており、
前記分析モジュールは、ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに、前記プログラムのソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別させる命令を含み、
前記グラフモジュールは、ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに、前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新させる命令を含み、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記グラフモジュールは、前記ソースコードの調整を容易にすることによって前記プログラムの機能を向上するために、前記制御フローグラフを提供する命令をさらに含み、
前記分析モジュールは、前記ソースコードの前記制御フロー特性を識別する命令として、前記制御フロー特性を、セキュリティ脆弱性を示す条件を定義するグラフポリシーと比較することによって、前記ソースコードのどのステートメントに脆弱性が含まれているかを判断することを含み、
前記グラフポリシーは、前記脆弱性と相関するデータフロー、データ引数、データ消失、および、プログラムフローに関連する前記プログラム内の条件を指定する、制御フローシステム。 - 前記グラフモジュールは、前記制御フローグラフを更新する命令として、前記脆弱性の軽減を容易にするために、前記脆弱性を含む前記ステートメントにタグを付ける命令を含む、請求項4に記載の制御フローシステム。
- プログラムの機能を向上するための制御フローシステムであって、
ひとつ以上のプロセッサ(110)と、
ひとつ以上の前記プロセッサに通信可能に結合されたメモリ(120)と、を備え、
前記メモリは、分析モジュール(130)と、グラフモジュール(140)と、を格納しており、
前記分析モジュールは、ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに、前記プログラムのソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別させる命令を含み、
前記グラフモジュールは、ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに、前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新させる命令を含み、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記グラフモジュールは、前記ソースコードの調整を容易にすることによって前記プログラムの機能を向上するために、前記制御フローグラフを提供する命令をさらに含み、
ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに、前記プログラムを計装する要求に応答して、前記プログラムの実行が前記制御フローグラフにしたがうことを保証することにより、前記プログラムのセキュリティを向上する前記プログラム内のランタイムチェックを実施するために、前記制御フローグラフにしたがって前記ソースコード内に計装を統合させる命令を含む計装モジュール(150)をさらに備える、制御フローシステム。 - 前記計装モジュールは、前記ソースコード内に計装を統合する命令として、i)前記制御フローグラフと前記ソースコードとの間の相関関係にしたがって計装される前記ソースコードのセグメントを識別する命令と、ii)前記ソースコードにしたがって定義された計装のテンプレートを修正することによって、前記識別されたセグメントにしたがって前記計装を自動的に追加する命令と、を含む請求項6に記載の制御フローシステム。
- 前記要求は、統合開発環境(IDE)を介して生成され、前記プログラムのコンパイル要求と並行して開始される電子要求である、請求項6又は7に記載の制御フローシステム。
- 前記計装モジュールは、前記ソースコード内の関数を識別する電子入力の検出に応答して、前記関数に、前記関数が自動的に計装されることを指定する計装識別子をタグ付けする命令を含む、請求項6乃至8のいずれか1項に記載の制御フローシステム。
- 前記分析モジュールは、前記制御フロー特性を識別させる命令として、前記ソースコード内のステートメントを走査し、少なくとも関数呼び出し、関数リターンアドレス、関数引数、関数戻り値、および前記ステートメント間の関係を前記制御フロー特性として識別するために、深さ優先探索を使用して前記ソースコードを分析する命令を含み、
前記制御フローグラフは、前記プログラムの制御フローの転送手順を表す、請求項1乃至10のいずれか1項に記載の制御フローシステム。 - プログラムの機能を向上するための命令を格納する非一時的コンピュータ可読媒体であって、
前記命令は、ひとつ以上のプロセッサ(110)によって実行されると、ひとつ以上の前記プロセッサに、
前記プログラムのソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別させ、
前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新させ、
前記ソースコードの調整を容易にすることによって前記プログラムの機能を向上するために、前記制御フローグラフを提供させ、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記制御フローグラフを提供する命令は、前記制御フローグラフの視覚的表現を生成し、前記コードセグメントが前記制御フローグラフを介して前記プログラムのリアルタイム表現を提供するように生成されるときに、統合開発環境(IDE)内で前記視覚的表現を動的に表示する命令を含み、
前記制御フローグラフを更新する命令は、前記コードセグメントに対応するように前記制御フローグラフの既存のノードおよびエッジを修正しながら、前記コードセグメントに対応する前記制御フロー特性を前記制御フローグラフに追加する命令を含む、非一時的コンピュータ可読媒体。 - プログラムの機能を向上するための命令を格納する非一時的コンピュータ可読媒体であって、
前記命令は、ひとつ以上のプロセッサ(110)によって実行されると、ひとつ以上の前記プロセッサに、
前記プログラムのソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別させ、
前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新させ、
前記ソースコードの調整を容易にすることによって前記プログラムの機能を向上するために、前記制御フローグラフを提供させ、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記命令は、前記プログラムを計装する要求に応答して、前記プログラムの実行が前記制御フローグラフにしたがうことを保証することにより、前記プログラムのセキュリティを向上する前記プログラム内のランタイムチェックを実施するために、前記制御フローグラフにしたがって前記ソースコード内に計装を統合する命令をさらに含む、非一時的コンピュータ可読媒体。 - 前記制御フロー特性を識別させる命令は、前記ソースコード内のステートメントを走査し、少なくとも関数呼び出し、関数リターンアドレス、関数引数、関数戻り値、および、前記ステートメント間の関係を前記制御フロー特性として識別するために、深さ優先探索を使用して前記ソースコードを分析する命令を含み、
前記制御フローグラフは、前記プログラムの制御フローの転送手順を表す、請求項11又は12に記載の非一時的コンピュータ可読媒体。 - プログラムの機能を向上する方法であって、
ひとつ以上のプロセッサ(110)が、前記プログラムのソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別すること、
ひとつ以上の前記プロセッサが、前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新すること、
ひとつ以上の前記プロセッサが、前記ソースコードの調整を容易にすることによって前記プログラムの機能を向上するために、前記制御フローグラフを提供すること、を含み、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記制御フローグラフを提供することは、前記制御フローグラフの視覚的表現を生成し、前記コードセグメントが前記制御フローグラフを介して前記プログラムのリアルタイム表現を提供するように生成されるときに、統合開発環境(IDE)内で前記視覚的表現を動的に表示することを含み、
前記制御フローグラフを更新することは、前記コードセグメントに対応するように前記制御フローグラフの既存のノードおよびエッジを修正しながら、前記コードセグメントに対応する前記制御フロー特性を前記制御フローグラフに追加することを含む、方法。 - プログラムの機能を向上する方法であって、
ひとつ以上のプロセッサ(110)が、前記プログラムのソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別すること、
ひとつ以上の前記プロセッサが、前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新すること、
ひとつ以上の前記プロセッサが、前記ソースコードの調整を容易にすることによって前記プログラムの機能を向上するために、前記制御フローグラフを提供すること、を含み、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記制御フローグラフを提供することは、前記プログラムがセキュリティの脆弱性を確実に回避することを保証することで前記プログラムの機能性を向上するために、前記ソースコードが開発される際にリアルタイムで前記制御フローグラフを提供することを含む、方法。 - プログラムの機能を向上する方法であって、
ひとつ以上のプロセッサ(110)が、前記プログラムのソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別すること、
ひとつ以上の前記プロセッサが、前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新すること、
ひとつ以上の前記プロセッサが、前記ソースコードの調整を容易にすることによって前記プログラムの機能を向上するために、前記制御フローグラフを提供すること、を含み、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記ソースコードの前記制御フロー特性を識別することは、前記制御フロー特性を、セキュリティ脆弱性を示す条件を定義するグラフポリシーと比較することによって、前記ソースコードのどのステートメントに脆弱性が含まれているかを判断することを含み、
前記グラフポリシーは、前記脆弱性と相関するデータフロー、データ引数、データ消失、および、プログラムフローに関連する前記プログラム内の条件を指定する、方法。 - プログラムの機能を向上する方法であって、
ひとつ以上のプロセッサ(110)が、前記プログラムのソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別すること、
ひとつ以上の前記プロセッサが、前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新すること、
ひとつ以上の前記プロセッサが、前記ソースコードの調整を容易にすることによって前記プログラムの機能を向上するために、前記制御フローグラフを提供すること、を含み、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記プログラムを計装する要求に応答して、前記プログラムの実行が前記制御フローグラフにしたがうことを保証することにより、前記プログラムのセキュリティを向上する前記プログラム内のランタイムチェックを実施するために、前記制御フローグラフにしたがって前記ソースコード内に計装を統合することをさらに含む、方法。 - 前記ソースコード内に計装を統合することは、i)前記制御フローグラフと前記ソースコードとの間の相関関係にしたがって計装される前記ソースコードのセグメントを識別することと、ii)前記ソースコードにしたがって定義された計装のテンプレートを修正することによって、前記識別されたセグメントにしたがって前記計装を自動的に追加すること、を含む、請求項17に記載の方法。
- 前記ソースコード内の関数を識別する電子入力の検出に応答して、前記関数に、前記関数が自動的に計装されることを指定する計装識別子をタグ付けすることをさらに含む、請求項17又は18に記載の方法。
- 前記制御フロー特性を識別することは、前記ソースコード内のステートメントを走査し、少なくとも関数呼び出し、関数リターンアドレス、関数引数、関数戻り値、および、前記ステートメント間の関係を前記制御フロー特性として識別するために、深さ優先探索を使用して前記ソースコードを分析することを含み、
前記制御フローグラフは、前記プログラムの制御フローの転送手順を表す、請求項14乃至19のいずれか1項に記載の方法。 - 1つ以上のプロセッサ(110)に、
ソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別する機能と、
前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新する機能と、
前記ソースコードの調整を容易にするために、前記制御フローグラフを提供する機能と、を実現させるプログラムであって、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記制御フローグラフを提供する機能は、前記制御フローグラフの視覚的表現を生成し、前記コードセグメントが前記制御フローグラフを介して前記プログラムのリアルタイム表現を提供するように生成されるときに、統合開発環境(IDE)内で前記視覚的表現を動的に表示する機能を含み、
前記制御フローグラフを更新する機能は、前記コードセグメントに対応するように前記制御フローグラフの既存のノードおよびエッジを修正しながら、前記コードセグメントに対応する前記制御フロー特性を前記制御フローグラフに追加する機能を含む、プログラム。 - ひとつ以上のプロセッサ(110)に、
ソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別する機能と、
前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新する機能と、
前記ソースコードの調整を容易にするために、前記制御フローグラフを提供する機能と、を実現させるプログラムであって、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記制御フローグラフを提供する機能は、前記プログラムがセキュリティの脆弱性を回避することを保証することで前記プログラムの機能を向上するために、前記ソースコードが開発される際にリアルタイムで前記制御フローグラフを提供する機能を含む、プログラム。 - 1つ以上のプロセッサ(110)に、
ソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別する機能と、
前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新する機能と、
前記ソースコードの調整を容易にするために、前記制御フローグラフを提供する機能と、を実現させるプログラムであって、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記ソースコードの前記制御フロー特性を識別する機能は、前記制御フロー特性を、セキュリティ脆弱性を示す条件を定義するグラフポリシーと比較することによって、前記ソースコードのどのステートメントに脆弱性が含まれているかを判断する機能を含み、
前記グラフポリシーは、前記脆弱性と相関するデータフロー、データ引数、データ消失、および、プログラムフローに関連する前記プログラム内の条件を指定する、プログラム。 - 1つ以上のプロセッサ(110)に、
ソースコードに追加されたコードセグメントの検出に応答して、前記コードセグメントを含む前記ソースコードの制御フロー特性を識別する機能と、
前記制御フロー特性にしたがって前記ソースコードの制御フローグラフを更新する機能と、
前記ソースコードの調整を容易にするために、前記制御フローグラフを提供する機能と、を実現させるプログラムであって、
前記制御フローグラフは、前記ソースコードのブロックを表すノードと、前記ブロック間の遷移を表す前記ノード間の有向エッジとで構成される前記プログラムの実行パスを表し、
前記プログラムを計装する要求に応答して、前記プログラムの実行が前記制御フローグラフにしたがうことを保証することにより、前記プログラムのセキュリティを向上する前記プログラム内のランタイムチェックを実施するために、前記制御フローグラフにしたがって前記ソースコード内に計装を統合させる機能さらに備える、プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/163,916 US10628286B1 (en) | 2018-10-18 | 2018-10-18 | Systems and methods for dynamically identifying program control flow and instrumenting source code |
US16/163,916 | 2018-10-18 | ||
PCT/JP2019/041069 WO2020080513A1 (en) | 2018-10-18 | 2019-10-18 | Systems and methods for dynamically identifying program control flow and instrumenting source code |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021533485A JP2021533485A (ja) | 2021-12-02 |
JP7218793B2 true JP7218793B2 (ja) | 2023-02-07 |
Family
ID=68426773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021506000A Active JP7218793B2 (ja) | 2018-10-18 | 2019-10-18 | プログラムの機能を向上するための制御フローシステム、非一時的可読媒体、および方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10628286B1 (ja) |
JP (1) | JP7218793B2 (ja) |
WO (1) | WO2020080513A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10896253B2 (en) * | 2017-02-06 | 2021-01-19 | Huawei Technologies Co., Ltd. | Processor trace-based enforcement of control flow integrity of a computer system |
WO2020061586A1 (en) * | 2018-09-22 | 2020-03-26 | Manhattan Engineering Incorporated | Code completion |
WO2021100122A1 (ja) * | 2019-11-19 | 2021-05-27 | 三菱電機株式会社 | 設計支援システムおよび設計支援プログラム |
US11650904B2 (en) * | 2019-12-23 | 2023-05-16 | Intrinsic Innovation Llc | Analysis of real-time software |
US11440190B1 (en) * | 2020-02-26 | 2022-09-13 | Trend Micro Incorporated | Detecting unsecure data flow in automation task programs |
EP3872663B1 (en) * | 2020-02-28 | 2024-05-08 | BlackBerry Limited | Method and device for symbolic analysis of a software program |
US11175897B1 (en) * | 2020-05-13 | 2021-11-16 | Microsoft Technology Licensing, Llc. | Language interoperability to automate code analysis |
US20230418564A1 (en) | 2020-06-16 | 2023-12-28 | Engineer.ai Corp | Systems and methods for creating software |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130055209A1 (en) | 2011-08-26 | 2013-02-28 | Fujitsu Limited | Constructing a Control Flow Graph for Javascript Software |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11110198A (ja) * | 1997-10-02 | 1999-04-23 | Fujitsu Ltd | モジュール構成図自動生成装置および記録媒体 |
US6487713B1 (en) | 1999-09-24 | 2002-11-26 | Phoenix Technologies Ltd. | Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation |
US6668372B1 (en) | 1999-10-13 | 2003-12-23 | Intel Corporation | Software profiling method and apparatus |
US8302072B2 (en) | 2000-06-05 | 2012-10-30 | National Instruments Corporation | System and method for programmatically generating a graphical program based on a sequence of motion control, machine vision, and data acquisition (DAQ) operations |
US7917863B2 (en) | 2000-06-13 | 2011-03-29 | National Instruments Corporation | System and method for graphically creating a sequence of motion control operations |
JP2002073333A (ja) | 2000-08-25 | 2002-03-12 | Hitachi Ltd | 手続き呼び出し先のデータ依存の解析表示方法 |
US20030182414A1 (en) | 2003-05-13 | 2003-09-25 | O'neill Patrick J. | System and method for updating and distributing information |
US7110936B2 (en) | 2001-02-23 | 2006-09-19 | Complementsoft Llc | System and method for generating and maintaining software code |
CN1809812A (zh) | 2003-04-18 | 2006-07-26 | 盎司实验室股份有限公司 | 用于源代码检测源代码中弱点的方法和装置 |
JP2004341671A (ja) | 2003-05-14 | 2004-12-02 | Internatl Business Mach Corp <Ibm> | 情報処理システム、制御方法、制御プログラム、及び記録媒体 |
US20050015752A1 (en) | 2003-07-15 | 2005-01-20 | International Business Machines Corporation | Static analysis based error reduction for software applications |
US7207038B2 (en) * | 2003-08-29 | 2007-04-17 | Nokia Corporation | Constructing control flows graphs of binary executable programs at post-link time |
WO2005121953A1 (en) | 2004-06-04 | 2005-12-22 | Fortify Software, Inc. | Apparatus and method for developing, testing and monitoring secure software |
US7603715B2 (en) | 2004-07-21 | 2009-10-13 | Microsoft Corporation | Containment of worms |
US7337291B2 (en) | 2005-01-14 | 2008-02-26 | Microsoft Corporation | Software memory access control |
US7577992B2 (en) | 2005-01-14 | 2009-08-18 | Microsoft Corporation | Software security based on control flow integrity |
EP1870829B1 (en) | 2006-06-23 | 2014-12-03 | Microsoft Corporation | Securing software by enforcing data flow integrity |
US8136091B2 (en) | 2007-01-31 | 2012-03-13 | Microsoft Corporation | Architectural support for software-based protection |
WO2008120367A1 (ja) | 2007-03-29 | 2008-10-09 | Fujitsu Limited | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
US8826255B1 (en) | 2007-06-18 | 2014-09-02 | The Mathworks, Inc. | Restructuring control flow graphs generated from a model |
US8387000B2 (en) | 2007-07-12 | 2013-02-26 | The Mathworks, Inc. | Continuous time mode-driven simulations in a graphical modeling environment |
US8356289B2 (en) * | 2008-03-26 | 2013-01-15 | Avaya Inc. | Efficient encoding of instrumented data in real-time concurrent systems |
US8434064B2 (en) | 2008-03-28 | 2013-04-30 | Microsoft Corporation | Detecting memory errors using write integrity testing |
EP2141587A1 (en) | 2008-06-27 | 2010-01-06 | Siemens Aktiengesellschaft | Method and system for generating of a control flow graph for representing a program code |
US8645923B1 (en) | 2008-10-31 | 2014-02-04 | Symantec Corporation | Enforcing expected control flow in program execution |
CN102227710A (zh) | 2008-11-28 | 2011-10-26 | 西门子公司 | 自动控制系统和用于并行执行控制程序的方法 |
US20100192026A1 (en) | 2009-01-27 | 2010-07-29 | Microsoft Corporation | Implementations of program runtime checks |
US8453252B2 (en) | 2009-05-18 | 2013-05-28 | National Instruments Corporation | Licensing and management of shared graphical data flow web applications |
US8510709B2 (en) | 2009-06-01 | 2013-08-13 | National Instruments Corporation | Graphical indicator which specifies parallelization of iterative program code in a graphical data flow program |
US9081928B2 (en) | 2009-06-02 | 2015-07-14 | Vector Fabrics, B.V. | Embedded system development |
US10698923B2 (en) | 2009-06-11 | 2020-06-30 | Talari Networks, Inc. | Methods and apparatus for providing adaptive private network database schema migration and management processes |
US8458798B2 (en) | 2010-03-19 | 2013-06-04 | Aspect Security Inc. | Detection of vulnerabilities in computer systems |
US9141350B2 (en) | 2010-04-23 | 2015-09-22 | Vector Fabrics B.V. | Embedded system performance |
US8479188B2 (en) | 2010-07-08 | 2013-07-02 | Microsoft Corporation | Binary code change vulnerability prioritization |
US8683449B2 (en) | 2010-10-28 | 2014-03-25 | Juniper Networks, Inc. | Automated parallel software code impact analysis |
US8875109B2 (en) | 2011-08-26 | 2014-10-28 | Fujitsu Limited | Tracking variables in javascript software using a control flow graph |
US8793665B2 (en) | 2011-08-26 | 2014-07-29 | Fujitsu Limited | Performing taint analysis for javascript software using a control flow graph |
US20130055221A1 (en) | 2011-08-26 | 2013-02-28 | Fujitsu Limited | Detecting Errors in Javascript Software Using a Control Flow Graph |
US8914262B2 (en) | 2011-11-08 | 2014-12-16 | The Mathworks, Inc. | Visualization of data dependency in graphical models |
US11003464B2 (en) | 2012-04-19 | 2021-05-11 | Microsoft Technology Licensing, Llc | Control flow integrity enforcement at scale |
US20120324454A1 (en) | 2012-05-04 | 2012-12-20 | Concurix Corporation | Control Flow Graph Driven Operating System |
US9846717B2 (en) * | 2012-10-23 | 2017-12-19 | Galois, Inc. | Software security via control flow integrity checking |
US9471461B2 (en) | 2013-03-27 | 2016-10-18 | Nec Corporation | Guarding a monitoring scope and interpreting partial control flow context |
US9501382B2 (en) | 2013-06-25 | 2016-11-22 | Purdue Research Foundation | Systems and methods of detecting power bugs |
CN104252408B (zh) * | 2013-06-26 | 2017-04-12 | 国际商业机器公司 | 提供测试用例的方法和装置 |
WO2015047295A1 (en) * | 2013-09-27 | 2015-04-02 | Hewlett-Packard Development Company, L.P. | Application control flow models |
US9189375B1 (en) | 2013-12-31 | 2015-11-17 | Google Inc. | Dynamic sandboxing |
US9390260B2 (en) | 2014-06-09 | 2016-07-12 | Lehigh University | Methods for enforcing control flow of a computer program |
EP2958044B1 (en) | 2014-06-20 | 2019-09-18 | Secure-IC SAS | A computer implemented method and a system for controlling dynamically the execution of a code |
US9678855B2 (en) * | 2014-12-30 | 2017-06-13 | International Business Machines Corporation | Managing assertions while compiling and debugging source code |
US9892021B2 (en) * | 2015-03-18 | 2018-02-13 | Sap Se | Injection of code modifications in a two session debug scripting environment |
US9965280B2 (en) | 2015-09-25 | 2018-05-08 | Intel Corporation | Instruction and logic for processor trace information for control flow integrity |
US9823912B2 (en) * | 2015-10-15 | 2017-11-21 | Semmle Limited | Data flow analysis with collapsed contexts |
US10437998B2 (en) | 2015-10-26 | 2019-10-08 | Mcafee, Llc | Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection |
US20170212829A1 (en) * | 2016-01-21 | 2017-07-27 | American Software Safety Reliability Company | Deep Learning Source Code Analyzer and Repairer |
US10509634B2 (en) | 2016-03-30 | 2019-12-17 | International Business Machines Corporation | Data flow analysis for dynamic application, skipping views |
-
2018
- 2018-10-18 US US16/163,916 patent/US10628286B1/en active Active
-
2019
- 2019-10-18 JP JP2021506000A patent/JP7218793B2/ja active Active
- 2019-10-18 WO PCT/JP2019/041069 patent/WO2020080513A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130055209A1 (en) | 2011-08-26 | 2013-02-28 | Fujitsu Limited | Constructing a Control Flow Graph for Javascript Software |
Also Published As
Publication number | Publication date |
---|---|
WO2020080513A1 (en) | 2020-04-23 |
US10628286B1 (en) | 2020-04-21 |
JP2021533485A (ja) | 2021-12-02 |
US20200125478A1 (en) | 2020-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7218793B2 (ja) | プログラムの機能を向上するための制御フローシステム、非一時的可読媒体、および方法 | |
JP7201078B2 (ja) | データ引数を動的に識別し、ソースコードを計装するためのシステムと方法 | |
JP7164017B2 (ja) | フォールトツリー分析を使用して機能安全のため制御フローグラフを最適化するシステム及び方法 | |
US10853060B2 (en) | Software refactoring systems and methods | |
US8516443B2 (en) | Context-sensitive analysis framework using value flows | |
US11567759B1 (en) | Generating source code from binary files | |
Gosain et al. | Static analysis: A survey of techniques and tools | |
US11579856B2 (en) | Multi-chip compatible compiling method and device | |
US8726255B2 (en) | Recompiling with generic to specific replacement | |
US8893102B2 (en) | Method and system for performing backward-driven path-sensitive dataflow analysis | |
US20160357519A1 (en) | Natural Language Engine for Coding and Debugging | |
US8122440B1 (en) | Method and apparatus for enumerating external program code dependencies | |
US10545850B1 (en) | System and methods for parallel execution and comparison of related processes for fault protection | |
KR102118236B1 (ko) | 컨트랙트에 대한 운영 체제 지원 기법 | |
WO2018161509A1 (zh) | 条件编译预处理方法、终端及存储介质 | |
US10915302B2 (en) | Identification and visualization of associations among code generated from a model and sources that affect code generation | |
US20210405980A1 (en) | Long method autofix engine | |
WO2024006036A1 (en) | Syntax subtree code strengthening | |
US10318403B2 (en) | Code update based on detection of change in runtime code during debugging | |
Aho et al. | Automated extraction of GUI models for testing | |
US11442845B2 (en) | Systems and methods for automatic test generation | |
EP3872663B1 (en) | Method and device for symbolic analysis of a software program | |
US12111749B2 (en) | Debugger script embedded in debuggable program source code | |
Panda et al. | Hierarchical regression test case selection using slicing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210203 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220413 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220712 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220905 |
|
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: 20221227 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230109 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7218793 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |