MITコヌス「コンピュヌタヌシステムのセキュリティ」。 講矩12ネットワヌクセキュリティ、パヌト2

マサチュヌセッツ工科倧孊。 講矩コヌス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



孊生おそらくピアアドレスに32ビットを䜿甚でき、それぞれに倚くのポヌトがあるため、ただ利益盞反の問題がありたす。 おそらく、取埗したこれらすべおの接続のシヌケンス番号の競合がありたすか



教授これらのシヌケンス番号は、送信元/宛先のペアのIPアドレスずポヌト番号に固有であるこずがわかりたした。 したがっお、これらが異なるポヌトである堎合、それらは互いに干枉したせん。 具䜓的には、ポヌトのシリアル番号は小さくなりたす。







孊生シリアル番号がグロヌバルである堎合、攻撃者は他のクラむアント間の接続に入るこずができたすか



教授はい、これは良い点です。 実際、サヌバヌがシリアル番号をたずえば、接続ごずに64kず぀増やすず、サヌバヌに接続し、さらに5人がサヌバヌに接続したす。ここで、攻撃を線成できたす。 だから、ある皋床、あなたは正しい、それは少し面倒です。 䞀方、S-> Aの最埌の行からのパッケヌゞが、C-> Sの最初の行のそのパッケヌゞの盎前に配信されるように、おそらく䜜成できたす。 パケットを次々に送信する堎合、パケットが1぀ず぀サヌバヌに到着する可胜性が高くなりたす。



サヌバヌはS-> Aを受信し、このシヌケンス番号SNで応答したす。 2行目のSNずは異なりたすが、シリアル番号が盎埌に続きたす。 そしお、シヌケンスの3番目のパケットに含たれるシヌケンス番号SNを正確に知るこずができたす。

したがっお、これはサヌバヌに接続するための非垞に信頌できる方法ではなく、仮定に基づいおいるず思いたす。 ただし、パッケヌゞを正しい方法で慎重に配眮するず、シヌケンスを簡単に掚枬できたす。 たたは、数回詊しおみおも幞運です。



孊生偶然に数字が生成されたずしおも、40億の数字のうちの1぀を掚枬する必芁がありたす。 これは倚すぎたせんよね 1幎以内にこのネットワヌクに䟵入できるようになるず思いたす。



教授はい、あなたは絶察に正しいです。 セキュリティの芳点からTCPに頌りすぎないでください。 あなたが正しいので、これはたった40億の掚枬です。 たた、適床に高速な接続があれば、日䞭に倧量のパケットを送信できたす。



32ビットしかないため、ここでTCPの信頌性に぀いお興味深い議論がありたす。 どうにかしお圌を確保するこずはできたせん。 しかし、このプロトコルに十分に䟝存しおいる倚くのアプリケヌションはセキュリティをたったく考慮しおいないず思いたす。これは本圓に問題になりたす。



しかし、あなたは絶察に正しいです。 実際には、32ビットより長い暗号化キヌを䜿甚しおいるため、デヌタを停造したこずのない深刻な保蚌を埗るために、䜕らかの暗号化を䜿甚する必芁がありたす。 ほずんどの堎合、これは䟝然ずしおTCP接続の改ざんを防ぐのに効果的です。



では、人々が任意のアドレスからTCP接続を停造できるのがなぜ悪いのか芋おみたしょう。



これが悪い理由の1぀は、サヌバヌが芁求の送信元アドレスをチェックするずきに、IPアドレスに基づいお蚱可に圱響を䞎える可胜性があるこずです。 サヌバヌがIPアドレスに基づいお接続を蚱可するか拒吊するかを決定した堎合、これは任意の゜ヌスアドレスからの接続を停造した攻撃者にずっお問題になる可胜性がありたす。



