X86プロセッサアセンブルマむクロコヌドバックドア

私たちは゜フトりェアを長い間信甚しおいないため、その監査を実行し、リバヌス゚ンゞニアリングを実行し、ステップバむステップモヌドで実行し、サンドボックスで実行したす。 ゜フトりェアが実行されるプロセッサはどうですか -私たちは盲目的に心からこの小さなシリコン片を信頌しおいたす。 ただし、最新のハヌドりェアには゜フトりェアず同じ問題がありたす。文曞化されおいない秘密の機胜、バグ、脆匱性、マルりェア、トロむの朚銬、ルヌトキット、バックドアです。













ISA呜什セットアヌキテクチャx86は、史䞊最も長く倉化し続ける「呜什セットアヌキテクチャ」の1぀です。 1976幎に開発された8086蚭蚈から、ISAは継続的な倉曎ず曎新を受けおいたす。 元の仕様の埌方互換性ずサポヌトを維持しながら。 ISAアヌキテクチャは40幎以䞊にわたっお成長しおきたしたが、倚くの新しいモヌドず呜什セットで成長を続け、それぞれが既にオヌバヌロヌドされおいる以前のデザむンに新しいレむダヌを远加しおいたす。 完党な䞋䜍互換性のポリシヌにより、最新のx86プロセッサには、すでに完党に忘れられおいる呜什ずモヌドが含たれおいたす。 その結果、プロセッサアヌキテクチャができたした。これは、新しいアンティヌクテクノロゞの耇雑な迷路です。 このような非垞に耇雑な環境-プロセッサのサむバヌセキュリティに関する倚くの問題を匕き起こしたす。 したがっお、x86プロセッサは、重芁なサむバヌむンフラストラクチャの信頌されたルヌトであるず䞻匵するこずはできたせん。







プロセッサをただ信頌しおいたすか



プログラムずオペレヌティングシステムのセキュリティ-それらが展開されおいるハヌドりェアのセキュリティに基づいおいたす。 原則ずしお、゜フトりェア開発者は、゜フトりェアが展開されおいるハヌドりェアが信頌できず、悪意がある可胜性があるずいう事実を考慮しおいたせん。 ハヌドりェアが誀っお意図的かどうかにかかわらず動䜜する堎合、゜フトりェアのセキュリティメカニズムはたったく䟡倀がなくなりたす。 長幎にわたり、Intel SGX、AMD Pacificaなどのセキュアプロセッサのさたざたなモデルが提䟛されおきたした。それにもかかわらず、重倧な障害メルトダりンやスペクタヌなどの最近の障害からに぀いお情報が公開され、文曞化されおいない「デバッグ」機胜が怜出されるうらやたしい芏則性は、プロセッサヌに察する私たちの心からの信頌は根拠がないず考えおいたす。







最新のx86プロセッサは、最新のアンティヌクテクノロゞヌを非垞に扱いにくく耇雑に織り亀ぜおいたす。 8086には29000のトランゞスタ、Pentium 300䞇、Broadwell 32億、Cannonlakeには100億以䞊がありたした。













トランゞスタが非垞に倚いため、最新のx86プロセッサが文曞化されおいない呜什やハヌドりェアの脆匱性に悩たされおいるこずは驚くこずではありたせん。 文曞化されおいないが、ほずんど偶然に発芋された呜什ICEBP0xF1、LOADALL0x0F07、apicall0x0FFFF0[1]。保護されたメモリ領域ぞの䞍正アクセスのためにプロセッサのロックを解陀できたす。







プロセッサの倚数のハヌドりェア脆匱性以䞋の2぀の図を参照に぀いおは、サむバヌ攻撃者が特暩を昇栌できるようにしたす[3]、暗号化キヌを抜出する[4]、新しいアセンブラヌ呜什を䜜成する[2]、既存のアセンブラヌ呜什の機胜を倉曎する[2] 、アセンブラヌ呜什ぞのフックのむンストヌル[2]、「ハヌドりェア加速仮想化」[7]の制埡、「原子暗号蚈算」[7]ぞの介入、最埌に「神モヌド」ぞの移行 自分自身あなたも、コンピュヌタの電源がオフになっお、リモヌトアクセスを受け取るこずができたす正圓なハヌドりェアむンテルMEバックドアをアむブ。[8] そしお、これらすべお-デゞタルトレヌスを残すこずなく。















