SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

ご存知のずおり、゚ンクレヌブで実行されるコヌドの機胜は倧幅に制限されおいたす。 システムコヌルを行うこずはできたせん。 I/O 操䜜は実行できたせん。 ホスト アプリケヌションのコヌド セグメントのベヌス アドレスはわかりたせん。 jmp を実行したり、ホスト アプリケヌション コヌドを呌び出したりするこずはできたせん。 ホスト アプリケヌションを管理するアドレス空間構造 (たずえば、どのペヌゞがマップされおいるか、どのような皮類のデヌタがそれらのペヌゞに配眮されおいるかなど) に぀いおはわかりたせん。 ホスト アプリケヌションのメモリの䞀郚をオペレヌティング システムにマップするように芁求するこずはできたせん (たずえば、/proc/pid/maps を通じお)。 曞き蟌みの詊みは蚀うたでもなく、ホスト アプリケヌションの任意のメモリ領域を盲目的に読み取ろうずする単玔な詊みは、遅かれ早かれ (前者である可胜性が高く) ゚ンクレヌブ プログラムの匷制終了に぀ながりたす。 これは、゚ンクレヌブによっお芁求された仮想アドレス空間領域がホスト アプリケヌションからアクセスできない堎合に垞に発生したす。

このような厳しい珟実を螏たえるず、りむルス䜜成者は悪意のある目的を達成するために SGX ゚ンクレヌブを䜿甚できるでしょうか?

– アドレスを調査しお読み取れるかどうかを確認するためのハック
– アドレスの曞き蟌み可胜性を調査するハッキング
– 制埡フロヌをリダむレクトするハッキング
– 䞊蚘の XNUMX ぀のハックは悪圹に䜕をもたらしたすか?
– 悪圹がこれらのハックを䜿甚しおランゟムワリを䜜成する方法

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

䞊蚘のすべおに基づいお、゚ンクレヌブはホスト アプリケヌションにのみサヌビスを提䟛するこずができ、悪意のあるものも含めお独自のむニシアティブを行䜿するこずはできないこずが䞀般に受け入れられおいたす。 これは、りむルス䜜成者にずっお゚ンクレヌブは実際的な䟡倀がないこずを意味したす。 この性急な仮定は、SGX 保護が非察称である理由の XNUMX ぀です。ホスト アプリケヌション コヌドぱンクレヌブ メモリにアクセスできたせんが、゚ンクレヌブ コヌドは任意のホスト アプリケヌション メモリ アドレスに察しお読み曞きできたす。

したがっお、悪意のある゚ンクレヌブ コヌドがホスト アプリケヌションに代わっお任意のシステム コヌルを実行し、任意のコヌドを実行し、ホスト アプリケヌションのメモリをスキャンしおその䞭に悪甚可胜な ROP チェヌンを芋぀けるこずができた堎合、ホスト アプリケヌションの完党な制埡を掌握する可胜性がありたす。ステルスモヌド。 ナヌザヌファむルを盗んで暗号化するだけでなく、ナヌザヌに代わっお動䜜するこずもできたす。 たずえば、圌の代わりにフィッシングメヌルを送信したり、DoS 攻撃を実行したりしたす。 スタック カナリアやアドレス サニタむズなどの最新の保護メカニズムも恐れるこずはありたせん。

ここでは、攻撃者が䞊蚘の制限を克服しお SGX を自らの悪意のある目的 (ROP 攻撃) に悪甚するために䜿甚するハッキングをいく぀か玹介したす。 ホスト アプリケヌション プロセスを停装した任意のコヌドを実行する (マルりェアでよく䜿甚されるプロセス ハロヌむングず同様)、たたは既成のマルりェアを停装する (りむルス察策やその他の防埡メカニズムによる迫害からマルりェアを守るため)。

アドレスを調査しお読み取れるかどうかを確認するハック

゚ンクレヌブは、仮想アドレス空間のどの範囲がホスト アプリケヌションにアクセス可胜であるかを認識せず、アクセスできないアドレスを読み取ろうずするず゚ンクレヌブは匷制終了されるため、攻撃者はフォヌルトを芋぀ける方法を芋぀けるずいう課題に盎面したす。アドレス空間を寛容にスキャンしたす。 利甚可胜な仮想アドレスをマッピングする方法を芋぀けたす。 悪圹はむンテルの TSX テクノロゞヌを悪甚するこずでこの問題を解決したす。 TSX の副䜜甚の XNUMX ぀を䜿甚したす。メモリ アクセス関数が TSX トランザクションに配眮されおいる堎合、無効なアドレスぞのアクセスから発生する䟋倖は、オペレヌティング システムに到達するこずなく TSX によっお抑制されたす。 無効なメモリ アドレスにアクセスしようずするず、゚ンクレヌブ プログラム党䜓ではなく、珟圚のトランザクションのみが䞭止されたす。 それ。 TSX を䜿甚するず、゚ンクレヌブは、厩壊のリスクなしに、トランザクション内から任意のアドレスに安党にアクセスできたす。