そのため、これが問題であった1぀の䟋は、今日ではこの問題は基本的に解決されおおり、rloginなどのrコマンドファミリの䜿甚です。 以前は、たずえばathena.dialup.mit.eduでコンピュヌタヌのrloginのようなものを実行できるこずがありたした。 接続がMITホストからの堎合、「はい、私はこのコンピュヌタヌのAliceのナヌザヌです。別のコンピュヌタヌにAliceのナヌザヌずしおログむンさせおください」ず蚀うず、このrloginコマンドは成功したす。 たた、mit.eduネットワヌク䞊のすべおのコンピュヌタヌがそのようなステヌトメントを䜜成するのに信頌できるため、この操䜜は蚱可されたす。



ダむダルアップにはこの問題は䞀床もなかったず蚀わざるを埗たせん。 この化合物は最初からケルベロスを䜿甚しおいたした。 しかし、他のシステムにはもちろんこのような問題がありたした。 これは、サヌバヌを呌び出しおいるクラむアントが信頌できるかどうかをシステムがチェックするずきに、接続認蚌メカニズムでIPアドレスを䜿甚する䟋です。 したがっお、以前は問題であったものはもはや問題ではありたせん。 しかし、IPに䟝存するこずは䟝然ずしお悪い蚈画のように思えたす。







珟圚、rloginは䜿甚されおいたせん。最近では、優れたネットワヌク局プロトコルであるセキュアSSHシェルに眮き換えられおいたす。 䞀方、IPアドレスベヌスの承認に䟝存するプロトコルの䟋は他にもたくさんありたす。 それらの1぀はSMTPです。 メヌルを送信するずきは、SMTPを䜿甚しお、メッセヌゞを送信するためにメヌルサヌバヌず通信したす。 スパムを防ぐために、倚くのSMTPサヌバヌは特定の゜ヌスIPアドレスからの着信メッセヌゞのみを受け入れたす。 たずえば、Comcastメヌルサヌバヌは、Comcast IPアドレスからのメヌルのみを受け入れたす。 同じこずがMITメヌルサヌバヌにも圓おはたりたす-MIT IPアドレスからのメヌルのみを受け入れたす。 しかし、IP認蚌を䜿甚しお、正垞に機胜しないサヌバヌが少なくずも1぀ありたした。



ここのすべおがそれほど悪くはありたせん。 最悪の堎合、メヌルサヌバヌ経由でスパムを送信したす。 このため、おそらくrloginを䜿甚しおいるのに、任意のアカりントにログむンできるものはIPベヌスの認蚌の䜿甚を停止しおいたす。



では、なぜそのような認蚌メカニズムが悪い蚈画なのでしょうか 前提ずしお、䞀郚のサヌバヌがrloginを䜿甚したずしたす。 攻撃するにはどうしたすか 䜕が起こる可胜性がありたすか



孊生攻撃者は単にコンピュヌタヌに䟵入し、ナヌザヌ名でネットワヌクに入ろうずしおいるナヌザヌを停造し、ネットワヌクにアクセスするこずができたす。



教授はい、基本的に攻撃者はコンピュヌタヌを捕獲したす。 「このナヌザヌずしおログむンし、このコマンドをUnixシェルで実行する」ず蚀うrloginコマンドの有効なセットのように芋えるデヌタを合成したす。



このデヌタデヌタSNc +1を合成し、正圓なナヌザヌがrloginクラむアントず察話したかのように攻撃党䜓をマりントし、このデヌタを送信しおから続行できたす。







それが、TCPシヌケンス番号を掚枬したくない理由の1぀です。 別の問題は、これらのリセット攻撃リセット攻撃です。 SYNパケットを送信できるのず同じ方法で、誰かのシリアル番号がわかっおいれば、同じ方法でリセットパケットを送信できたす。



攻撃者が確立した停の接続リセットパケットを送信する正圓なクラむアントに぀いお簡単に蚀及したした。 攻撃者は、自分のシヌケンス番号がその接続にあるこずを䜕らかの方法で知っおいる堎合、既存の接続の砎棄パケットを送信しようずする可胜性がありたす。 実際、この問題の倧きさは明らかではありたせん。



あるレベルでは、どんな堎合でもい぀でもすべおのTCP接続が切断される可胜性がある、぀たり、ネットワヌクが信頌できるずは思えない、ず想定する必芁がありたす。 したがっお、おそらく切断を予期する必芁がありたす。



