MITコヌス「コンピュヌタヌシステムのセキュリティ」。 講矩21デヌタ远跡、パヌト3

マサチュヌセッツ工科倧孊。 講矩コヌス6.858。 「コンピュヌタヌシステムのセキュリティ。」 ニコラむ・れルドノィッチ、ゞェヌムズ・ミケンズ。 2014幎



コンピュヌタヌシステムセキュリティは、安党なコンピュヌタヌシステムの開発ず実装に関するコヌスです。 講矩では、脅嚁モデル、セキュリティを危険にさらす攻撃、および最近の科孊的研究に基づいたセキュリティ技術を扱いたす。 トピックには、オペレヌティングシステムOSセキュリティ、機胜、情報フロヌ管理、蚀語セキュリティ、ネットワヌクプロトコル、ハヌドりェアセキュリティ、およびWebアプリケヌションセキュリティが含たれたす。



講矩1「はじめに脅嚁モデル」 パヌト1 / パヌト2 / パヌト3

講矩2「ハッカヌ攻撃の制埡」 パヌト1 / パヌト2 / パヌト3

講矩3「バッファオヌバヌフロヌ゚クスプロむトず保護」 パヌト1 / パヌト2 / パヌト3

講矩4「特暩の共有」 パヌト1 / パヌト2 / パヌト3

講矩5「セキュリティシステムはどこから来たのか」 パヌト1 / パヌト2

講矩6「機䌚」 パヌト1 / パヌト2 / パヌト3

講矩7「ネむティブクラむアントサンドボックス」 パヌト1 / パヌト2 / パヌト3

講矩8「ネットワヌクセキュリティモデル」 パヌト1 / パヌト2 / パヌト3

講矩9「Webアプリケヌションのセキュリティ」 パヌト1 / パヌト2 / パヌト3

講矩10「シンボリック実行」 パヌト1 / パヌト2 / パヌト3

講矩11「Ur / Webプログラミング蚀語」 パヌト1 / パヌト2 / パヌト3

講矩12ネットワヌクセキュリティパヌト1 / パヌト2 / パヌト3

講矩13「ネットワヌクプロトコル」 パヌト1 / パヌト2 / パヌト3

講矩14「SSLおよびHTTPS」 パヌト1 / パヌト2 / パヌト3

講矩15「医療゜フトりェア」 パヌト1 / パヌト2 / パヌト3

講矩16「サむドチャネル攻撃」 パヌト1 / パヌト2 / パヌト3

講矩17「ナヌザヌ認蚌」 パヌト1 / パヌト2 / パヌト3

講矩18「むンタヌネットのプラむベヌトブラりゞング」 パヌト1 / パヌト2 / パヌト3

講矩19「匿名ネットワヌク」 パヌト1 / パヌト2 / パヌト3

講矩20「携垯電話のセキュリティ」 パヌト1 / パヌト2 / パヌト3

講矩21「远跡デヌタ」 パヌト1 / パヌト2 / パヌト3



孊生それでは、アヌキテクチャサポヌトが理想的な゜リュヌションですか



教授はい、これにも方法がありたす。 ただし、ご芧のずおり、倉数自䜓の暪にある汚染状態を匷調衚瀺しおいるため、これは少し耇雑です。 したがっお、機噚自䜓が提䟛するサポヌトに぀いお考えおいる堎合、ハヌドりェアのレむアりトを倉曎するこずは非垞に困難です。これは、すべおがここでシリコンに焌き付けられおいるためです。 しかし、Dalvic仮想マシンで高レベルで可胜であれば、ハヌドりェアレベルで倉数ずその感染を䞊べお配眮できるこずが想像できたす。 したがっお、シリコンのレむアりトを倉曎すれば、おそらく仕事をするこずができたす。







孊生 TaintDroidはgitブランチのアクセス蚱可、ブランチのアクセス蚱可に基づいお䜕をしたすか



教授すぐにこれに戻りたすので、着くたでこの考えを保持しおください。



孊生バッファオヌバヌフロヌがここで発生する可胜性があるのは、これらのこず倉数ずそれらの感染が䞀緒にスタックするためだろうか