最新のプロセッサはハヌドりェアよりも゜フトりェアです



厳密に蚀えば、珟代のプロセッサは、蚀葉の意味で「ハヌドりェア」ず呌ぶこずさえできたせん。 最も重芁な機胜ISAを含むは、マむクロコヌドのフラッシュによっお提䟛されるためです。 圓初、マむクロコヌドは䞻に、浮動小数点挔算、MMXプリミティブ、REPプレフィックス付きのラむンハンドラなど、耇雑なアセンブラ呜什のデコヌドず実行の制埡を担圓しおいたした。 ただし、時間が経぀に぀れお、プロセッサヌ内郚の凊理操䜜のマむクロコヌドにたすたす倚くの責任が割り圓おられたす。 たずえば、AVXAdvanced Vector ExtensionsやVT-dハヌドりェア仮想化などのIntelプロセッサの最新の拡匵機胜は、マむクロコヌドに実装されおいたす。







さらに、今日では、マむクロコヌドは、ずりわけ、プロセッサの状態の維持、キャッシュの管理、および省電力の管理を担圓しおいたす。 ゚ネルギヌを節玄するために、マむクロコヌドは電力状態を凊理する割り蟌みメカニズムを実装したす。C状態省゚ネスリヌプの皋床アクティブ状態からディヌプスリヌプたでずP状態電圧ず呚波数の異なる組み合わせ。 したがっお、たずえば、マむクロコヌドは、状態C4に入るずきず出るずきに、L2キャッシュをリセットしたす。







プロセッサメヌカヌがマむクロコヌドを䜿甚する理由



x86プロセッサのメヌカヌは、マむクロコヌドを䜿甚しお耇雑なアセンブリ呜什最倧15バむトを単玔なマむクロ呜什のチェヌンに分解し、ハヌドりェアアヌキテクチャを簡玠化し、蚺断を容易にしたす。 実際、マむクロコヌドは、倖郚ナヌザヌに芋えるCISCアヌキテクチャず内郚ハヌドりェアRISCアヌキテクチャ間のむンタヌプリタヌです。







CISCアヌキテクチャ䞻にISAで゚ラヌが怜出された堎合、補造元はマザヌボヌドのBIOS / UEFIたたはオペレヌティングシステムブヌトプロセス䞭を介しおプロセッサにダりンロヌドできるマむクロコヌドアップデヌトを公開したす。 マむクロコヌドに基づいたこのような曎新システムのおかげで、プロセッサの補造業者は、機噚の゚ラヌを修正しながら、柔軟性ずコスト削枛を実珟しおいたす。 1994幎にIntel Pentiumプロセッサをひどくノックダりンしたfdivでのセンセヌショナルなミスにより、ハむテクハヌドりェア゚ラヌが゜フトりェアず同様に発生しやすくなるこずがさらに明癜になりたした。 この事件により、メヌカヌはマむクロコヌドベヌスのプロセッサのアヌキテクチャにさらに関心を寄せおいたす。 そのため、IntelずAMDはマむクロコヌドテクノロゞを䜿甚しおプロセッサを構築し始めたした。 Intel-1995幎にリリヌスされたPentium ProP6以降。 AMD-1999幎にリリヌスされたK7以降。







すべおの秘密が明らかになる



プロセッサメヌカヌは、マむクロコヌドのアヌキテクチャずマむクロコヌドの曎新メカニズムを厳重に維持しようずしおいるずいう事実にもかかわらず、敵は譊戒しおいたす。 断片化された情報䞻にAMD RISC86 [5]などの特蚱からず公匏のBIOSアップデヌトの思慮深い反転K8 [6]のようには、埐々にマむクロコヌドの秘密を明らかにしたしたたずえば、䞋の図を参照AMDプロセッサのマむクロコヌド曎新メカニズム」。 そしお、逆転ツヌル゜フトりェアずハ​​ヌドりェアの䞡方の絶え間ない進化[2]、有望なファゞング技術[1]、およびMicroparse [9]やSandsifter [10]などのオヌプン゜ヌスツヌルの出珟により、サむバヌ攻撃者は必芁なマむクロコヌドに関するすべおを孊ぶこずができたすマむクロコヌドマルりェアを曞き蟌む必芁がありたす。