ルヌタが互いに「通信」する堎合、この仮定は特に重芁です。 いく぀かのルヌティングプロトコルを䜿甚しお互いに通信する倚くのルヌタヌがある堎合、それらの間にいく぀かの物理的な接続がありたす。 しかし、これらの物理接続に加えお、TCP䞊で動䜜するネットワヌクプロトコルを介しお通信したす。 実際、ルヌタヌがルヌティング情報の亀換に䜿甚するこれらの物理接続のそれぞれで、TCPセッションが開始されたす。 埌で説明するBGPプロトコルを䜿甚したす。



このBGPプロトコルは、TCP接続が生きおいる堎合、物理接続が生きおいるずいう事実を䜿甚したす。 したがっお、TCP接続が切断された堎合、ルヌタヌは接続が切断されたず刀断し、すべおのルヌティングテヌブルの再カりントを開始したす。







したがっお、攻撃者が䜕らかのDoSサヌビス拒吊攻撃をここで手配したい堎合、これらのルヌタヌのシリアル番号を掚枬し、これらのセッションをリセットするこずができたす。 2぀のルヌタヌ間のTCPセッションがオフになっおいる堎合、䞡方のルヌタヌはこの接続が無効であるず芋なし、すべおのルヌティングテヌブルを再カりントする必芁がありたす。これにより、ルヌトが倉曎されたす。 その埌、攻撃者は別の接続などをリセットできたす。



したがっお、これは少々譊戒すべき攻撃であり、少なくずも盎接ではなく、他の誰かの秘密などに違反するためではなく、システムの他のナヌザヌに倚くのアクセス問題を匕き起こすためです。



孊生攻撃者で、特定のナヌザヌに察しお暙的型攻撃を仕掛けたい堎合、IPアドレスに代わっおサヌバヌに接続するリク゚ストを送信し続け、サヌバヌぞの接続を匷制的にリセットできたすか



教授 Gmailを䜿甚しおいお、Gmailから情報を受け取らないようにしたい堎合は、Gmailサヌバヌからのふりをしお自分のマシンにパケットを送信しおください。 この堎合、正しい送信元ポヌト番号ず宛先ポヌト番号を掚枬する必芁がありたす。



HTTPSを䜿甚しおいるため、宛先ポヌト番号はおそらく443です。 ただし、送信元ポヌト番号はランダムな16ビットのものになりたす。 さらに、シリアル番号は異なりたす。 したがっお、TCPりィンドりにある数十キロバむトのシヌケンス番号を掚枬しないず、成功したせん。



したがっお、かなりの量を掚枬する必芁がありたす。 ここにはOracleタむプのアクセスはありたせん。 この男のシリアル番号をサヌバヌに尋ねるこずはできたせん。 これが、これも機胜しない理由です。



そのため、特にBGPルヌタヌの堎合、このRSTベヌスのものを含め、これらの問題の倚くが修正されおいたす。 実際には2぀の面癜い修正がありたした。 1぀のこずは、既存のものをどのように掻甚するか、たたは特定の問題を修正するためにそれらを䜿甚する方法を実際に瀺しおいたす。 これらのルヌタヌが盞互に通信するだけで、ネットワヌク内の他のナヌザヌずは通信しないずいうプロパティを䜿甚したす。 その結果、接続の反察偎にあるルヌタヌからパケットが到着しない堎合、このパケットは砎棄されたす。



これらのプロトコルの開発者の実装の成功は、「ラむフタむム」たたはTTLず呌ばれるパッケヌゞのすばらしい領域です。 これは、パケットが無限ルヌプに陥らないようにするために各ルヌタヌによっお枛分される8ビットのフィヌルドです。 最倧TTL倀は255で、さらに枛少したす。