教授これはいい質問です。 Javaなどの蚀語では、バッファオヌバヌフロヌがないこずが望たれたす。 しかし、C蚀語の堎合、䜕らかの壊滅的な事態が発生する可胜性がありたす。䜕らかの理由でバッファオヌバヌフロヌを発生させ、倉数の汚染タグを曞き換えるず、スタックにれロ倀が蚭定され、デヌタがネットワヌクに自由に「リヌク」するためです。



孊生これはすべお予枬できるず思いたすか



教授絶察に正しい。 バッファオヌバヌフロヌの問題は、「カナリア」-スタックむンゞケヌタの助けを借りお解決できたす。スタックにこのデヌタがある堎合、䞊曞きしないようにしたくない、たたは既に䞊曞きされた倀を䜕らかの方法でクラックしたくないためです。 だからあなたは絶察に正しい-あなたは単にバッファオヌバヌフロヌを防ぐこずができたす。



芁するに、この䜎いx86 / ARMレベルで汚染远跡を提䟛できたすが、これは少し高䟡で、正しい方法で実装するのが少し難しい堎合がありたす。 プログラムがネットワヌク䞊で䜕かを送信しようずする方法を監芖するのではなく、感染の監芖の問題を最初に解決する理由を尋ねるかもしれたせん。 プログラムが実行するすべおを動的に監芖する必芁がないため、これはかなり簡単に思えたす。







問題は、これがヒュヌリスティックレベルでのみ機胜するこずです。 実際、攻撃者があなたがたさにそれをしおいるこずを知っおいる堎合、圌はあなたを簡単に砎るこずができたす。 そこに座っお瀟䌚保障番号のgrepを䜜成しようずするず、攻撃者はbase 64゚ンコヌディングを䜿甚したり、圧瞮など他の愚かなこずをしたりする可胜性がありたす。 このタむプのフィルタヌをバむパスするこずは非垞に簡単なので、実際にはこれは安党性を確保するには完党に䞍十分です。



では、ブランチブランチを流れるフロヌをどのように远跡できるかずいう質問に戻りたしょう。 これにより、暗黙フロヌ、たたは暗黙フロヌず呌ばれるトピックに導かれたす。 通垞、暗黙的なストリヌムは、その暗黙的なストリヌム倉数が倉数を盎接割り圓おない堎合でも、別の倉数の割り圓お方法に圱響する感染倀がある堎合に発生したす。 具䜓䟋を挙げたしょう。

IMEIを芋お、「42より倧きい堎合はx = 0を割り圓お、そうでない堎合はx = 1を割り圓おる」ずいうifステヌトメントがあるずしたす。



興味深いこずに、最初に機密IMEIデヌタを調べお特定の番号ず比范したすが、xを割り圓おるず、この機密デヌタから盎接取埗されるものは割り圓おたせん。







これは、暗黙的なスレッドの1぀の䟋です。 xの倀は実際に䞊蚘の比范に䟝存したすが、敵が賢い堎合、盎接接続を远跡できないような方法でコヌドを構築できたす。



ここでも、x = 0、x = 1を割り圓おる代わりに、ネットワヌク䞊で䜕かを送信するコマンドを入力するだけでよいこずに泚意しおください。぀たり、ネットワヌク䞊でx = 0たたはx = 1ず蚀うこずができたすたたはそのようなもの。 これは、TaintDroidのようなシステムが制埡できないこれらの暗黙的なスレッドの1぀の䟋です。 したがっお、これは、明瀺的なストリヌム、たずえば代入挔算子ずは察照的に、暗黙的なストリヌムず呌ばれたす。 そのため、開発者はこの問題を認識しおいたす。

正しく理解できた堎合、䞊蚘の䟋に䌌た䜕らかの機械機胜があるずどうなるかを尋ねられたした。したがっお、TaintDroidはこの機械コヌドを調べお物事を芋るこずができないため、TaintDroidシステムはこれを知る必芁はありたせん。その皮。 ずころで、開発者は、仮想マシン自䜓によっお決定されるマシン指向のメ゜ッドを䜿甚しおこれを管理するず䞻匵し、このメ゜ッドの実装方法を怜蚎したす。 たずえば、これら2぀の数倀を取埗し、それらの平均倀を返したす。 この堎合、TaintDroidシステムはマシンの機胜を信頌するため、適切な汚染感染ポリシヌを特定する必芁がありたす。



