Windowsの最新リリヌスのASLR

MSが正しく述べおいるように、この技術は攻撃の開発をはるかに高䟡なむベントにしたす。なぜなら、攻撃者は゜フトりェアの脆匱性を悪甚するこずに加えお、操䜜時に予枬可胜なメモリアドレスに䟝存する必芁があり、ASLRはそれを奪うからです。 ご芧のずおり、最近、最新のWindows 8 / 8.1のリリヌスを含め、MSはこの機胜をシステムに展開するためにより深刻なアプロヌチを取るこずを決定したした。 狭い意味で、ASLRが再起動のたびに予枬䞍可胜なアドレスにむメヌゞを移動するだけであるず理解される堎合、より䞀般的な意味で、システムレベルでのこの機䌚は、システムラむブラリおよび他のシステムオブゞェクトの機胜の特定のアドレスに固執する機䌚を攻撃者から奪うはずですASLRバむパス緩和/アドレス空間情報開瀺匷化、DEPROPをバむパスしお実行できる数十バむトのシェルコヌド。



ほずんどすべおの人に既に知られおいるASLRの歎史に぀いおは觊れたせん。Microsoftが䞻力のWindows 7-8-8.1でASLRを改善するために䜿甚しおいる、あたり明らかではない機胜のみに泚目したす。



ASLRルヌル



Microsoftは、ASLRに関しおDEPず同様のアプロヌチを䜿甚しおいたす。぀たり、アプリケヌションがサポヌト付きでコンパむルされおいる堎合、必芁に応じおDELRを䜿甚できたす。 この手法は、プログラムが䞍適切に応答する可胜性のあるテクノロゞで実行される堎合に発生する可胜性がある明らかな互換性の問題を考慮しお適甚されたす。 しかし、ASLRの堎合、この状況はより倚くの制限ずずもに機胜したす。 たずえば、Windows 8 / 8.1の最新版では、サポヌト付きでコンパむルされおいるかどうかに関係なく、アプリケヌションでDEPが垞に有効になっおいたす少なくずも64ビットプロセッサ䞊で、OSおよびブヌトロヌダヌパラメヌタヌのビット深床に関係なく。 ASLRでは、状況は異なりたす。Windows8 / 8.1で実行しおいる堎合でも、アプリケヌション自䜓によるサポヌトのルヌルに䟝存し、ヘッダヌにこのフラグがない堎合、画像のランダム化は含たれたせん。



攻撃者は、たずえば、サポヌトされおいるすべおのOSで動䜜する安定したROPチェヌンを実装するために、ASLRサポヌト付きでコンパむルされおいないシステムラむブラリを独自の目的で利甚できたす。 近幎の慣䟋が瀺すように、この機䌚は暙的型攻撃の組織で耇数回䜿甚されたした。 以䞋は、RCEドラむブバむダりンロヌドのようなむンザワむルドの脆匱性が悪甚されおいたす。







ご芧のずおり、MS Officeラむブラリhxds.dllはASLROffice 2007-2010をサポヌトしおおらず、攻撃者は倉曎されおいないダりンロヌドアドレスを䜿甚しお脆匱性を悪甚するこずができたした。 12月のパッチ火曜日の䞀環ずしお、同瀟はこの監芖セキュリティ機胜バむパスず呌ばれるをMS13-106で終了し 、このバヌゞョンのOfficeで䜜業するWindowsナヌザヌに適切なレベルの保護を提䟛したした。







MSがWindows 8で導入した䞻なASLRサポヌト機胜の1぀は、Force ASLR機胜です。 この機胜は、システム党䜓のOptIn DEPポリシヌ蚭定に倚少䌌おいたす。 むメヌゞファむル実行オプションIFEOレゞストリキヌHKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution OptionsずMitigationOptionsパラメヌタヌを䜿甚しお、ナヌザヌはPE実行可胜ファむルのASLRを手動で有効にできたす。 次の衚は、ForceASLRを䜿甚しお、たたは䜿甚せずに実行可胜ファむルをメモリにロヌドするずきのOSの動䜜を瀺しおいたす。







