(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-04-20
(54)【発明の名称】リターン指向プログラミング攻撃保護
(51)【国際特許分類】
H04L 43/08 20220101AFI20220413BHJP
H04L 41/142 20220101ALI20220413BHJP
H04L 43/026 20220101ALI20220413BHJP
【FI】
H04L43/08
H04L41/142
H04L43/026
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021552244
(86)(22)【出願日】2020-03-05
(85)【翻訳文提出日】2021-09-03
(86)【国際出願番号】 IL2020050264
(87)【国際公開番号】W WO2020178840
(87)【国際公開日】2020-09-10
(32)【優先日】2019-03-05
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】521391760
【氏名又は名称】シー2エー‐セック,リミテッド
(74)【代理人】
【識別番号】100114775
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100208580
【氏名又は名称】三好 玲奈
(74)【代理人】
【識別番号】100191086
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】ダビドヴィッチ,イツハク
(72)【発明者】
【氏名】フックス,ヨアヴ
(72)【発明者】
【氏名】ブラカ,ニア
(57)【要約】
複数のECUのためのROP攻撃保護方法であって、この方法は、複数のECUのうちの1つに宛てられたデータを受信することと、受信したデータが複数のECUのうちのどれに宛てられているかを決定することと、決定されたECUに関連付けられた固有のモデルに応答して、受信したデータを分析して、1つ以上の所定のアドレスにアドレス指定された制御フロー命令を識別することと、分析に応答して、識別された制御フロー命令の統計分析を生成することと、生成された統計分析に応答して、攻撃の可能性を示す信号を出力することと、からなる。
【選択図】
図5
【特許請求の範囲】
【請求項1】
複数の電子制御ユニット(ECU)のためのリターン指向プログラミング(ROP)攻撃保護方法であって、前記方法は、
前記複数のECUのうちの1つに向けられたデータを受信することと、
前記受信したデータが前記複数のECUのうちのどれに向けられているかを決定することと、
前記決定されたECUに関連付いた固有のモデルに応答して、前記受信したデータを分析して、1つ以上の所定のアドレスにアドレス指定された制御フロー命令を識別することと、
前記分析に応答して、前記識別された制御フロー命令の統計分析を生成することと、
前記生成された統計分析に応答して、ROP攻撃の存在を検出することと、
前記検出されたROP攻撃の存在を示す信号を出力することと、を含む、方法。
【請求項2】
前記1つ以上の所定のアドレスの各々が、それぞれのガジェットのコードを含む、請求項1に記載のROP攻撃保護方法。
【請求項3】
前記生成された統計分析が、前記受信データ内の所定のウィンドウ内の前記識別された制御フロー命令の数、所定のウィンドウ値を超えている前記所定のウィンドウ内の前記識別された制御フロー命令の数に応答した前記ROP攻撃の存在を検出すること、を含む、請求項1に記載のROP攻撃保護方法。
【請求項4】
前記ROP攻撃の存在を検出することは、前記それぞれの固有のモデルにさらに応答する、請求項1に記載のROP攻撃保護方法。
【請求項5】
前記生成された統計分析が、前記識別された制御フロー命令のチェーン内の前記識別された制御フロー命令の数、所定のチェーン値を超えている前記識別された制御フロー命令の前記チェーン内の前記識別された制御フロー命令の数に応答した前記ROP攻撃の存在を検出すること、を含む、請求項1に記載のROP攻撃保護方法。
【請求項6】
前記出力信号は、ドメイン制御ユニット(DCU)を制御して、さらなるデータが前記複数のECUに転送されるのをブロックする、請求項1に記載のROP攻撃保護方法。
【請求項7】
リターン指向プログラミング(ROP)攻撃保護システムであって、
プロセッサと、
メモリであって、その中に格納された複数の固有のモデルを有し、各固有のモデルは複数の電子制御ユニット(ECU)のうちの1つのそれぞれに関連付けられたメモリと、を備え、
前記プロセッサが、
前記複数のECUのうちの1つに向けられたデータを受信することと、
前記受信したデータが前記複数のECUのうちのどれに向けられているかを決定することと、
前記決定されたECUに関連付いたそれぞれの固有のモデルに応答して、前記受信データを分析して、1つ以上の所定のアドレスにアドレス指定された制御フロー命令を識別することと、
前記分析に応答して、前記識別された制御フロー命令の統計分析を生成することと、
前記生成された統計分析に応答して、ROP攻撃の存在を検出することと、
前記検出されたROP攻撃の存在を示す信号を出力することと、を行うように構成された、システム。
【請求項8】
前記1つ以上の所定のアドレスの各々が、それぞれのガジェットのコードを含む、請求項7に記載のROP攻撃保護システム。
【請求項9】
前記生成された統計分析が、前記受信データ内の所定のウィンドウ内の前記識別された制御フロー命令の数、所定のウィンドウ値を超えている前記所定のウィンドウ内の前記識別された制御フロー命令の数に応答した前記ROP攻撃の存在を検出すること、を含む、請求項7に記載のROP攻撃保護システム。
【請求項10】
前記ROP攻撃の存在を検出することは、前記それぞれの固有のモデルにさらに応答する、請求項7に記載のROP攻撃保護システム。
【請求項11】
前記生成された統計分析が、前記識別された制御フロー命令のチェーン内の前記識別された制御フロー命令の数、所定のチェーン値を超えている前記識別された制御フロー命令の前記チェーン内の前記識別された制御フロー命令の数に応答した前記ROP攻撃の存在を検出すること、を含む、請求項7に記載のROP攻撃保護システム。
【請求項12】
前記出力信号は、ドメイン制御ユニット(DCU)を制御して、さらなるデータが前記複数のECUに転送されるのをブロックする、請求項7に記載のROP攻撃保護システム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2019年3月5日に出願された「RETURN-ORIENTED PROGRAMMING PROTECTION」と題された米国仮特許出願第62/814,009号の優先権を主張し、その全体が参照によって本明細書に組み込まれる。
【0002】
本発明は、一般に、セキュリティデバイスの分野に関し、より具体的には、リターン指向プログラミング(ROP)攻撃から保護するためのシステムおよび方法に関する。
【背景技術】
【0003】
ROPは、実行可能スペースの保護やコード署名などのセキュリティ防御が存在する場合であっても、攻撃者が悪意のあるコードを実行できるようにするコンピュータセキュリティエクスプロイト手法である。ROPを用いて、攻撃者は制御フロー命令スタックの制御を取得し、プログラム制御フローを乗っ取る。攻撃者は次いで、デバイスのメモリにすでに存在する慎重に選択されたマシン命令シーケンスを実行できる。これらのシーケンスは「ガジェット」と呼ばれる。各ガジェットは典型的に、リターン命令で終了し、既存のプログラム内のサブルーチン、および/または共有ライブラリコードに配置される。これらのガジェットを合わせてチェーン化させることで、攻撃者は、より単純な攻撃を阻止できる防御を採用しているデバイス内でも、任意の操作を実施できる。
【0004】
ROP攻撃から保護する方法の一例に、アドレス空間配置のランダム化(ASLR)がある。ASLRでは、プログラムが実行されるたびに、構成要素が仮想メモリ内の異なるアドレスにランダムに移動される。ROP攻撃から保護するための多くの方法では、バイナリ内のさまざまなオペコードを変更して、バイナリを調整する必要がある。あいにく、安全性や保証上の理由から、バイナリを変更できない場合がある。
【発明の概要】
【0005】
したがって、本発明の主な目的は、先行技術の不利な点の少なくともいくつかを克服することである。特定の実施形態では、これは、複数の電子制御ユニット(ECU)のためのリターン指向プログラミング(ROP)攻撃保護方法によって提供され、この方法は、複数のECUのうちの1つに宛てられたデータを受信することと、受信したデータが複数のECUのうちのどれに宛てられているかを決定することと、決定されたECUに関連付けられた固有のモデルに応答して、受信したデータを分析して、1つ以上の所定のアドレスにアドレス指定された制御フロー命令を識別することと、分析に応答して、識別された制御フロー命令の統計分析を生成することと、生成された統計分析に応答して、ROP攻撃の存在を検出することと、ROP攻撃の存在が検出されたことを示す信号を出力することと、を含む。
【0006】
一実施形態では、1つ以上の所定のアドレスの各々が、それぞれのガジェットのコードを含む。別の実施形態では、生成された統計分析は、受信データ内の所定のウィンドウ内の識別された制御フロー命令の数、所定のウィンドウ値を超えている所定のウィンドウ内の識別された制御フロー命令の数に応答したROP攻撃の存在の検出、を含む。
【0007】
一実施形態では、ROP攻撃の存在を検出することは、それぞれの固有のモデルにさらに対応する。別の実施形態では、生成された統計分析は、識別された制御フロー命令のチェーン内の識別された制御フロー命令の数、所定のチェーン値を超えている識別された制御フロー命令のチェーン内の識別された制御フロー命令の数に応答したROP攻撃の存在の検出、を含む。
【0008】
一実施形態では、出力信号は、ドメイン制御ユニット(DCU)を制御して、さらなるデータが複数のECUに転送されるのをブロックする。
【0009】
1つの独立した実施形態では、リターン指向プログラミング(ROP)攻撃保護システムが提供され、このシステムは、プロセッサと、メモリであって、その中に格納された複数の固有のモデルを有し、各固有のモデルは複数の電子制御ユニット(ECU)のうちの1つのそれぞれに関連付けられたメモリと、を備え、該プロセッサが、複数のECUのうちの1つに宛てられてデータを受信することと、受信したデータが複数のECUのうちのどれに宛てられているかを決定することと、決定されたECUに関連付けられたそれぞれの固有のモデルに応答して、受信したデータを分析して、1つ以上の所定のアドレスにアドレス指定された制御フロー命令を識別することと、分析に応答して、識別された制御フロー命令の統計分析を生成することと、生成された統計分析に応答して、ROP攻撃の存在を検出することと、ROP攻撃の存在が検出されたことを示す信号を出力することと、を行うように構成されている。
【0010】
一実施形態では、1つ以上の所定のアドレスの各々が、それぞれのガジェットのコードを含む。別の実施形態では、生成された統計分析は、受信データ内の所定のウィンドウ内の識別された制御フロー命令の数、所定のウィンドウ値を超えている所定のウィンドウ内の識別された制御フロー命令の数に応答したROP攻撃の存在の検出、を含む。
【0011】
一実施形態では、ROP攻撃の存在を検出することは、それぞれの固有のモデルにさらに対応する。別の実施形態では、生成された統計分析は、識別された制御フロー命令のチェーン内の識別された制御フロー命令の数、所定のチェーン値を超えている識別された制御フロー命令のチェーン内の識別された制御フロー命令の数に応答したROP攻撃の存在の検出、を含む。
【0012】
一実施形態では、出力信号は、ドメイン制御ユニット(DCU)を制御して、さらなるデータが複数のECUに転送されるのをブロックする。
【0013】
本発明の追加の特徴および利点は、以下の図面および説明から明らかになるであろう。
【図面の簡単な説明】
【0014】
本発明の様々な実施形態をよりよく理解し、それがどのように実施され得るかを示すために、ここで、純粋に例として、同様の符号が全体を通して対応する要素またはセクションを示す、添付の図面を参照する。
【0015】
ここで詳細に図面を具体的に参照すると、示される詳細は、例として本発明の好ましい実施形態の例示的な議論のみを目的としており、本発明の原理および概念的側面の最も有用で容易に理解される説明であると考えられるものを提供するという理由で提示されている。これに関して、本発明の基本的な理解に必要である以上に本発明の構造の詳細を示す試みはなされておらず、図面とともに行われた説明は、本発明のいくつかの形態が実際にどのように具体化され得るかを当業者に明らかにしている。添付の図面は以下のとおりである。
【0016】
【
図1A-1D】特定の実施形態による、ROP攻撃保護装置の様々な高レベルの概略図を示す。
【
図1E】特定の実施形態による、検査プログラムの操作方法の高レベルのフローチャートを示す。
【
図2】AUTOSARプロジェクトにECUモデルを追加する方法の、第1の実施形態の高レベルのフローチャートを示す。
【
図3】AUTOSARプロジェクトにECUモデルを追加する方法の、第2の実施形態の高レベルのフローチャートを示す。
【
図4】LINUXプロジェクトにECUモデルを追加する方法の高レベルの概要図を示す。
【
図5】特定の実施形態による、ROP攻撃保護方法の高レベルのフローチャートを示す。
【発明を実施するための形態】
【0017】
本発明の少なくとも1つの実施形態を詳細に説明する前に、本発明は、その適用において、以下の説明に記載されるかまたは図面に例示される構成ならびに構成要素の配置に必ずしも限定されないことを理解されたい。本発明は、様々な方法で実践または実行されている他の実施形態に適用可能である。また、本明細書で使用される表現または用語は、説明を目的としたものであり、限定として解釈されるべきではないことを理解されたい。
【0018】
図1Aは、ROP攻撃保護システム20を含む自動車通信ネットワーク10の高レベルの概略図を示し、
図1Bは、ROP攻撃保護システム20の高レベルの概略図を示し、
図1Cは、ROP攻撃保護システム20のプロセッサ30の実施形態の高レベルの概略図を示す。自動車通信ネットワーク10は、ROP攻撃保護システム20、ドメインコントローラーユニット(DCU)40、および複数のコントローラエリアネットワーク(CAN)バスネットワーク50を備える。各CANバスネットワーク50は、CANバス60、およびCANバス60に結合された複数のECU70を備える。一実施形態では、ROP攻撃保護システム20は、DCU40の一部として実装される。ROP攻撃保護システム20は、プロセッサ30およびメモリ80を備える。プロセッサ30は、検査プログラム35を備える。検査プログラム35は、データ受信機能90、ECU決定機能100、制御フロー命令識別機能110、分析機能120、攻撃検出機能130、および出力機能140を含む。メモリ80は、その中に複数のECUモデル150を格納している。1つの非限定的な実施形態では、プロセッサ30は、メモリ80に格納されたコンピュータ可読命令に応答して動作するように構成されている。一実施形態では、DCU40およびECU70は、自動車用オープンシステムアーキテクチャ(AUTOSAR)に従って動作する。別の実施形態では、DCU40およびECU70は、Linuxシステムで動作する。各CANバスネットワーク50は、DCU40のそれぞれの出力と通信しており、DCU40の入力は、イーサネットネットワークと通信している。一実施形態では、メモリ80は、システムメモリの一部を含む。
【0019】
本明細書で使用される「制御フロー命令」という用語は、特定のメモリアドレスにアクセスするためのプログラムのフローを制御する命令であることを意味する。1つの非限定的な実施形態では、制御フロー命令は、コール命令、ブランチ命令、またはジャンプ命令のうちのいずれかを含む。
【0020】
図1Dは、ECU70のうちの特定の1つに係るECUモデル150の例を示す。特に、事前定義されたデータサイズの各アドレスインジケータについて、アドレスインジケータに関連付けられたデータは、ターゲットアドレス空間内のガジェットの存在または不在を示すフラグでマークされる。好ましくは、事前定義されたデータサイズは4バイト、すなわちダブルワード(DWORD)である。具体的には、例示的な一実施形態では、アドレスインジケータによって反映されるターゲットアドレス空間がガジェットを含む場合は、アドレスインジケータに関連付けられて「1」が格納され、アドレスインジケータによって反映されるターゲットアドレス空間がガジェットを含まれない場合は、アドレスインジケータに関連付けられて「0」が格納される。本明細書で使用される場合、ガジェットという用語は、当業者には知られているように、リターン命令で終わり、所定の数以下の命令を含む一連の命令を指すことを意味する。1つの非限定的な実施形態では、命令の所定の数は5である。別の実施形態では、ECUモデル150は、単一のアレイに一緒に組み合わされる。ECUモデル150は、本発明の時点で当業者に知られているように、それぞれのバイナリをスキャンし、バイナリ内の各ガジェットと、ガジェットのコードを含むシステムメモリ内のそれぞれのアドレスを識別することによって、事前に生成される。
【0021】
一実施形態では、各ECUモデル150は、それぞれのECU70のガジェットの許容可能なチェーンに関する情報を含む。特に、ガジェットのチェーンは、チェーン内の各ガジェットがこのチェーン内の別のガジェットのアドレスへの制御フロー命令を開始した、複数のガジェットである。あるいは、チェーン内のガジェットは、チェーン内の別のガジェットのアドレスから所定の距離以内のアドレスへの制御フロー命令を開始することができる。許容可能なガジェットのチェーンは、それぞれのECU70のバイナリから決定される。
【0022】
AUTOSAR構成では、ECU70はASLRなしで動作するため、ECU70が更新される場合を除いて、ガジェットのアドレスは変更されない。ECU70がASLRで動作するシステムの場合、各ECUモデル150のアドレスは、ASLRの新しいアドレスに従って更新される。
【0023】
一実施形態では、データ受信機能90、ECU決定機能100、制御フロー命令識別機能110、分析機能120、攻撃検出機能130、および出力機能140の各々は、検査プログラム35内のコードのそれぞれのセクションを含む。
【0024】
動作中、イーサネットパケットはDCU40によって受信され、データ受信機能90は、ROP攻撃保護システム20のプロセッサ30でパケットのデータを受信する。DCU40がAUTOSARに従って動作する一実施形態では、検査プログラム35は、DCU40のドライバがパケットの受信を終了したときに呼び出されるように構成されるコールバック関数として実装される。特に、一実施形態では、コールバックは、設定されているドライバの受信機フラグに実装される。別の実施形態では、以下に説明するように、DCU40がLinuxシステムで動作し、検査プログラム35が共有オブジェクトである場合、LD-PRELOADコマンドを利用して、共有された検査プログラム35を呼び出す。動作が完了した後、検査プログラム35は元のコードを呼び出して通常の動作を継続する。
【0025】
ECU決定機能100は、パケットの受信データを分析して、受信されたパケットがECU70のうちの1つに宛てられているかどうかを決定する。さらに、ECU決定機能は、どのECU70がパケットの宛先であるかを決定する。一実施形態では、ECU決定機能100は、所定のルーティングモデルに応答するパケットの宛先を決定する。所定のルーティングモデルは、DCU40の構成ファイルに応答して生成される。特に、DCU40の構成ファイルは、受信信号のルーティングポリシー、すなわち、各信号がどこにルーティングされるかを定義する。したがって、ルーティングモデルは各ECU70の固有の識別子を含み、ECU決定機能100は、どの固有の識別子がパケットに含まれるか、すなわち、どのECU70がパケットの宛先であるかを識別する。一実施形態では、データパケットの宛先は、パケットのCAN IDに応答して決定される。別の実施形態では、データパケットの宛先は、パケットのイーサネットIPに応答して決定される。一実施形態では、特定のECU70宛てのパケットのみが分析される。
【0026】
制御フロー命令識別機能110は、パケットの宛先であるECU70のECUモデル150に応答して、パケットのペイロード内のデータを分析して、ガジェットを含むメモリアドレスへの制御フロー命令を識別する。特に、上述したように、一実施形態では、各ECUモデル150は、DWORDがガジェットを含むかどうかを示すフラグを各DWORDに設定する。一実施形態では、制御フロー命令識別機能110は、ペイロード内の各制御フロー命令の宛先をそれぞれのECUモデル150のアドレスと比較して、それぞれのアドレス空間のフラグが1または0に設定されているかどうかを判定する。別の実施形態では、制御フロー命令識別機能110は、ガジェットを含む空間をアドレス指定するために、制御フロー命令に対するペイロードを検索する。異なるメモリを使用しているため、異なるECU70が同じアドレス番号を使用し得ることに留意されたい。したがって、アドレスを含むガジェットは、アドレス番号と宛先ECU70の識別の両方によって識別される。
【0027】
分析機能120は、識別機能110によって識別されたガジェットへの制御フロー命令の統計分析を生成する。特に、一実施形態では、分析機能120は、パケット内の所定のウィンドウ内のガジェットにアドレス指定された制御フロー命令の数を追跡する。特に、所定のサイズのウィンドウが定義され、そのウィンドウを使用してパケットがスキャンされ、パケットデータ全体にわたってそのようなウィンドウ内のガジェットにアドレス指定される制御フロー命令の量が決定される。さらなる一実施形態では、ウィンドウは移動ウィンドウであり、すなわち、ウィンドウはデータの先頭から始まり、所定のステップサイズだけ増加的に進む。任意選択的に、所定のステップサイズは1バイトである。1つの非限定的な実施形態では、ウィンドウサイズは20バイトである。
【0028】
別の実施形態では、ウィンドウは、ガジェットにアドレス指定された制御フロー命令を検出するときに初期化される。特に、ガジェット宛ての制御フロー命令を検出すると、ガジェット宛てのこの検出された制御フロー命令から始まるようにウィンドウが設定され、ウィンドウ内のガジェットにアドレス指定された追加の制御フロー命令の数がカウントされる。ウィンドウの完了後、ガジェットにアドレス指定された次の制御フロー命令が検出されると、次のウィンドウが設定される。
【0029】
一実施形態では、生成された統計分析は、ガジェットにアドレス指定された制御フロー命令のチェーン内のガジェットにアドレス指定された制御フロー命令の数を含む。上述したように、ガジェットのチェーンは、チェーン内の各ガジェットが、チェーン内の別のガジェットのアドレスまたはチェーン内の別のガジェットのアドレスから所定の距離以内のアドレスへの制御フロー命令アドレスを開始するガジェットの数である。さらなる一実施形態では、生成された統計分析は、ガジェットにアドレス指定された一連の制御フロー命令内のガジェットにアドレス指定された制御フロー命令の数、および事前定義されたウィンドウ内のガジェットにアドレス指定された制御フロー命令の数の両方を含む。
【0030】
攻撃検出機能130は、分析機能120によって生成された統計分析に応答するROP攻撃の存在を検出する。特に、統計分析が所定のウィンドウ内で呼び出されたガジェットの数を含む実施形態では、攻撃検出機能130は、呼び出されたガジェットの数を所定のウィンドウ値と比較する。呼び出されたガジェットの数が所定のウィンドウ値を超えた場合、ROP攻撃が識別される。
【0031】
統計分析が、ガジェットにアドレス指定された制御フロー命令のチェーン内のガジェットにアドレス指定された制御フロー命令の数を含む実施形態では、攻撃検出機能130は、チェーン内の制御フロー命令の数を所定のチェーン値と比較する。チェーン内で呼び出されたガジェットの数が所定のチェーン値を超えた場合、ROP攻撃が識別される。一実施形態では、所定のチェーン値は、それぞれのECUモデル150に応答して決定され、すなわち、各ECU70に対してそれぞれの所定のチェーン値が存在する。別の実施形態では、ガジェットにアドレス指定された制御フロー命令のチェーンは、それぞれのECUモデル150に格納されたガジェットの許容チェーンに関する情報と比較され、所定のチェーン値との比較は、許容チェーンとして格納されていない検出されたチェーンに対してのみ実行される。したがって、このような実施形態では、ROP攻撃の存在の検出は、それぞれの固有のECUモデル150に応答する。
【0032】
一実施形態では、攻撃検出機能130は、所定のウィンドウ内のガジェットにアドレス指定された制御フロー命令の数およびガジェットの1つ以上のチェーン内の制御フロー命令の数の両方の所定の機能に応答する、ROP攻撃の存在を検出する。さらなる一実施形態では、異なる所定の機能が、各固有のECUモデル150に提供される。任意選択的に、各所定の機能は、それぞれのECU70内のガジェットの許容チェーンに関する情報に応答して決定される。任意選択的に、各所定の機能は、第1のタイプのECU70が、誤検出の数を減らす第1の所定の機能に関連付けられ、第2のタイプのECU70が、より多くの誤検出を許容しながら検出されないROP攻撃の数を減らす第2の所定の機能に関連付けられるように、それぞれのECU70のタイプに応答して決定される。したがって、このような実施形態では、ROP攻撃の存在の検出は、それぞれの固有のECUモデル150に応答する。同様に、一実施形態では、各それぞれの所定のウィンドウ値および各それぞれの所定のチェーン値は、それぞれのECU70のタイプに応答する。
【0033】
識別されたROP攻撃に応答して、出力機能140は、ROP攻撃の存在を示す信号を出力する。一実施形態では、出力信号に応答して、DCU40は、CANバスネットワーク50へのデータのさらなる送信を防止する。さらなる一実施形態では、各パケットは、パケットの分析後にのみ、かつROP攻撃の存在を示す信号がない場合にのみ、適切なCANバスネットワークに送信される。別の実施形態では、パケットの上記の分析は、DCU40によって宛先ECU70に転送されるパケットと並行して実施される。さらなる一実施形態では、出力信号はコントローラに送信される。
【0034】
検査プログラム35の動作方法の高レベルのフローチャートが
図1Eに示されている。ステージ1000では、受信したパケットのデータ内のウィンドウが初期化される。ステージ1010では、ウィンドウ内の制御フロー命令が分析されて、それがガジェットを含むアドレスをアドレス指定するかどうかが決定される。ガジェットにアドレス指定された制御フロー命令が識別された場合、ステージ1020において、これが現在のウィンドウで識別される最初のガジェットであるかどうかを判定するためにフラグが確認される。これが識別された最初のガジェットであると判定された場合、ステージ1030でカウンターが開始され、ステージ1040でカウンターが進められる。これが現在のウィンドウで識別された最初のガジェットではないと判定された場合、ステージ1040が実施され、カウンターが進められる。
【0035】
ステージ1050において、ステージ1000のウィンドウは、それが経過したかどうか、すなわち、ウィンドウの終わりに到達したかどうかを判定するために分析される。所定のウィンドウが経過した場合、ステージ1060において、ステージ1030のカウンターの値が所定のウィンドウ値と比較される。カウンターの値が所定のウィンドウ値よりも大きい場合、ステージ1070において、ROP攻撃の存在を示す信号が出力される。ステージ1060において、カウンターの値が所定のウィンドウ値以下であると決定された場合、ウィンドウを所定のステップサイズ(任意選択的に1バイト超え)単位で移動させながら、上記のステージ1000が再び実施される。任意選択的に、攻撃が検出され、ステージ1070の信号が出力された場合、ステージ1000も再び実施される。
【0036】
ステージ1050において、ステージ1000のウィンドウが経過していないと判定された場合、ステージ1010が再び実施される。ステージ1000~1070は、データパケットの最後に到達するまで繰り返される。一実施形態では、ステージ1000~1070は、データパケットの終わりに到達するまで、またはROP攻撃が検出されるまで繰り返される。
【0037】
有利なことに、ROP攻撃保護システム20は、任意選択的にDCU40内に配置され、ECU70ごとに別個の保護システムを必要とせずに、リモートECU70を標的とするデータパケットを検証することができる。上述したように、この検証は、一実施形態においてガジェットの利用に基づいてROP攻撃を検出するために実施されるが、前述ならびに後述のシステムおよび方法は、ガジェットの識別のみに限定されない。
【0038】
図2は、AUTOSARプロジェクトにECUモデル150を追加する方法の、第1の実施形態の高レベルのフローチャートを示す。ステージ2000では、ROP攻撃保護システム20の検査プログラム35が、リンカスクリプトを使用して、AUTOSARプロジェクトの終わりにリンクされる。ステージ2010では、ECUのバイナリがスキャンされてガジェットが識別される。ステージ2020では、ステージ2010のガジェット識別に応答して、構造のアレイが生成され、アレイの各構造は、それぞれのECU70のECUモデル150を含む。ステージ2030において、ガジェット構造アレイが検査プログラム35のソースコードに追加される。ガジェット構造アレイが検査プログラム35のソースコードにすでに存在する場合、構造アレイはステージ2010の新しい構造アレイで更新される。ステージ2040において、更新されたガジェット構造アレイを含む検査プログラム35のソースコードがコンパイルされ、リンクされる。検査プログラム35はAUTOSARプロジェクトの終わりにリンクされているため、更新されたガジェット構造アレイはプロジェクトの一部となる。
【0039】
図3は、AUTOSARプロジェクトにECUモデル150を追加する方法の、第2の実施形態の高レベルのフローチャートを示す。ステージ2100では、ROP攻撃保護システム20の検査プログラム35が、リンカスクリプトを使用して、AUTOSARプロジェクトにリンクされる。ステージ2110では、ECUのバイナリがスキャンされてガジェットが識別される。ステージ2120では、ステージ2110のガジェット識別に応答して、構造のアレイが生成され、アレイの各構造は、それぞれのECU70のECUモデル150を含む。ステージ2130において、ステージ2120の構造アレイは、検査プログラム35のデータセクションに追加される。ガジェット構造アレイが検査プログラム35のデータセクションにすでに含まれている場合、ガジェット構造アレイは新しい構造アレイで更新される。
【0040】
図4は、LINUXプロジェクトにECUモデル150を追加する方法の高レベルの概要図を示す。ステージ3000では、ECUのバイナリがスキャンされてガジェットが識別される。ステージ3010では、ステージ3000のガジェット識別に応答して、構造のアレイが生成され、アレイの各構造は、それぞれのECU70のECUモデル150を含む。ステージ3020において、ガジェット構造アレイは、ROP攻撃保護システム20のソースコードに追加される。ガジェット構造アレイがROP攻撃保護システム20のソースコードにすでに存在する場合、構造アレイはステージ3010の新しい構造アレイで更新される。ステージ3030では、更新されたガジェット構造アレイを含むROP攻撃保護システム20のソースコードがコンパイルされて、共有オブジェクトが作成される。ステージ3040では、ステージ3030の共有オブジェクトがLINUXプロジェクトにロードされる。1つの代替的な実施形態では、ROP攻撃保護システム20は、LINUXプロジェクトにロードされることなく、別々に実行される。特に、LINUXシステムは、ネットワークデータトラフィックの表示を可能にするライブラリを提供する。
【0041】
図5は、特定の実施形態による、ROP攻撃保護方法の高レベルのフローチャートを示す。ステージ4000において、複数のECUのうちの1つに向けられたデータが受信される。ステージ4010において、ステージ4000のデータの宛先、すなわち、データが複数のECUのうちのどれに向けられているかを決定する。ステージ4020では、ステージ4010の宛先ECUに関連付けられた固有のモデルに応答して、受信されたデータが分析されて、システムメモリの所定のアドレスへの1つ以上の制御フロー命令を識別する。一実施形態では、上述したように、システムメモリ内の所定のアドレスのそれぞれはガジェットを含むが、これは、決して限定することを意味するものではない。別の実施形態では、システムメモリ内の所定のアドレスのそれぞれは、ガジェット以外の所定のタイプのコードを含む。
【0042】
ステージ4030では、ステージ4020の識別された制御フロー命令に応答して、識別された制御フロー命令の統計分析が生成される。一実施形態では、統計分析は、受信されたデータ内の所定のウィンドウ上の所定のアドレスへの識別された制御フロー命令の数を含む。別の実施形態では、統計分析は、識別された制御フロー命令のチェーン内の識別された制御フロー命令の数を含む。ステージ4040では、ステージ4030の統計分析に応答して、ROP攻撃の存在が検出される。一実施形態では、ROP攻撃は、所定のウィンドウ値よりも大きい所定のウィンドウ内の所定のアドレスへの識別された制御フロー命令の数に応答して検出される。別の実施形態では、ROP攻撃は、識別された制御フロー命令のチェーン内の識別された制御フロー命令の数が所定のチェーン値よりも大きいことに応答して検出される。一実施形態では、ROP攻撃の検出は、それぞれのECUの固有のモデルにさらに応答する。1つのさらなる実施形態では、上述したように、所定のチェーン値、所定のウィンドウ値、ならびに/またはウィンドウ内の識別された制御フロー命令の数およびチェーン内の識別された制御フロー命令の数の両方の所定の機能は、それぞれのECUの固有モデルの情報に応答する。
【0043】
ステージ4050では、ステージ4040の検出された攻撃に応答して、ROP攻撃の存在を示す信号が出力される。任意選択のステージ4060では、ステージ4050の出力信号に応答して、データがステージ4000の複数のECUに転送されるのをブロックするためにDCUを制御する。
【0044】
明確にするために別個の実施形態に関連して説明される本発明のある特定の特徴は、単一の実施形態に組み合わせて提供することもできることが理解される。逆に、簡略化のために単一の実施形態の文脈で説明される本発明の様々な特性もまた、別個にまたは任意の好適な下位の組み合わせで提供され得る。
【0045】
別段に定義されない限り、本明細書で使用されるすべての専門用語および/または科学用語は、本発明が帰属する技術分野の当業者によって一般に理解されるのと同意を有する。本明細書に説明されているものと同様または同等の方法を本発明の実施または試験に使用することができるが、本明細書には好適な方法が記載されている。
【0046】
本明細書で言及されるすべての刊行物、特許出願、特許、および他の参考文献は、それらの全体が参照によって組み込まれる。矛盾する場合は、定義を含む本特許明細書が優先される。さらに、材料、方法、および例は、単なる例示であり、必ずしも限定することを意図していない。
【0047】
当業者には、本発明が、上で特に示され説明されたものによって限定されないことが理解されよう。むしろ、本発明の範囲は、添付の特許請求の範囲によって定義され、上記の様々な特徴の組み合わせおよび下位の組み合わせの両方、ならびに前述の説明を読んだときに当業者に生じるであろうそれらの変形および修正を含む。
【国際調査報告】