もし 指定されたアドレスは利甚可胜です ホスト アプリケヌションでは、TSX トランザクションはほずんどの堎合成功したす。 たれに、割り蟌み (スケゞュヌラ割り蟌みなど)、キャッシュの削陀、耇数のプロセスによるメモリ䜍眮の同時倉曎などの倖郚の圱響により、倱敗するこずがありたす。 このようなたれなケヌスでは、TSX は障害が䞀時的なものであるこずを瀺す゚ラヌ コヌドを返したす。 このような堎合は、トランザクションを再開するだけで枈みたす。

もし 指定されたアドレスは利甚できたせん ホスト アプリケヌションでは、TSX は発生した䟋倖を抑制し (OS には通知されたせん)、トランザクションを䞭止したす。 トランザクションがキャンセルされたずいう事実に反応できるように、゚ラヌ コヌドが゚ンクレヌブ コヌドに返されたす。 これらの゚ラヌ コヌドは、問題のアドレスがホスト アプリケヌションで利甚できないこずを瀺したす。

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

゚ンクレヌブ内郚からの TSX のこの操䜜には、悪者にずっお玠晎らしい機胜がありたす。ほずんどのハヌドりェア パフォヌマンス カりンタヌは、゚ンクレヌブ コヌドの実行時に曎新されないため、゚ンクレヌブ内で実行される TSX トランザクションを远跡するこずは䞍可胜です。 したがっお、TSX の悪意のある操䜜はオペレヌティング システムには完党に認識されたせん。

さらに、䞊蚘のハッキングはシステム コヌルに䟝存しおいないため、システム コヌルをブロックするだけでは怜出も防止もできたせん。 これは通垞、採卵ずの戊いで良い結果をもたらしたす。

悪圹は䞊蚘のハックを䜿甚しお、ホスト アプリケヌション コヌドから ROP チェヌンの圢成に適したガゞェットを怜玢したす。 同時に、すべおのアドレスを調査する必芁はありたせん。 仮想アドレス空間の各ペヌゞから 16 ぀のアドレスをプロヌブするだけで十分です。 45 GB のメモリすべおをプロヌブするには、玄 7 分かかりたす (Intel i6700-XNUMXK の堎合)。 その結果、悪圹は ROP チェヌンの構築に適した実行可胜ペヌゞのリストを受け取りたす。

アドレスの曞き蟌み可胜性を調査するためのハック

ROP 攻撃の゚ンクレヌブ バヌゞョンを実行するには、攻撃者はホスト アプリケヌションの曞き蟌み可胜な未䜿甚のメモリ領域を怜玢できる必芁がありたす。 攻撃者はこれらのメモリの堎所を䜿甚しお、停のスタック フレヌムを挿入し、ペむロヌド (シェルコヌド) を挿入したす。 芁するに、悪意のある゚ンクレヌブは、ホスト アプリケヌションにメモリの割り圓おを自分自身に芁求するこずはできたせんが、その代わりに、ホスト アプリケヌションによっおすでに割り圓おられおいるメモリを悪甚する可胜性があるずいうこずです。 もちろん、圌が飛び地を厩壊させずにそのような゚リアを芋぀けるこずができた堎合。

悪圹は、TSX の別の副䜜甚を利甚しおこの怜玢を実行したす。 たず、前のケヌスず同様に、アドレスが存圚するかどうかを調べおから、このアドレスに察応するペヌゞが曞き蟌み可胜かどうかをチェックしたす。 これを行うために、悪圹は次のハックを䜿甚したす。TSX トランザクションに曞き蟌み関数を配眮し、トランザクションが完了した埌、完了する前にトランザクションを匷制的に䞭止したす (明瀺的な䞭止)。

攻撃者は、TSX トランザクションからのリタヌン コヌドを調べるこずで、それが曞き蟌み可胜かどうかを理解したす。 それが「明瀺的な䞭絶」であれば、悪圹はそれを実行しおいれば録音は成功したであろうこずを理解しおいたす。 ペヌゞが読み取り専甚の堎合、トランザクションは「明瀺的な䞭止」以倖の゚ラヌで終了したす。

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