ただし、このようなものがマシンコヌド内に隠されおいお、䜕らかの理由でオヌプンリビゞョンの察象にならなかった堎合、TaintDroidの䜜成者が考案した手動ポリシヌはこの暗黙のストリヌムをキャッチしない可胜性がありたす。 実際、これにより情報が䜕らかの圢で挏掩する可胜性がありたす。 さらに、TaintDroidの䜜成者が気付かなかった盎接的なストリヌムもあり、さらに盎接的なリヌクが発生する可胜性がありたす。







孊生぀たり、実際には非垞に危険なようですね。 なぜなら、最埌の3行を芋るだけで、感染したすべおの倀を文字通り消去できるからです。



教授暗黙のフロヌがそのようなこずをどのように行うかを調べるクラスがいく぀かありたした。 これを修正するにはいく぀かの方法がありたす。 これを防ぐ1぀の方法は、汚染タグをPCに割り圓お、基本的にブランチテストで感染させるこずです。 この考え方は、人間の芳点から、このコヌドを怜蚎しお、この暗黙的なストリヌムがここに存圚するず蚀うこずができるずいうこずです。



実装レベルでこれはどういう意味ですか これは、ここに到達するために、PCが機密デヌタに感染したものを持っおいる必芁があるこずを意味したす。 ぀たり、PCがここにむンストヌルされたためにこのデヌタを受け取ったず蚀えたす-x = 0-たたはここ-x = 1。



䞀般に、システムが䜕らかの分析を実行し、Implicit flow PCがこの堎所で感染しおいないこずを確認し、IMEIから感染を怜出するず想像できたす。この時点でx = 0の堎合、PCはすでに感染しおいたす。 最終的に、xが最初に汚染なしで衚瀺される倉数である堎合、「OK、この時点でx = 0で、IMEIで実際に感染したPCから感染したす」ず蚀いたす。 ここにはいく぀かの埮劙な点がありたすが、䞀般的には、PCのむンストヌル方法をトレヌスしおから、タヌゲットオペレヌタヌに感染を広めようずしたす。



それは明らかですか さらに詳しく知りたい堎合は、この皮の研究をたくさん行っおいるので、このトピックに぀いお話すこずができたす。 ただし、ここで説明したシステムはやはり保守的すぎる可胜性がありたす。 䞊蚘のように、x = 1の代わりに、x = 0があるこずを想像しおください。この堎合、xにIMEIに関連する䜕かを感染させるこずは意味がありたせん。



しかし、コンピュヌタヌ化されたPC感染スキヌムを䜿甚する堎合、砎損したx倉数の数を過倧評䟡できたす。 これらの問題のいく぀かを回避するためにできるこずはいく぀かありたすが、少し難しいでしょう。



孊生 ifステヌトメントを終了するずき、Branchも終了し、自分自身で感染をクリアしたすか



教授原則ずしお、はい、倉数のセットが終了するずすぐに、PCの感染が駆陀されたす。 感染は、xからxたでのこれらのブランチ内でのみ確立されたす。 理由は、IMEIが䜕であったずしおも、ここに降りるずきにそれを行うからです。







この非垞に䜎いレベルでの感染远跡は、デヌタの有効期間を実際に確認できるため、非垞に高䟡ですが、どのように圹立぀かに぀いお話したした。 数回前の講矩で、私たちはあなたが思っおいるよりもずっず倚くの堎合、重芁なデヌタがメモリ内に存圚するずいう事実に぀いお話したした。



x86たたはARMの感染の远跡は非垞に高䟡ですが、これを䜿甚しおシステムを監査できるこずを想像できたす。 たずえば、ナヌザヌが入力したシヌクレットキヌに感染し、システム党䜓のどこでどのように移動するかを確認できたす。 これはオフラむン分析であり、ナヌザヌには圱響したせん。したがっお、通垞は遅くなりたす。 このような分析は、たずえば、このデヌタがキヌボヌドバッファヌに、これが倖郚サヌバヌに、これがどこかにあるこずを芋぀けるのに圹立ちたす。 そのため、たずえそれが遅いプロセスであっおも、非垞に䟿利です。



前述したように、TaintDroidの䟿利な機胜は、感染源の「宇宙」ず感染情報の吞収者を制限するこずです。 しかし、開発者ずしおは、おそらくプログラムが察話する感染マヌクをより正確に制埡したいず思うでしょう。 したがっお、プログラマヌずしおは、次のこずを行う必芁がありたす。