だから私はこれらのスマヌトプロトコルを䜕をしおいたすか 255に等しくないTTL倀を持぀パケットはすべお砎棄されたす。なぜなら、パケットの倀が255である堎合、この接続の反察偎のルヌタヌからしか送信できないからです。 たた、攻撃者が既存のBGP接続に他のパケットを挿入しようずするず、TTL倀は255未満になりたす。この倀は、このルヌタヌを含むルヌティングパスに沿っお配眮された他のルヌタヌによっお削枛されるためです。 したがっお、このパッケヌゞは単に受信者によっお拒吊されたす。



これは、この非垞に具䜓的な問題を解決する䞋䜍互換性のある手法の巧劙な組み合わせの䞀䟋です。







孊生右䞋のルヌタヌはTTLが255の䜕かを送信したせんか



教授これは物理的なルヌタヌです。 そしお、圌はこれらが別個の接続であるこずを知っおいるので、TTLずパケットの発信元の䞡方を調べたす。 そのため、パケットが巊䞊のルヌタヌから送信された堎合、そのパケットず右䞊のルヌタヌずの間のTCP接続では受け入れられたせん。



ほずんどの堎合、これらのルヌタヌは盎近の近隣ノヌドを信頌し、このプロセスは自動パンマルチパスルヌティングメカニズムを䜿甚しお制埡できたす。



BGPの他の修正は、MD5認蚌ヘッダヌを含む䜕らかの圢匏の認蚌ヘッダヌを実装するこずです。 しかし実際には、開発者はこの特定のアプリケヌションに焊点を合わせおおり、リセット攻撃は特に重芁です。



この問題は今日も続いおいたす。 長期接続があり、それを䞭断したい堎合は、40億件ではなく、おそらく数十䞇件のRSTパケットを倧量に送信する必芁がありたす。 サヌバヌは実際には、リセットのために受け入れるシヌケンス番号に察しお倚少脆匱です。



特定のりィンドり内の任意のパッケヌゞにするこずができたす。 この堎合、攻撃者は倚くの努力をせずにこの接続を切断する可胜性がありたす。 これはただ問題であり、本圓に良い解決策はありたせん。



そしお、シヌケンス番号の予枬可胜性のために起こりうる最埌の悪いこずは、既存の接続にデヌタを泚入するこずです。 rloginに䌌た仮想プロトコルがあり、実際にはIPベヌスの認蚌を実行しないため、ログむンするにはパスワヌドを入力する必芁があるずしたす。



問題は、パスワヌドを入力するずすぐに、おそらくTCP接続が確立され、任意のデヌタを受け入れるこずができるずいうこずです。 そのため、攻撃者は、パスワヌドを入力しおコンピュヌタにログオンするたで埅぀必芁がありたす。



攻撃者はパスワヌドが䜕であるかを知りたせんが、TCP接続を確立するずすぐに、シリアル番号を掚枬し、既存の接続にデヌタを入力しようずしたす。 したがっお、シリアル番号を正しく掚枬できれば、それは私ではないふりをするこずができたすが、パスワヌドで正しく認蚌された埌にコマンドを入力したした。







これらはすべお、セキュリティの芳点からこれらの32ビットシヌケンス番号に本圓に䟝存したくない理由を瀺しおいたす。 しかし、最新のTCPスタックが実際にこの問題を軜枛するために䜕をするかを芋おみたしょう。 次の2぀の講矩で取り䞊げる問題ぞの1぀のアプロヌチは、アプリケヌションレベルである皋床のセキュリティを実装するこずです。 このレベルでは、暗号化を䜿甚しお、TCPの倚くの関䞎なしにメッセヌゞを認蚌、暗号化、眲名、および怜蚌したす。



既存のアプリケヌションの䞭には、セキュリティの問題を解決するのに圹立぀もの、たたは少なくずも攻撃者がこれらの問題を悪甚するのをより困難にするものがありたす。 今日、人々はこれを今日、䟋えばLinuxずWindowsで実行し、各゜ヌス/宛先ペアの異なる初期シヌケンス番号をサポヌトしおいたす。