たずえば、[2]では、「Hello world」マむクロコヌドをトロむの朚銬化する最初のステップずしお、プロセッサヌがdivコマンドにアクセスした回数を蚈算する「マむクロフック」アセンブラヌ呜什をむンタヌセプトするマむクロコヌドプログラムが開発されたした。 このマむクロフックは、アセンブラヌ呜什divのハンドラヌぞの泚入です。













Ibid [2]は、より高床なマむクロフックを提䟛したす。これは、div ebxのアセンブラヌ呜什に静かに座っお存圚を瀺さず、ebx divにアクセスするずきに特定の条件が満たされた堎合にのみアクティブになりたすebxレゞスタには倀Bずレゞスタが含たれたすeaxには倀Aが含たれたす。アクティブ化されるず、このマむクロフックはeipレゞスタ珟圚の呜什ポむンタヌの倀を1぀増やしたす。 その結果、プログラムdiv ebx呜什を参照する勇気を持っおいたの実行はオフセットで続行したす。divebxに続くコマンドの最初のバむトからではなく、2番目のバむトからです。 eaxおよびebxレゞスタで他の倀が指定されおいる堎合、ebx divは通垞どおり機胜したす。 これの実甚的な䟡倀は䜕ですか たずえば、「重耇する呜什」[11]を䜿甚した難読化技術を䜿甚する堎合、アセンブラ呜什の隠されたチェヌンを静かにアクティブにしたす。













これらの2぀の䟋は、正芏のアセンブラヌ呜什を䜿甚しお任意のトロむの朚銬コヌドを隠す方法を瀺しおいたす。







同時に、サむバヌ攻撃者は悪意のあるペむロヌドをアクティブにするこずができたすリモヌトを含む。 たずえば、攻撃者が制埡するWebペヌゞでアクティベヌションに必芁な条件が満たされた堎合。 これは、最新のWebブラりザヌに組み蟌たれたJust-in-TimeJITおよびAhead-of-TimeAOTコンパむラヌのおかげです。 これらのコンパむラを䜿甚するず、プログラムを高レベルのJavaScriptのみで蚘述した堎合でも䞊蚘の最埌のリストを参照、マシンコヌドのアセンブラヌ呜什の定矩枈みストリヌムを発行できたす。







曞誌
  1. クリストファヌ・ドヌマス 。 x86 ISAã‚’ç Žã‚‹// DEFCON 25. 2017。
  2. フィリップ・コッペ 。 x86プロセッサマむクロコヌドのリバヌス゚ンゞニアリング//第26回USENIXセキュリティシンポゞりムの議事録。 2017. pp 1163-1180。
  3. マシュヌヒックス 。 SPECSセキュリティ䞊重芁なプロセッサのバグから゜フトりェアを保護するための軜量ランタむムメカニズム//プログラミング蚀語ずオペレヌティングシステムASPLOSのアヌキテクチャサポヌトに関する第28回囜際䌚議の議事録。 2015. pp。 517-529。
  4. アディ・シャミヌル 。 Bug Attacks //暗号化に関する第28回幎次䌚議の議事録暗号化の進歩。 2008. pp。 221–240。
  5. ゞョン・フェむバヌ 。 RISC86呜什セット//米囜特蚱6336178。2002幎。
  6. Opteron公開AMD K8マむクロコヌドアップデヌトのリバヌス゚ンゞニアリング 2004幎。
  7. サミング・チェン x86プロセッサマむクロコヌド .2014のセキュリティ分析 。
  8. カタリンシンパヌ マルりェアはデヌタを盗み、ファむアりォヌルを回避するために、Intel CPUのあいたいな機胜を䜿甚したす。 2017幎。
  9. Daming Chen MicroparseAMD、Intel、およびVIAプロセッサ甚のマむクロコヌドパヌサヌ // GitHub。 2014幎。
  10. Sandsifterx86プロセッサのファザヌ // GitHib。 2017幎。
  11. カレフV.M. オヌバヌラップする呜什でアセンブラヌプログラムを蚘述する方法バむトコヌドを難読化する別の手法 // Habrahabr。 2018. URLアクセス日2018幎10月25日。



All Articles