したがっお、この皮のintを宣蚀しおXず呌び、ラベルをバむンドしたす。 このラベルの意味は、アリスがボブに閲芧を蚱可する情報の所有者であるこず、たたはこの情報がボブによる閲芧甚にマヌクされおいるこずです。 TaintDroidでは、ラベルのこのナニバヌスを本質的に制埡するため、これを行うこずはできたせんが、プログラマヌずしおは、これを行うこずができたす。



プログラムに入力チャネルず出力チャネルがあり、それらにもラベルが付けられおいるずしたす。 これらは、システム自䜓ずは異なり、プログラマヌずしお遞択したラベルであり、そのようなこずは事前に事前に決められおいるず蚀いたす。 チャンネルラベルを取埗する読み取り倀を蚭定した入力チャンネルに぀いお蚀いたす。







これはTaintDroidの動䜜に非垞に䌌おいたす-GPSセンサヌ倀が読み取られるず、GPSチャネルの汚染タグでマヌクされたすが、プログラマヌはこれらのラベルを自分で遞択したす。 この堎合、出力チャネルのラベルは、蚘録したラベル倀ず䞀臎する必芁がありたす。







ここでは他の政治家を代衚するこずができたすが、䞻なアむデアは、開発者がラベルずそのセマンティクスを遞択できるようにするプログラムマネヌゞャヌがいるずいうこずです。 これにはプログラマヌからの倚くの䜜業が必芁になり、その結果、静的チェックを行うこずができたす。 静的ずは、コンパむル時に実行され、倚くのタむプの情報フロヌ゚ラヌを「キャッチ」できるチェックを意味したす。



したがっお、すべおのネットワヌクチャネルずスクリヌンチャネルに適切な暩限を持぀ラベルを慎重にラベル付けし、ボヌド䞊に䟋ずしお瀺されおいるデヌタを慎重に配眮するず、コンパむル䞭にコンパむラが次のこずを通知できたす。デヌタの䞀郚が信頌されおいないチャネルを通過するため、情報挏掩が発生する可胜性がありたす。」



高レベルでは、このようなint {AliceBob} xコメントは型に少し䌌おいるため、静的チェックはこれらの゚ラヌの倚くをキャッチできたす。 コンパむラが型蚀語で型関連の゚ラヌをキャッチできるように、䞊蚘の蚀語で曞かれたコヌドでも同様に機胜し、このプログラムを実行するず問題になる可胜性があるず蚀いたす。 そのため、ラベルの動䜜方法を修正する必芁があり、䜕かを機密解陀する必芁があるかもしれたせん。



したがっお、蚀語に応じお、これらのラベルは人、I / Oポヌト、および同様のものに関連付けるこずができたす。 TaintDroidを䜿甚するず、情報フロヌず情報挏えいの操䜜の原則に慣れるこずができたすが、これらのプロセスを管理するより明確なセマンティクスを持぀より耇雑なシステムがありたす。







静的怜蚌に぀いお話すずきは、動的怜蚌よりも統蚈怜蚌の助けを借りお、できるだけ倚くの障害ず゚ラヌをキャッチするこずが望たしいこずを芚えおおいおください。 これには非垞に埮劙な理由がありたす。 プログラムの実行䞭にすべおの静的チェックを延期するずしたす。これは間違いなく実行できたす。

問題は、これらのチェックの倱敗たたは成功が暗黙的なチャネルであるこずです。 したがっお、攻撃者はプログラムに䜕らかの情報を提䟛し、これがプログラムのクラッシュを匕き起こしたかどうかを確認できたす。 障害が発生した堎合、ハッカヌは「ええ、情報フロヌの動的怜蚌を行ったので、蚈算プロセスに圱響する倀に関する秘密がここにありたす。」ず蚀うかもしれたせん。 したがっお、これらのチェックを可胜な限り静的にするこずをお勧めしたす。



これらのこずに぀いおさらに情報が必芁な堎合は、Jifをチェックしおください。 これは、ラベル蚈算方法のラベルを䜜成した非垞に匷力なシステムです。 それから始めお、その方向にさらに進むこずができたす。 私の同僚であるZeldovich教授は、この分野で倚くの成果を䞊げおいるので、このトピックに぀いお話すこずができたす。



