JP6867066B1 - 動的ステイン分析に基づくメモリ分析方法及び装置 - Google Patents

動的ステイン分析に基づくメモリ分析方法及び装置 Download PDF

Info

Publication number
JP6867066B1
JP6867066B1 JP2020153673A JP2020153673A JP6867066B1 JP 6867066 B1 JP6867066 B1 JP 6867066B1 JP 2020153673 A JP2020153673 A JP 2020153673A JP 2020153673 A JP2020153673 A JP 2020153673A JP 6867066 B1 JP6867066 B1 JP 6867066B1
Authority
JP
Japan
Prior art keywords
memory
analysis
target
check
contaminated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020153673A
Other languages
English (en)
Other versions
JP2021082256A (ja
Inventor
志宏 田
志宏 田
輝 魯
輝 魯
起 孫
起 孫
冬秋 黄
冬秋 黄
佳庚 楊
佳庚 楊
成杰 金
成杰 金
陸瀟涵 何
陸瀟涵 何
▲シン▼国 張
▲シン▼国 張
彦斌 孫
彦斌 孫
申 蘇
申 蘇
Original Assignee
▲広▼州大学
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 ▲広▼州大学 filed Critical ▲広▼州大学
Application granted granted Critical
Publication of JP6867066B1 publication Critical patent/JP6867066B1/ja
Publication of JP2021082256A publication Critical patent/JP2021082256A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】動的ステイン分析に基づくメモリ分析方法、装置、端末機器及び読み取り可能な記憶媒体を提供する。【解決手段】メモリ分析方法は、予め設定された入力関数を汚染源として指定して、入力関数によって読み込まれたデータを汚染済みとしてマーキングし、汚染されたアドレスを1つのsetオブジェクトで記録する。次に、全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、ソースオペランドの汚染状況に応じてターゲットオペランドをマーキングする。また、ret命令をインストルメントしてスタックトップメモリをチェックし、現在のスタックトップメモリの汚染状況に応じてスタックオーバーフロー検出を行う。【選択図】図1

Description

本発明は、コンピュータ技術分野に関し、特に動的ステイン分析に基づくメモリ分析方法、装置、端末機器及び読み取り可能な記憶媒体に関する。
プログラムの数が急速に増加しているため、手動プログラムテストはプログラムテストのニーズを満たすことが困難である。この問題に対処するために、いくつかの自動プログラムテストスキームが相次いで提案されている。プログラムが実際に実行されるか否かに応じて、自動プログラムテストスキームは静的分析と動的分析に分けられる。プログラムコードが実行されない場合、静的分析とは、字句分析、構文分析、制御フロー、データフロー分析などの技術により、プログラムコードをスキャンし、コードが仕様、安全性、信頼性、保守性などの指標を満たしているか否かを検証することを意味している。プログラムの動的分析とは、プログラムの実行に伴い、実行過程における、レジスタ情報、メモリ情報などを含むプログラムの情報を取得し、存在する可能性があるプログラムバグを探索することを意味している。一方で、ファジングテスト技術は近年急速な発展を遂げており、プログラムをクラッシュさせることができる入力を効果的に生成することができる。これらのクラッシュがプログラムの正常な実行に大きな影響を与えるか否かを評価するために、多くの人力が必要になる。どのようにファジングテストで得られたクラッシュ入力に基づいてプログラムの動的分析を行い、当該クラッシュがリスクの高いバグであるか否かを評価するかは、非常に意味がある挑戦である。
プログラムが実行される時のメモリ情報を取得するために、最も一般的な操作は、コードをインストルメントし、コードインストルメントの実行により、その時のプログラムサイト情報を取得することである。アドレスサニタイザー(addresssanitizer)などのいくつかの従来技術では、プログラムのコンパイル中にインストルメントすることでメモリに関連する情報を取得する。別の方式は、類似するpin、qemuを使用してプログラム実行プロセスをシミュレートし、シミュレート過程にインストルメンテーション分析を行うことである。
インストルメンテーションに基づき、プログラムに対してステイン分析を行うことができ、従来のステイン分析には、汚染源への定義、汚染タンクへの定義と汚染伝播の追跡の3つのステップが含まれる。ここで、汚染源は追跡しようとするデータのプログラム位置である。例えば、システムコール、関数エントリ、又はあるメモリ操作命令はすべて汚染源である可能性がある。汚染タンクがプログラムにおけるいくつかの位置を指し、これらの位置のいくつかのデータが汚染されているか否かを確認したい。例えば、プログラムの制御フローが入力の影響を受けるか否かをチェックするために、間接コール、間接ジャンプと戻り(return)命令の次の実行命令の位置が入力によって汚染されているか否かをチェックする可能性がある。汚染伝播はプログラム内の汚染源の伝播に対して指定されたルールである。たとえば、movのソースオペランドが汚染されている場合、ターゲットオペランドも汚染済みとしてマーキングされる。これにより、汚染されたデータは、汚染ソースから汚染タンクまで伝播される。
従来技術のメモリ分析スキームは、プログラムソースコードに依存するため、ソースコードを取得しにくいプログラムを分析することができない。
中国特許出願公開第107180188号明細書
本発明は、動的ステイン分析に基づいて暗号化されたアプリケーションの平文を抽出するためのシステムを開示する。前記システムは、ステインデータソース位置決めモジュール、動的ステイン分析モジュール、命令分析モジュールとメモリ動作分析モジュールを備え、ここで、ステインデータソース位置決めモジュールがシステムコールで暗号化されたメッセージのメモリアドレスを取得し、ステインデータソースとしてマーキングするために使用され、動的ステイン分析モジュールがステインマークを付けたデータソースを追跡し、その中からそれを操作するための命令実行軌跡を逆方向に取得するために使用され、命令分析モジュールが命令軌跡を解析し、ステインデータのメッセージ復号段階とメッセージ処理段階を区別するために使用され、メモリ動作分析モジュールが、ステインデータがメッセージ複号段階で書き込まれ且つメッセージ処理段階で読み取られるメモリアドレスを取得し、当該メモリアドレスから復号された平文情報を抽出するために使用される。本発明は、復号されたアプリケーションから平文情報を抽出することにより、暗号化されたアプリケーションのセキュリティ監視を改善する。
本発明の実施例が解決しようとする技術的問題は、ソースコードなしでプログラムを分析し、メモリオーバーフロー問題を検出することができ、それによってエクスプロイトを生成するために必要な主要な情報を抽出することができる、動的ステイン分析に基づくメモリ分析方法、装置、端末機器及び読み取り可能な記憶媒体を提供することにある。
上記技術的問題を解決するために、本発明の実施例による動的ステイン分析に基づくメモリ分析方法は、
予め設定された入力関数を汚染源として指定して、前記入力関数によって読み取られたデータを汚染済みとしてマーキングし、汚染されたアドレスを1つのsetオブジェクトで記録することと、
全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、ソースオペランドの汚染状況に応じてターゲットオペランドをマーキングすることと、
ret命令をインストルメントしてスタックトップメモリをチェックし、現在のスタックトップメモリの汚染状況に応じてスタックオーバーフロー検出を行うこととを含む。
さらに、全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、ソースオペランドの汚染状況に応じてターゲットオペランドをマーキングすることは、具体的には、
全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、前記ソースオペランドが汚染されているか否かを判断し、
そうである場合、前記ターゲットオペランドを汚染済みとしてマーキングし、
そうでない場合、前記ターゲットオペランドの汚染を浄化することである。
さらに、ret命令をインストルメントしてスタックトップメモリをチェックし、現在のスタックトップメモリの汚染状況に応じてスタックオーバーフロー検出を行うことは、具体的には、
ret命令をインストルメントしてスタックトップメモリをチェックし、前記スタックトップメモリが汚染されているか否かを判断し、
そうである場合、メモリにスタックオーバーフロー問題が生じると判定することである。
さらに、動的ステイン分析に基づくメモリ分析方法は、
前記予め設定された入力関数をインストルメントし、前記入力関数のメモリ影響範囲を印刷することと、
スタックオーバーフロー問題が生じる場合、汚染済みデータを現在格納しているsetオブジェクトを印刷することと、
前記メモリ影響範囲及び汚染済みデータを格納している前記setオブジェクトに同時に位置するターゲットアドレスが存在するか否かを判断することと、
そうである場合、前記ターゲットアドレスを制御されたアドレスとして判定することとをさらに含む。
同じ技術的問題を解決するために、本発明の実施例による動的ステイン分析に基づくメモリ分析装置は、
予め設定された入力関数を汚染源として指定して、前記入力関数によって読み取られたデータを汚染済みとしてマーキングし、汚染されたアドレスを1つのsetオブジェクトで記録するための汚染源マーキングモジュールと、
全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、ソースオペランドの汚染状況に応じてターゲットオペランドをマーキングするための汚染処理モジュールと、
ret命令をインストルメントしてスタックトップメモリをチェックし、現在のスタックトップメモリの汚染状況に応じてスタックオーバーフロー検出を行うためのメモリ検出モジュールとを備える。
さらに、前記汚染処理モジュールは具体的には全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、前記ソースオペランドが汚染されているか否かを判断し、そうである場合、前記ターゲットオペランドを汚染済みとしてマーキングし、そうでない場合、前記ターゲットオペランドを浄化するために使用される。
さらに、前記メモリ検出モジュールは具体的にはret命令をインストルメントしてスタックトップメモリをチェックし、前記スタックトップメモリが汚染されているか否かを判断し、そうである場合、メモリにスタックオーバーフロー問題が生じると判定するために使用される。
さらに、動的ステイン分析に基づくメモリ分析装置は、
前記予め設定された入力関数をインストルメントし、前記入力関数のメモリ影響範囲を印刷するための範囲印刷モジュールと、
スタックオーバーフロー問題が生じる場合、汚染済みデータを現在格納しているsetオブジェクトを印刷するためのアドレス印刷モジュールと、
前記メモリ影響範囲及び汚染済みデータを格納している前記setオブジェクトに同時に位置するターゲットアドレスが存在するか否かを判断するためのターゲットクエリモジュールと、
前記ターゲットアドレスを制御されたアドレスとして判定するためのターゲット判定モジュールとをさらに備える。
同じ技術的問題を解決するために、本発明はさらに、プロセッサ、メモリ、及び前記メモリに格納され且つ前記プロセッサによって実行されるように構成されたコンピュータプログラムを備え、前記メモリが前記プロセッサに結合され、且つ前記プロセッサが前記コンピュータプログラムを実行すると、いずれか一項に記載の動的ステイン分析に基づくメモリ分析方法が実現される、動的ステイン分析に基づくメモリ分析端末機器を提供する。
同じ技術的問題を解決するために、本発明はさらに前記コンピュータ可読記憶媒体を提供する。前記前記コンピュータ可読記憶媒体は、コンピュータプログラムを記憶し、ここで、前記コンピュータプログラムが実行される時に、いずれか一項に記載の動的ステイン分析に基づくメモリ分析方法を実行するように前記コンピュータ可読記憶媒体が配置されたデバイスを制御する。
従来技術と比較して、本発明は次の有益な効果を有する。
本発明は、動的ステイン分析に基づくメモリ分析方法、装置、端末機器及び読み取り可能な記憶媒体を提供する。前記方法は、予め設定された入力関数を汚染源として指定して、前記入力関数によって読み取られたデータを汚染済みとしてマーキングし、汚染されたアドレスを1つのsetオブジェクトで記録することと、全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、ソースオペランドの汚染状況に応じてターゲットオペランドをマーキングすることと、ret命令をインストルメントしてスタックトップメモリをチェックし、現在のスタックトップメモリの汚染状況に応じてスタックオーバーフロー検出を行うこととを含む。本発明は、ソースコードなしでプログラムを分析し、メモリオーバーフロー問題を検出し、それによってエクスプロイトを生成するために必要な主要な情報を抽出することができる。
本発明の一実施例による動的ステイン分析に基づくメモリ分析方法のフローチャートである。 本発明の一つの実施例による動的バイナリインストルメンテーションエンジンの構造図である。 本発明の一実施例による動的ステイン分析を応用するフローチャートである。 本発明の一実施例によるメモリ分析の具体的な例の概略図である。 本発明の一実施例による動的ステイン分析に基づくメモリ分析装置の構造図である。
以下に本発明の実施例の図面と組み合わせて本発明の実施例における技術的解決手段を明確且つ完全に説明し、明らかに、説明される実施例は本発明の実施例の一部に過ぎず、全ての実施例ではない。本発明の実施例に基づき、当業者が創造的な労力を要さずに想到し得る他の実施例は、全て本発明の保護範囲に属する。
図1に示すように、本発明の実施例による動的ステイン分析に基づくメモリ分析方法は、S1、S2、S3を含む。
S1、予め設定された入力関数を汚染源として指定して、前記入力関数によって読み取られたデータを汚染済みとしてマーキングし、汚染されたアドレスを1つのsetオブジェクトで記録する。
S2、全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、ソースオペランドの汚染状況に応じてターゲットオペランドをマーキングする。
本発明の実施例では、さらに、ステップS2は具体的には、
全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、前記ソースオペランドが汚染されているか否かを判断し、
そうである場合、前記ターゲットオペランドを汚染済みとしてマーキングし、
そうでない場合、ターゲットオペランドの汚染を浄化することである。
S3、ret命令をインストルメントしてスタックトップメモリをチェックし、現在のスタックトップメモリの汚染状況に応じてスタックオーバーフロー検出を行う。
本発明の実施例では、さらに、ステップS3は具体的には、
ret命令をインストルメントしてスタックトップメモリをチェックし、前記スタックトップメモリが汚染されているか否かを判断し、
そうである場合、メモリにスタックオーバーフロー問題が生じると判定することである。
さらに、動的ステイン分析に基づくメモリ分析方法は、
前記予め設定された入力関数をインストルメントし、前記入力関数のメモリ影響範囲を印刷するステップS4と、
スタックオーバーフロー問題が生じる場合、汚染済みデータを現在格納しているsetオブジェクトを印刷するステップS5と、
メモリ影響範囲及び汚染済みデータを格納している前記setオブジェクトに同時に位置するターゲットアドレスが存在するか否かを判断するステップS6と、
そうである場合、前記ターゲットアドレスを制御されたアドレスとして判定するステップS7とをさらに含む。
説明すべきこととして、従来技術では、アドレスサニタイザ(addresssanitizer)のようなメモリ分析スキームは、プログラムソースコードに依存するため、ソースコードのプログラムを取得しにくいプログラムを分析することができない。ステイン分析は、その本来の目的がプログラムのいくつかの主要な位置が汚染されているか否かを検出することであるため、その重点がプログラム全体の範囲での汚染済みデータの伝播を考慮することにある。
この場合、汚染済みデータ処理に係る命令のそれぞれがマーキングのために余分なスペースを開く必要がある可能性があるため、メモリのオーバーヘッドは非常に深刻な問題である。従来のステイン分析では、この点も考慮されるため、汚染伝播中に記録できる情報は非常に限られる。例えば、最も基本的なステイン分析では、1つのメモリ位置に対して、汚染されているか否かを1ビットだけでマーキングする。しかしながら、メモリ分析の場合、スタックのようなメモリ位置が繰り返して使用され、且つ関数が戻るにつれて関数の局部スタックのコンテンツが意味をなさなくなり、したがって、関数の内部で、ステイン分析の方式で局部スタック内の汚染状況を記録することができ、且つメモリのオーバーヘッドをあまり配心しないので、さらなるメモリ分析に対して、汚染源と汚染発生アドレスをマーキングするために、より多くのメモリ位置が実に必要である。
本発明の目的は、ソースコードがない状況に対応し、動的インストルメント技術及びメモリ分析技術により、メモリオーバーフロー問題を検出し、エクスプロイトを生成するために必要な主要な情報を抽出することができる、動的ステイン分析に基づくメモリ分析方法を提供することにある。動的インストルメントプラットフォームを応用することにより、ソースコードなしでプログラムを分析し、関数コール中にメモリ情報を分析し、スタックオーバーフローが発生するか否かを検出し、エクスプロイトの生成に利用できる重要な情報を出力することができる。
図2に示すように、本発明の実施例では、動的バイナリインストルメンテーションエンジンを使用することでメモリ分析を行う主な過程は、次のとおりである。
1、バイナリインストルメンテーションエンジンはプロセスから一部のデータとコードを動的にキャプチャする。
2、キャプチャされたコードは直接実行されず、ユーザーに定義されたインストルメントコードを挿入して実行され、インストルメントがプログラムのどの位置にインストルメントするかを指定するためのものであり、これにより、プログラムは指定された位置に実行されると、インストルメントコードによって分析コードにジャンプする。
3、インストルメンテーションエンジンを通過したコードは、JITコンパイルされた後に実行可能コードになり、コードバッファーに入れられて実行される。
4、バッファ内のコードは、実行をシミュレートするために1つずつエミュレータに入り、インストルメントコードが実行されると、動的情報を取得するために特定の分析コードが呼び出され、これらの動的情報には、ステイン分析をサポートする汚染伝播情報が含まれ、エクスプロイトを生成するための重要な情報も含まれる。
5、バッファ内のコードが使い果たされると、スケジューラによりコードを取得し続け、上記のプロセスを繰り返す。
ユーザーがまずインストルメンテーション関数と分析関数を定義する必要があることは理解できる。インストルメンテーション関数はプログラムにおけるインストルメント位置を示し、分析関数はインストルメント位置で実行する必要がある分析を規定し、これは後でプログラムの実行に影響する。バイナリインストルメンテーションエンジンでプログラムを実行すると、アプリケーションプログラムプロセスは直接実行されず、全てのインストルメントコードを含むコードキャッシュ内にコードが実行される。最初、コードキャッシュは空であり、インストルメンテーションエンジンはプロセスからコードグラバーを介して1つのコードブロックを取り出し、ユーザーに定義されたインストルメンテーション関数と分析関数の指導の下でこのコードブロックをインストルメントする。コードインストルメントが完了された後、ダイナミックバイナリインストルメンテーションエンジンは1つのJITコンパイラを使用してコンパイルし、これにより、インストルメント済みコードが再度最適化され、コンパイルされたコードはコードキャッシュに格納される。JITコンパイラーはさらに、制御フローの実行が動的バイナリインストルメンテーションエンジンに戻ることを確保し、プロセスがインストルメントされていないコードで実行され続けることを防止するために、制御フロー命令を書き換える。コードキャッシュ内のコードは、1つの制御フロー命令が新しいコードを取り戻すか、キャッシュ内の別のコードブロックを見つける必要があるまで1つずつ実行され、その後、全ての操作がスケジューラに渡され、上記の操作が繰り返される。
一方で、実行時のC関数の特徴は次のとおりである。1つの関数コールが発生すると、まず現在の命令の次の項目をスタックにプッシュし、次に現在のスタックベースポインターをスタックに保存し、最後にスタックトップポインターをスタックベースレジスタに保存し、この後、スタックトップポインタがローカル変数を処理できる。局部変数が定義される前に局部スタックの長さが発生することに注意する必要があり、後続の書き込み操作が制限されていない場合、範囲外の書き込みが発生する可能性があり、スタックに保存されているスタックベースポインターと戻りアドレスに最終的に影響する。
図3に示すように、動的バイナリインストルメンテーションエンジンによって取得された情報に基づいてステイン分析を応用し、スタックオーバーフローの利用に関する重要な情報を抽出するプロセスは、次のとおりである。
動的ステイン分析の応用:
1、readなどの入力関数を汚染源として指定し、外部で読み取ったデータを汚染済みとしてマーキングし、汚染されたアドレスを1つのsetオブジェクトで記録し、レジスタの汚染状況を特定のデータ構造で記録する。
2、MOV、PUSH、POP、ADDを含む各メモリ操作命令をインストルメントし、毎回操作するする前にチェックし、ソースオペランドが汚染されている場合、ターゲットオペランドを汚染済みとしてマーキングし、ソースオペランドが汚染されていない場合、ターゲットオペランドが汚染されている場合、ターゲットオペランドの汚染を浄化する。
3、ret命令をインストルメントし、現在のスタックトップメモリが汚染されているか否かをチェックし、汚染されている場合、ユーザー入力がプログラム実行の制御フローに影響を与える可能性があることを示す。
スタックオーバーフローの利用に関する重要な情報の抽出:
1、入力関数をインストルメントし、入力関数に影響されたメモリ範囲を印刷する。
2、関数が戻るときに、ユーザー入力がプログラム制御フローに影響を与えることができることを発見した場合、汚染済みデータを現在格納しているsetオブジェクトを印刷する。
3、いくつかのアドレスがある入力関数に影響されたメモリ範囲と、汚染済みデータを格納するsetオブジェクトの両方に同時に位置する場合、当該メモリアドレスは当該入力関数によって制御されることが初めて判定され、これにより、ユーザー入力のどのコンテンツを変更して制御フローに影響するかを計算できる。
図4に示すように、本解決手段の1つの具体的な実施例は次のとおりである。
1、ある入力関数が44つの文字をメモリに読み込む。
2、関数が戻るとき、スタックトップのメモリアドレスが汚染されていることを発見する。
3、現在のスタックトップのメモリアドレスを記録し、入力関数をインストルメントして得られた情報を組み合わせて、現在のスタックトップアドレスが当該入力関数の41番目〜44番目の文字によって制御されることを計算する。
4、同時に、1番目〜40番目の文字の格納アドレスが汚染済みデータを格納しているsetと読み込まれた関数の範囲に同時に存在するため、この40つの文字の格納アドレスのコンテンツは、この入力関数を通じてユーザーに制御されてもよいことが初めて判定される。
本発明の実施例は、動的プログラムを介して実行をシミュレートし、ある関数のうちの入力関数を実行する時に、メモリ内の入力に影響された位置を汚染済みとしてマーキングし、関数が戻るときに、戻りアドレスが入力によってハイジャックされるか否かをチェックする。
また、本発明の実施例はさらに入力に影響されたメモリアドレスを取得し、プログラム戻りアドレスを影響されたメモリアドレスと比較することもできる。これにより、入力のうちのどのバイトがプログラムの制御フローに影響するかを計算する。
説明すべきこととして、以上の方法又はプロセスの実施例に対して、簡単に説明するために、それらを一連の動作の組み合わせとして説明するが、本発明の実施例によれば、いくつかのステップが他の順番で又は又は同時に実行されてもよいため、本発明の実施例が説明される動作の順番の制限を受けないことは当業者が理解すべきである。次に、当業者であれば、明細書に説明される実施例はいずれも選択可能な実施例に属し、係る動作が必ず本発明の実施例に必要なものではないと理解すべきである。
図5に示すように、同じ技術的問題を解決するために、本発明はさらに動的ステイン分析に基づくメモリ分析装置を提供する。前記装置は、
予め設定された入力関数を汚染源として指定して、前記入力関数によって読み取られたデータを汚染済みとしてマーキングし、汚染されたアドレスを1つのsetオブジェクトで記録するための汚染源マーキングモジュール1と、
全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、ソースオペランドの汚染状況に応じてターゲットオペランドをマーキングするための汚染処理モジュール2と、
ret命令をインストルメントしてスタックトップメモリをチェックし、現在のスタックトップメモリの汚染状況に応じてスタックオーバーフロー検出を行うためのメモリ検出モジュール3とを備える。
さらに、前記汚染処理モジュール2は具体的には全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、前記ソースオペランドが汚染されているか否かを判断し、そうである場合、前記ターゲットオペランドを汚染済みとしてマーキングし、そうでない場合、前記ターゲットオペランドを浄化するために使用される。
さらに、前記メモリ検出モジュール3は具体的にはret命令をインストルメントしてスタックトップメモリをチェックし、前記スタックトップメモリが汚染されているか否かを判断し、そうである場合、メモリにスタックオーバーフロー問題が生じると判定するために使用される。
さらに、動的ステイン分析に基づくメモリ分析装置は、
前記予め設定された入力関数をインストルメントし、前記入力関数のメモリ影響範囲を印刷するための範囲印刷モジュールと、
スタックオーバーフロー問題が生じる場合、汚染済みデータを現在格納しているsetオブジェクトを印刷するためのアドレス印刷モジュールと、
前記メモリ影響範囲及び汚染済みデータを格納している前記setオブジェクトに同時に位置するターゲットアドレスが存在するか否かを判断するためのターゲットクエリモジュールと、
前記ターゲットアドレスを制御されたアドレスとして判定するためのターゲット判定モジュールとをさらに備える。
上記装置の実施例が本発明の方法の実施例に対応することは理解でき、本発明の実施例による動的ステイン分析に基づくメモリ分析装置は、本発明のいずれかの実施例による動的ステイン分析に基づくメモリ分析方法を実現することができる。
同じ技術的問題を解決するために、本発明はさらに、プロセッサ、メモリ、及び前記メモリに格納され且つ前記プロセッサによって実行されるように構成されたコンピュータプログラムを備え、前記メモリが前記プロセッサに結合され、且つ前記プロセッサが前記コンピュータプログラムを実行すると、いずれか一項に記載の動的ステイン分析に基づくメモリ分析方法が実現される、動的ステイン分析に基づくメモリ分析端末機器を提供する。
前記動的ステイン分析に基づくメモリ分析端末機器は、デスクトップコンピュータ、ノートブック、パームトップコンピュータ及びクラウドサーバなどのコンピューティングデバイスであってもよい。前記プロセッサは中央処理ユニット(CPU:Central Processing Unit)であってもよく、また他の汎用プロセッサ、デジタル信号プロセッサ(DSP:(Digital Signal Processor)、専用集積回路(ASIC:Application Specific Integrated Circuit)、フィールドプログラマブルゲートアレイ(FPGA:Field Programmable Gate Array)又は他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジックデバイス、ディスクリートハードウェアコンポーネントなどであってもよい。汎用プロセッサは、マイクロプロセッサであってもよく、又は任意の従来のプロセッサなどであってもよく、前記プロセッサは、前記動的ステイン分析に基づくメモリ分析端末機器の制御センターであり、様々なインタフェースと回線を使用して、前記動的ステイン分析に基づくメモリ分析端末機器全体の各部分を接続する。
前記メモリは主にプログラム記憶領域とデータ記憶領域を含むことができ、ここで、プログラム記憶領域にはオペレーティングシステム、少なくとも一つの機能に必要なアプリケーションプログラムなどが記憶されてもよく、データ記憶領域には携帯電話の使用に応じて作成されたデータなどが記憶されてもよい。また、メモリは、高速ランダムアクセスメモリを含むことができ、さらにハードディスク、内部メモリ、プラグインハードディスクなどの不揮発性メモリ、スマートメディアカード(SMC:Smart Media Card)、セキュアデジタル(SD:Secure Digital)カード、フラッシュカード(Flash Card)、少なくとも1つの磁気ディスクストレージデバイス、フラッシュメモリデバイス、又は他の揮発性ソリッドステートストレージデバイスを含むことができる。
同じ技術的問題を解決するために、本発明はさらに前記コンピュータ可読記憶媒体を提供する。前記前記コンピュータ可読記憶媒体は、コンピュータプログラムを記憶し、前記コンピュータプログラムが実行される時に、いずれか一項に記載の動的ステイン分析に基づくメモリ分析方法を実行するように前記コンピュータ可読記憶媒体が配置されたデバイスを制御する。
前記コンピュータプログラムは、コンピュータ可読記憶媒体に格納されてもよく、当該コンピュータプログラムがプロセッサによって実行されるとき、上記の各方法の実施例のステップが実現されてもよい。ここで、前記コンピュータプログラムはコンピュータプログラムコードを含み、前記コンピュータプログラムコードがソースコード形態、オブジェクトコード形態、実行可能ファイル又は何らかの中間形態などであってもよい。前記コンピュータ可読記憶媒体は、コンピュータプログラムコードを含むことができるいずれかのエンティティ又はデバイス、記録媒体、USBフラッシュドライブ、モバイルハードディスク、磁気ディスク、光ディスク、コンピュータメモリ、読み取り専用メモリ(ROM:Read−Only Memory)、ランダムアクセスメモリ(RAM:Random Access Memory)、電気搬送波信号、通信信号及びソフトウェア配布媒体などを含むことができる。説明すべきこととして、前記コンピュータ可読媒体に含まれるコンテンツは、司法管轄区域内の法律及び特許実務の要件に応じて適切に追加又は削除されてもよく、例えば、いくつかの司法管轄区域において、法律及び特許実務に従って、コンピュータ可読媒体は電気搬送波信号と通信信号を含めない。
説明すべきこととして、上述した装置の実施例は例示的なものだけでなく、ここで、分離部材として説明された前記ユニットが物理的に分離するものであってもよく又は物理的に分離するものでなくてもよく、ユニットとして表示された部材は物理ユニットであってもよく又は物理ユニットでなくてもよく、即ち一つの位置に配置されてもよく、又は複数のネットワークユニットに分布してもよい。実際のニーズに応じてそのうちの一部又は全てのモジュールを選択して本実施例の解決手段の目的を達成することができる。また、本発明による装置の実施例の図面では、モジュール間の接続関係はそれらが通信接続を有することを示し、これは、1本または複数本の通信バス又は信号線として具体的に実現されてもよい。当業者は創造的な労力を要せずに理解して実施することができる。
以上に説明したものは本発明の好ましい実施形態であり、指摘すべきこととして、当業者であれば、本発明の原理を逸脱しない前提で、いくつかの改良および変更を行うことができ、これらの改良及び変更も本発明の保護範囲と見なされる。

Claims (10)

  1. 動的ステイン分析に基づくメモリ分析方法であって、
    予め設定された入力関数を汚染源として指定して、前記入力関数によって読み込まれたデータを汚染済みとしてマーキングし、汚染されたアドレスを1つのsetオブジェクトで記録することと、
    全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、ソースオペランドの汚染状況に応じてターゲットオペランドをマーキングすることと、
    ret命令をインストルメントしてスタックトップメモリをチェックし、現在のスタックトップメモリの汚染状況に応じてスタックオーバーフロー検出を行うこととを含む、ことを特徴とする動的ステイン分析に基づくメモリ分析方法。
  2. 全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、ソースオペランドの汚染状況に応じてターゲットオペランドをマーキングすることは、具体的には、 全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、前記ソースオペランドが汚染されているか否かを判断し、
    そうである場合、前記ターゲットオペランドを汚染済みとしてマーキングし、
    そうでない場合、前記ターゲットオペランドの汚染を浄化することである、ことを特徴とする請求項1に記載の動的ステイン分析に基づくメモリ分析方法。
  3. ret命令をインストルメントしてスタックトップメモリをチェックし、現在のスタックトップメモリの汚染状況に応じてスタックオーバーフロー検出を行うことは、具体的には、
    ret命令をインストルメントしてスタックトップメモリをチェックし、前記スタックトップメモリが汚染されているか否かを判断し、
    そうである場合、メモリにスタックオーバーフロー問題が生じると判定することである、ことを特徴とする請求項1に記載の動的ステイン分析に基づくメモリ分析方法。
  4. 前記予め設定された入力関数をインストルメントし、前記入力関数のメモリ影響範囲を表示することと、
    スタックオーバーフロー問題が生じる場合、汚染済みデータを現在格納しているsetオブジェクトを表示することと、
    前記メモリ影響範囲及び汚染済みデータを格納している前記setオブジェクトに同時に位置するターゲットアドレスが存在するか否かを判断することと、
    そうである場合、前記ターゲットアドレスを制御されたアドレスとして判定することとをさらに含む、ことを特徴とする請求項1に記載の動的ステイン分析に基づくメモリ分析方法。
  5. 動的ステイン分析に基づくメモリ分析装置であって、
    予め設定された入力関数を汚染源として指定して、前記入力関数によって読み込まれたデータを汚染済みとしてマーキングし、汚染されたアドレスを1つのsetオブジェクトで記録するための汚染源マーキングモジュールと、
    全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、ソースオペランドの汚染状況に応じてターゲットオペランドをマーキングするための汚染処理モジュールと、
    ret命令をインストルメントしてスタックトップメモリをチェックし、現在のスタックトップメモリの汚染状況に応じてスタックオーバーフロー検出を行うためのメモリ検出モジュールとを備える、ことを特徴とする動的ステイン分析に基づくメモリ分析装置。
  6. 前記汚染処理モジュールは具体的には全てのメモリ操作命令をインストルメントしてメモリ操作をチェックし、前記ソースオペランドが汚染されているか否かを判断し、そうである場合、前記ターゲットオペランドを汚染済みとしてマーキングし、そうでない場合、前記ターゲットオペランドを浄化するために使用される、ことを特徴とする請求項5に記載の動的ステイン分析に基づくメモリ分析装置。
  7. 前記メモリ検出モジュールは具体的にはret命令をインストルメントしてスタックトップメモリをチェックし、前記スタックトップメモリが汚染されているか否かを判断し、そうである場合、メモリにスタックオーバーフロー問題が生じると判定するために使用される、ことを特徴とする請求項5に記載の動的ステイン分析に基づくメモリ分析装置。
  8. 前記予め設定された入力関数をインストルメントし、前記入力関数のメモリ影響範囲を表示するための範囲表示モジュールと、
    スタックオーバーフロー問題が生じる場合、汚染済みデータを現在格納しているsetオブジェクトを表示するためのアドレス表示モジュールと、
    前記メモリ影響範囲及び汚染済みデータを格納している前記setオブジェクトに同時に位置するターゲットアドレスが存在するか否かを判断するためのターゲットクエリモジュールと、
    前記ターゲットアドレスを制御されたアドレスとして判定するためのターゲット判定モジュールとをさらに備える、ことを特徴とする請求項5に記載の動的ステイン分析に基づくメモリ分析装置。
  9. 動的ステイン分析に基づくメモリ分析端末機器であって、プロセッサ、メモリ、及び前記メモリに格納され且つ前記プロセッサによって実行されるように構成されたコンピュータプログラムを備え、前記メモリが前記プロセッサに結合され、且つ前記プロセッサが前記コンピュータプログラムを実行すると、請求項1〜4のいずれか一項に記載の動的ステイン分析に基づくメモリ分析方法が実現される、ことを特徴とする動的ステイン分析に基づくメモリ分析端末機器。
  10. 前記コンピュータ可読記憶媒体は、コンピュータプログラムを記憶し、前記コンピュータプログラムが実行される時に、請求項1−4のいずれか一項に記載の動的ステイン分析に基づくメモリ分析方法を実行するように前記コンピュータ可読記憶媒体が配置されたデバイスを制御する、ことを特徴とするコンピュータ可読記憶媒体。
JP2020153673A 2019-11-20 2020-09-14 動的ステイン分析に基づくメモリ分析方法及び装置 Active JP6867066B1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201911152291.5A CN110941552B (zh) 2019-11-20 2019-11-20 一种基于动态污点分析的内存分析方法及装置
CN201911152291.5 2019-11-20

Publications (2)

Publication Number Publication Date
JP6867066B1 true JP6867066B1 (ja) 2021-04-28
JP2021082256A JP2021082256A (ja) 2021-05-27

Family

ID=69907300

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020153673A Active JP6867066B1 (ja) 2019-11-20 2020-09-14 動的ステイン分析に基づくメモリ分析方法及び装置

Country Status (2)

Country Link
JP (1) JP6867066B1 (ja)
CN (1) CN110941552B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111832026B (zh) * 2020-06-18 2022-04-26 广州大学 一种漏洞利用定位方法、系统、装置及介质
CN111859388B (zh) * 2020-06-30 2022-11-01 广州大学 一种多层次混合的漏洞自动挖掘方法
CN112765026A (zh) * 2021-01-21 2021-05-07 杭州安恒信息技术股份有限公司 一种动态监测phpweb应用代码漏洞方法及相关装置
CN113176990B (zh) * 2021-03-25 2022-10-18 中国人民解放军战略支援部队信息工程大学 一种支持数据间关联分析的污点分析框架及方法
CN113268427B (zh) * 2021-06-15 2022-03-29 中国电子科技网络信息安全有限公司 一种针对二进制程序的崩溃分析方法及系统
CN114741700B (zh) * 2022-03-28 2024-05-03 中国人民解放军战略支援部队信息工程大学 基于符号化污点分析的公共组件库漏洞可利用性分析方法及装置
CN114780962B (zh) * 2022-04-02 2024-04-26 中国人民解放军战略支援部队信息工程大学 基于动态能量调控的Windows程序模糊测试方法及系统
CN115329346B (zh) * 2022-10-09 2023-03-24 支付宝(杭州)信息技术有限公司 一种检测侧信道漏洞的方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1630710B1 (en) * 2004-07-21 2019-11-06 Microsoft Technology Licensing, LLC Containment of worms
JP2006172003A (ja) * 2004-12-14 2006-06-29 Ntt Docomo Inc プログラム実行監視装置、プログラム実行監視方法及びプログラム作成方法
US8381198B2 (en) * 2005-08-15 2013-02-19 Sony Ericsson Mobile Communications Ab Systems, methods and computer program products for safety checking executable application programs in a module
CN103995782B (zh) * 2014-06-17 2016-06-22 电子科技大学 一种基于污点不变集的污点分析方法
US9519533B2 (en) * 2015-01-28 2016-12-13 Qualcomm Incorporated Data flow tracking via memory monitoring
US20160232346A1 (en) * 2015-02-05 2016-08-11 Qualcomm Incorporated Mechanism for tracking tainted data
CN105138903B (zh) * 2015-08-14 2018-07-10 电子科技大学 一种基于ret指令与jmp指令的rop攻击检测方法
CN105117332B (zh) * 2015-08-19 2018-08-14 电子科技大学 一种栈溢出位置的检测方法
CN105678169B (zh) * 2015-12-30 2019-02-26 西安胡门网络技术有限公司 一种二进制程序漏洞挖掘方法和系统
CN109583200B (zh) * 2017-09-28 2021-04-27 中国科学院软件研究所 一种基于动态污点传播的程序异常分析方法

Also Published As

Publication number Publication date
CN110941552A (zh) 2020-03-31
CN110941552B (zh) 2023-07-07
JP2021082256A (ja) 2021-05-27

Similar Documents

Publication Publication Date Title
JP6867066B1 (ja) 動的ステイン分析に基づくメモリ分析方法及び装置
Ming et al. {TaintPipe}: Pipelined symbolic taint analysis
JP5430570B2 (ja) システムコールカバレッジ基準による試験スイート削減のための方法
US8381194B2 (en) Methods and apparatuses for selective code coverage
Molnar et al. Dynamic Test Generation to Find Integer Bugs in x86 Binary Linux Programs.
US8893280B2 (en) Sensitive data tracking using dynamic taint analysis
CN101964036B (zh) 漏洞检测方法及装置
US7752613B2 (en) Disambiguation in dynamic binary translation
US10019337B2 (en) Class object handle tracking
US20110047531A1 (en) Methods and apparatuses for selective code coverage
CN110741354A (zh) 呈现代码实体调用之间的差异
CN115328796A (zh) 一种用于arm架构的软件漏洞辅助定位方法和系统
Williams et al. Dyninst and mrnet: Foundational infrastructure for parallel tools
CN115795489B (zh) 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置
Wang et al. OFFDTAN: a new approach of offline dynamic taint analysis for binaries
CN114741700B (zh) 基于符号化污点分析的公共组件库漏洞可利用性分析方法及装置
Gratchoff et al. Proving the wild jungle jump
CN102708054A (zh) 二进制程序循环写内存安全漏洞的检测方法
CN106095631B (zh) 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
US20220335135A1 (en) Vulnerability analysis and reporting for embedded systems
Kargén et al. Inputtracer: A data-flow analysis tool for manual program comprehension of x86 binaries
Zhang et al. Ffuzz: Towards full system high coverage fuzz testing on binary executables
US20170228544A1 (en) Execution of test inputs with applications in computer security assessment
CN101650688A (zh) 一种访问vm_io地址空间的方法和用户态调试器
CN117008972B (zh) 一种指令分析方法、装置、计算设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200914

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200914

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200923

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210322

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210401

R150 Certificate of patent or registration of utility model

Ref document number: 6867066

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250