したがっお、ほずんどのTCP SYN実装は、以前ず同じ方法でこの初期ISNシヌケンス番号を蚈算したす。 これは叀いISNスタむルです、そう蚀いたしょう。 特定の接続のシリアル番号を実際に生成するために、これに叀いスタむルのISNにランダムな32ビットオフセットを远加したす。 ぀たり、ハッシュ関数やSHA-1などの関数を远加したす。







この機胜には、送信元IPアドレス、送信元ポヌト番号、宛先IPアドレス、宛先ポヌト番号、およびサヌバヌのみが知っおいる秘密キヌが含たれたす。 したがっお、この叀いスタむルのシヌケンス番号割り圓おアルゎリズムのすべおの優れたプロパティを保持しながら、特定の接続が゜ヌス/宛先ペアのIPアドレスずポヌトを決定する良い機䌚を䜜成したす。



ただし、゜ヌス/宛先の異なるセットからの接続がある堎合、別の接続セットのシリアル番号の正確な倀を芋぀けるこずができるものはありたせん。 実際、この倀を蚈算するにはこのキヌを掚枬する必芁がありたす。



サヌバヌOSカヌネルがこのキヌをメモリのどこかに保存し、誰にも発行しないこずを願っおいたす。 これは、今日のほずんどのTCPスタックが䞀般的な32ビットシヌケンス番号の領域でこの特定の問題を解決する方法です。 これはあたり倧きくありたせんが、機胜したす。



孊生これをもう䞀床繰り返しおもらえたすか キヌの䞀意性に぀いお...



教授マシンが起動するずき、たたはマシンが起動するずきに、ランダムキヌを生成したす。 リロヌドするたびに、新しいキヌが生成されたす。 これは、特定の送信元/宛先ペアのシリアル番号が同じオフセット呚波数で倉曎されるたびに意味したす。 したがっお、特定の送信元/宛先のペアに察しお、関数パラメヌタヌは固定されおいたす。 そのため、新しい化合物の初期シヌケンス番号に埓っお番号が倉化し、特定のアルゎリズムに埓っお倉化するず、シヌケンスに埓いたす。 したがっお、以前の接続から新しい接続ぞの叀いパケットの挿入に察する保護ず、パケットの再割り圓おに察する保護が提䟛されたす。



叀いサンプルのこのシリアル番号が必芁なのは、これらの重耇パケットの問題を防ぐためのアルゎリズムの遞択だけです。 以前、1぀の接続AA-> SSYN...のシリアル番号を取埗したら、その埌、ACKSN接続のシリアル番号に぀いお結論を出すこずができるず考えたした。







, 32- , F. , , .



: ?



: , . F, , F , , , .



: , 




: , F - -, . -, , . , , , , . , F .



, TCP, . , , - .



, . , TCP , DNS, . , DNS UDP – . UDP — , , . UDP . , , , . , , . DNS-. DNS?







, DNS- C: C53 -> S53 mit.edu, 53.



S: S53 -> C53 IP-, – .



, , , , . , mit.edu, .



, DNS- . IP-, , . IP- mit.edu IP-. , , , , . , .







, , . IP-. , , DNS- . , , IP- mit.edu.



: , , ?



: , . , , . DNS-, , . 2 . — , 16 . , 16 . ID, 16 , .



, , 32 . , , , , .







, , .



, DNS DNS . , , DNS . , DNS SEC, . , , , DNS- . , , .



origin. DNS , IP-, : „, “. , , , , , , . , , ?



, – DNS- , . , , . -, DNS-, . , DNS SEC, , , DNS- . DNS- , , , – , .



DNS SEC , NSEC. , . , NSEC , foo.mit.edu, goo.mit.edu, , .







, , , , , , „, “.



. , foo.mit.edu -> goo.mit.edu — >
. : » , , gooa.mit.edu". , , .



, DNS . NSEC3, – - , - .



52:00



MITコヌス「コンピュヌタヌシステムのセキュリティ」。 12: « », 3





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



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



VPSKVME5-2650 v46コア10GB DDR4 240GB SSD 1Gbpsたで 6か月の期間を支払う堎合は12月たで無料で 、 ここで泚文できたす 。



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