オプションの曎新KB2639308をむンストヌルするず、Windows 7ナヌザヌも同様の機胜を利甚できたす。



Internet Explorer10+をより安党にするために、同瀟はブラりザヌアドレス空間ForceASLRに読み蟌たれたすべおのラむブラリヌに察するASLR匷制機胜Windows 8+およびKB2639308がむンストヌルされたWindows 7のサポヌトを導入したした。 したがっお、ラむブラリたたはプラグむンのいずれかがこの関数のサポヌトなしで元々コンパむルされた堎合、匷制的に適甚されたす。







攻撃者はWindowsを利甚しお、 VirtualAllocを介しおクラむアントプロセスに適切なサむズの隣接する領域を順番に割り圓おるこずにより、仮想メモリを操䜜する際に最適化を適甚したす。 アプリケヌションは、ボトムアップデフォルト、トップダりンMEM_TOP_DOWN、たたは固定アドレス関数で指定されたアドレスずしお仮想メモリのブロックを割り圓おる方法を芁求できたす。 既定では、Windowsはボトムアップの割り圓お方法を䜿甚したす。぀たり、䞋䜍アドレスから䞊䜍アドレスぞ、アプリケヌションに提䟛するために必芁なサむズのブロックを探したす。



Windows 8以降、ASLRは仮想メモリの割り圓おに圱響を䞎える可胜性がありたす。 Windows 8より前のバヌゞョンでは、ストリヌムスタックずTEBおよびPEBのブロックを予玄するずきに、ヒヌプにメモリブロックを割り圓おるためのポリシヌが既に適甚されおいたした。 最埌の2぀の構造は、さたざたなシステム機胜ぞの䞀定数のポむンタヌを朜圚的に含み、メモリ内のラむブラリの堎所を明らかにするため、攻撃者にずっお非垞に圹立ちたす。 Windows 8では、 VirtualAllocはトップダりンずボトムアップの遞択オプションも区別したすが、これらの割り圓おの開始のベヌスアドレスは、OSが起動するたびにASLRによっお固定されたす。぀たり、予枬するこずはできたせん。 アドレス空間では、高速の断片化によりメモリをたったくランダムに割り圓おるこずができないこずは明らかです。したがっお、プロセスのブロック割り圓おの開始のベヌスアドレスが蚘録されるのはASLRを通じおです。 プロセスのMSによるず、このオプションは、ASLRがその実行可胜ファむル / DYNAMICBASE によっお適切にサポヌトされおいる堎合にのみ有効になりたす。



高゚ントロピヌASLR



ASLRは、64ビットアドレス空間でより効率的に機胜する可胜性がありたす。そのような倧きなアドレス空間では、任意のメモリ割り圓おの機䌚がはるかに倚いためです。 明らかに、その䜿甚自䜓はすでにヒヌプスプレヌの耇雑な芁因です。 Internet Explorer EPM for Windows 7 x64を参照しおください。 同時に、Windows 8たでのOSは、x64䞊のASLRを最も完党な方法で䜿甚したせん。 これは䞻に、゚ントロピヌの可胜性぀たり、ランダム性の床合い/アドレス遞択の予枬可胜性ず、この堎所のランダム性を蚈算するためにアドレスのビット数が䜿甚されるこずに関するものです。 Windows 8では、この機胜は高゚ントロピヌランダム化ず呌ばれたす。







Windows 8以降には、高゚ントロピヌランダム化を実装する機胜が含たれおおり、このテクノロゞヌは、プロセスによっお割り圓おられた仮想メモリブロックずダりンロヌド可胜な実行可胜ファむルの䞡方に拡匵されたす。 / LARGEADDRESSAWAREフラグを䜿甚しおコンパむルされた64ビットアプリケヌションの堎合、Windows 8は䜿甚するために8 TBの仮想メモリを割り圓おたすWindows 8.1では128 TB。 比范のために、32ビットアプリケヌションでは、アドレススペヌスのナヌザヌ郚分のサむズは2 GBに制限されおいたす。 この堎合、高゚ントロピヌランダム化機胜により、゚ントロピヌを取埗するための24ビットのアドレスず゚ントロピヌのための17ビットのアドレスのトップダりン割り圓おを䜿甚しお、ボトムアップメモリ​​割り圓おのベヌスアドレスにASLRを䜿甚できたす。 このASLRレベルを䜿甚し、ボトムアップ遞択を䜿甚する堎合デフォルト、64ビットアプリケヌションを/ HIGHENTROPYVAおよび/ DYNAMICBASEフラグを 䜿甚しおコンパむルする必芁がありたす。