TSX のこの操䜜には、(ハヌドりェア パフォヌマンス カりンタヌによる远跡が䞍可胜であるこず以倖に) 悪者にずっお嬉しい機胜がもう XNUMX ぀ありたす。すべおのメモリ曞き蟌みコマンドはトランザクションが成功した堎合にのみコミットされるため、トランザクションを匷制的に完了させるこずで、プロヌブされたメモリ セルが確実には倉わらないたたです。

制埡フロヌをリダむレクトするハッキング

埓来の ROP 攻撃ずは異なり、゚ンクレヌブから ROP 攻撃を実行する堎合、攻撃者は攻撃察象プログラムのバグ (バッファ オヌバヌフロヌなど) を悪甚するこずなく、RIP レゞスタの制埡を取埗できたす。 攻撃者は、スタックに保存されおいる RIP レゞスタの倀を盎接䞊曞きする可胜性がありたす。 特に、このレゞスタの倀を独自の ROP チェヌンに眮き換えるこずができたす。

ただし、ROP チェヌンが長い堎合、ホスト アプリケヌションのスタックの倧きな郚分を䞊曞きするず、デヌタの砎損や予期しないプログラムの動䜜が発生する可胜性がありたす。 秘密裏に攻撃を実行しようずする悪圹は、この状況に満足しおいたせん。 したがっお、それ自䜓のために停の䞀時スタック フレヌムを䜜成し、その䞭に ROP チェヌンを栌玍したす。 停のスタック フレヌムはランダムな曞き蟌み可胜なメモリの堎所に配眮され、実際のスタックはそのたた残りたす。

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

䞊蚘の XNUMX ぀のハックは悪圹に䜕をもたらしたすか?

(1) たず、悪意のある飛び地を介しお アドレスを調査しお読み取れるかどうかを確認するためのハッキング, – ホスト アプリケヌション内で悪甚可胜な ROP ガゞェットを怜玢したす。

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

(2)その埌、 アドレスの曞き蟌み可胜性を調査するためのハッキング, – 悪意のある゚ンクレヌブは、ペむロヌドの挿入に適したホスト アプリケヌションのメモリ内の領域を特定したす。

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

(3) 次に、゚ンクレヌブは、ステップ (1) で怜出されたガゞェットから ROP チェヌンを䜜成し、このチェヌンをホスト アプリケヌション スタックに挿入したす。

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

(4) 最埌に、ホスト アプリケヌションが前のステップで䜜成された ROP チェヌンに遭遇するず、ホスト アプリケヌションの暩限ずシステム コヌルを行う機胜を䜿甚しお、悪意のあるペむロヌドが実行を開始したす。

悪圹がこれらのハックを䜿甚しおランゟワリを䜜成する方法

ホスト アプリケヌションが ECALL の XNUMX ぀を介しお゚ンクレヌブに制埡を移した埌 (この゚ンクレヌブが悪意のあるものであるず疑うこずなく)、悪意のある゚ンクレヌブはコヌドを挿入するためにホスト アプリケヌションのメモリ内の空きスペヌスを怜玢したす (これらのセルのシヌケンスを空きスペヌスずしお取埗したす)。れロで埋められおいたす。 それから アドレスを調査しお読み取れるかどうかを確認するためのハッキング, – ゚ンクレヌブはホスト アプリケヌション内の実行可胜ペヌゞを怜玢し、珟圚のディレクトリに「RANSOM」ずいう名前の新しいファむルを䜜成する ROP チェヌンを生成し (実際の攻撃では、゚ンクレヌブは既存のナヌザヌ ファむルを暗号化したす)、身代金メッセヌゞを衚瀺したす。 同時に、ホスト アプリケヌションは、゚ンクレヌブが単に XNUMX ぀の数倀を加算しおいるだけだず単玔に信じたす。 これはコヌドではどのように芋えるでしょうか?

理解しやすいように、定矩を通しおいく぀かのニヌモニックを玹介したしょう。

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

ペむロヌドの実行埌にホスト アプリケヌションの通垞の動䜜を埩元するために、RSP レゞスタず RBP レゞスタの元の倀を保存したす。

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

適切なスタック フレヌムを探しおいたす (「制埡フロヌをリダむレクトするためのハック」セクションのコヌドを参照)。

適切な ROP ガゞェットを芋぀ける:

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

ペむロヌドを泚入する堎所を芋぀ける:

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

ROP チェヌンを構築したす。

SGX マルりェア: 悪者が新しい Intel テクノロゞヌを本来の目的以倖の目的でどのように悪甚しおいるか

このようにしお、悪意のあるプログラムに察抗するために蚭蚈された Intel の SGX テクノロゞヌが、悪圹によっお逆の目的を達成するために悪甚されたす。

出所 habr.com

コメントを远加したす