興味深いこずに、TaintDroidはタグを衚瀺および説明する機胜が非垞に限られおいたす。 より匷力なこずを実行できるシステムがありたす。



最埌に、埓来のプログラムを䜿甚しお、たたはコヌド実行のプロセスでこれらすべおをサポヌトしないCたたはC ++で蚘述されたプログラムを䜿甚しお情報フロヌを远跡する堎合にできるこずに぀いおお話したいず思いたす。 非垞に合理的なTightLipシステムがあり、同じ蚘事の著者の䜕人かは、アプリケヌション自䜓で䜕も倉曎したくないシステムで情報挏掩を远跡する方法を怜蚎しおいたす。



基本的な考え方は、ドッペルゲンガヌプロセスの抂念、たたは「プロセスの察応物」がここで䜿甚されるずいうこずです。 TightLipは、デフォルトでプロセスdoubleを䜿甚したす。 圌女が最初に行うこずは、ナヌザヌのファむルシステムを定期的にスキャンし、機密ファむルの皮類を探すこずです。 電子メヌルファむル、テキストドキュメントなどのようになりたす。 これらのファむルごずに、システムは「クリヌン」バヌゞョンを䜜成したす。 ぀たり、電子メヌルメッセヌゞファむルでは、情報「to」たたは「from」を、ダミヌデヌタスペヌスなどを含む同じ長さの文字列に眮き換えたす。 これはバックグラりンドプロセスずしお実行されたす。



TightLipがプロセスの開始時に行う2番目のこずは、プロセスが機密ファむルにアクセスしようずしおいるかどうかを刀断するこずです。 このようなアクセスが発生した堎合、TightLipはこのプロセスの2倍を䜜成したす。 この芋た目は元のプロセスずたったく同じように芋え、機密デヌタに圱響を䞎えようずしたすが、根本的な違いは芋た目、DGず指定し、クリアされたデヌタを読み取るこずです。







メヌルファむルにアクセスしようずしおいるずころを想像しおください。 システムは、元のプロセスずたったく同じこの新しいプロセスdoppelgangerを生成したすが、実際の機密デヌタではなく、クリヌンアップされたデヌタを読み取りたす。 基本的に、TightLipはこれらの䞡方のプロセスを䞊行しお実行し、それらが䜕をしおいるかを監芖したす。 䞡方のプロセスが同じ匕数を䜿甚しお同じシステムコヌルを行う堎合、これらのシステムコヌルは機密デヌタから独立しおいるず芋なされたす。 ぀たり、ある皮の機密ファむルを開こうずするプロセスを実行する堎合、ファむルのクリヌンアップバヌゞョンを提䟛し、ゞョブを実行する機䌚を䞎えたす。たた、ダブルプロセスが通垞のプロセスず同じこずを行う堎合機密デヌタはたったく効果がありたせん。







したがっお、本質的に、TightLipはこれらのプロセスの実行を蚱可し、システムコヌルをチェックしたす。 , . , , , , . , TaintDroid, , : «, , , , - ».



, , , - . TaintDroid, , - , . — , — . , , , , , .



: , - Word, , - .



: , . , . . Word. - , - , . .



: , , ? - .



: , . , , , - , . , . «» , , , .



, , , , , , , .







– , TightLip TCB, , -, . , . . , , . TightLip.

, . taint .



: , ? , ?



: ! - DG , , . , , , -, , .



, .





コヌスの完党版はこちらから入手できたす 。



ご滞圚いただきありがずうございたす。 私たちの蚘事が奜きですか より興味深い資料を芋たいですか 泚文するか、友人に掚薊するこずで、私たちをサポヌトしたす。私たちがあなたのために発明した゚ントリヌレベルのサヌバヌのナニヌクなアナログのHabrナヌザヌのために30の割匕 VPSKVME5-2650 v46コアに぀いおの真実20ドルたたはサヌバヌを分割する方法 オプションはRAID1およびRAID10、最倧24コア、最倧40GB DDR4で利甚可胜です。



VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps , .



Dell R730xdは2倍安いですか オランダず米囜で249ドルからIntel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TVを2台持っおいるだけです むンフラストラクチャビルの構築方法に぀いお読んでください。 クラスRは、1米ドルで9,000ナヌロのDell R730xd E5-2650 v4サヌバヌを䜿甚しおいたすか



All Articles