/ HIGHENTROPYVA自䜓は、OSでHEASLRを䜿甚するOptIn制限モヌドずしお䜿甚されるこずに泚意しおください。 ぀たり、Windows 8での通垞の動䜜ボトムアップブロック割り圓おのVirtualAllocは、このフラグなしでコンパむルされたアプリケヌションに察しお匷化されたASLRを䜿甚したせん。 この制限は、このような状況でのこれらのアプリケヌションの互換性の問題ず予想される予期しない動䜜に関連しおいたす。 䞊蚘のように、高゚ントロピヌランダム化機胜は64ビットの実行可胜ファむルにも適甚できたす。



Internet Explorer 10以降は、高゚ントロピヌASLRx64モヌドを䜿甚したす。 Windows 8で実行䞭のプロセスのプロパティを以䞋に瀺したすが、MicrosoftがWindows 8に同梱するすべおのシステム実行可胜ファむルはHEASLRを䜿甚したす。







ASLRバむパスの緩和別名アドレス空間情報開瀺匷化



Windows 8のリリヌスに䌎い、同瀟はシステム機胜ずオブゞェクトのさたざたなアドレスを非衚瀺にする戊略を詊みたした。 これらの機胜の䞀郚は、Windows 7の曎新ずしお提䟛されたした。アドレスを攻撃するための予枬可胜なアドレスにこのような情報が存圚するず、既存のDEPおよびASLRテクノロゞヌの機胜が倧幅に䜎䞋し、攻撃者が攻撃に成功する可胜性が高たりたす。



顕著な䟋の1぀はMS13-031曎新プログラムで、これはれロペヌゞメモリ割り圓お制限Windows 7以降を導入したす。 このペヌゞにコヌドを配眮し、ドラむバヌの脆匱性を悪甚するず、攻撃者はLPEずしお䜿甚したす。぀たり、特暩をシステム特暩に䞊げ、コヌドをカヌネルモヌドで実行したす。 カヌネルは、 EPROCESSLowVaAccessibleフィヌルドを䜿甚しお、このような状況を芏制したす。぀たり、仮想メモリの領域を予玄できる最小アドレスを怜出したす。



別の䟋は、Windows Vista +デフォルトではWindows 8甚のMS13-063曎新です。 この曎新により、 ntdllぞのポむンタヌが削陀されたすLdrHotPatchRoutineはUserSharedDataKUSER_SHARED_DATAから削陀され、攻撃者が必芁ずするラむブラリをすばやくメモリにロヌドするために䜿甚されたした。 UserSharedDataは、すべおのプロセスで同じアドレスで䜿甚可胜であり、カヌネルモヌドでも䜿甚されるため、攻撃者にずっお非垞に䟿利です。



Windows 8.1では、信頌できないアプリケヌション敎合性レベル<䞭のカヌネルオブゞェクトのアドレスに関する情報を隠すこずが可胜になりたした。 この関数の詳现に぀いおは、 こちらをご芧ください 。 重芁なntoskrnl関数は、さたざたなカヌネルオブゞェクトのアドレスに関する情報を芁求するず、゚ラヌステヌタスを返したす。



PS Microsoftの無料のBinScopeツヌルを䜿甚しお、ASLRサポヌトのプログラムのモゞュヌルを確認できたすiTunesが䟋ずしお取り䞊げられおいたす。











blogs.technet.com/b/srd/archive/2013/12/11/software-defense-mitigating-common-exploitation-techniques.aspx



All Articles