Filtering)このメモの位置づけこのメモは、インターネットコミュニティに情報提供するものです。これは、いかなるインターネット標準を定めるものではありません。このメモの配布に制限はありません。パケットを偽るのに利用することができてしまいます。本書においては、2つの攻撃手法とともに、それらを防ぐための救済策について述べます。Englishシステム管理者は、ネットワーキング機器にパケットフィルタ機能を付加して提供するのに、それらのベンダーに依存します。これらのフィルタは、攻撃者がプライベートなシステムや情報にアクセスすることを防ぐ一方で、友好的な主体がプライベートなネットやインターネット間でデータを転送することを許可するのに使用されます。この理由で、ネットワーク機器のベンダーは、自身の機器について想定される攻撃を予期し、そのような攻撃をかわす丈夫な機構を実装することが重要です。グローバルなインターネットの発展によって、反社会的な行為であることが明らかになってきた「望まれない要素」の増加がもたらされました。利用が観察されています。中には、取り扱いに注意を要するデータの改ざんに至ったものもあります。熟練した攻撃者たちは、ますます、インターネットプロトコルの些細な点を攻略しようとするようになっています。パケットのフラグメンテーションは、我々がここで解き明かす、いくつかの潜在的な問題点を引き起こします。パケットフィルタは、管理者にパケットフラグメンテーションを見せないユーザインターフェイスを持つ設計がなされています。パケットに適用されます。)へのフィルタルールの適用結果の記録をとっておき、それらを同じパケットの以降のフラグメントに適用するものです。よってインデックスされたパケットのリストを保持します。ビットがセットされていたら、リストの要素がフィルタアクセスチェックの結果を保持するために確保されます。一致するそのリストの要素を参照し、その保持された結果(通過もしくはブロック)を適用します。フラグメントが観察されたら、リストの要素を解放します。この手法(あるいは、ある種のこの改良)によって、あらゆる攻撃パケット全体をうまく除去することができるでしょうが、これにはいくつかの困難があります。異なる経路を通ってきたといった理由で順序通りに到着しないフラグメントは、ひとつの設計上の仮定を壊し、結果として望まれないフラグメントが漏れてしまう可能性があります。そのフィルタリングルータが並列の経路のひとつである場合には、そのフィルタリングモジュールは、すべてのフラグメントを観ないでしょうし、ドロップする必要があるパケットについて完全なフラグメントフィルタリングを保証することはできません。攻撃パケットのすべてのフラグメントを除去する必要はありません。「興味ある」パケット情報は先頭にあるヘッダーにあるので、フィルタは通常、最初のフラグメントだけに適用されます。最初でないフラグメントは、宛先のホストで最初のフラグメントがない場合、そのパケットの再構築を完遂することは不可能なので、フィルタリングされることなく渡り、それゆえそのパケット全体が捨てられます。インターネットプロトコルは、パケットのフラグメンテーションを、データや計算上のオーバーヘッドの理由で非現実的となるまでに小さくすることができてしまいます。攻撃者は、しばしば典型的なフィルタ機能を攻略し、さもなければ許されないパケットを密かにフィルタを通すために、変わったフラグメントシーケンスを作ることができるようになります。ないので、通常のオペレーションを妨げる危険がないよう、これらのフラグメントをドロップするのが安全です。実装について、出ていくパケットのフラグメントサイズを非常に小くすることができます。ヘッダーフィールドの一部が次のフラグメントの中に入るようになるほど、フラグメントサイズが十分に小さくされた場合には、それらのフィールドのパターンを決めるフィルタルールは一致しないことでしょう。サイズを規定していない場合には、フィルタに一致しないので、許されないパケットが通過してしまうかもしれません。よれば:各インターネットモジュールは、68オクテットのデータグラムを、これ以上のフラグメンテーションなしに転送できなければなりません。オクテットだからです。オクテットのデータを含んでいることを保証するだけでは十分でないことを覚えておいてください。フィールド)は、8番目のデータオクテットより後ろにある可能性があるからです。オクテット(最小フラグメントサイズ)のデータしか含まれていません。フラグのフィールドは次のフラグメントになってしまいます。データグラム)をドロップするフィルタは、最初のオクテットにあるこれらのフラグをテストすることができない可能性があり、典型的には以降のフラグメントにあるそれらを無視します。Englishルーターにおいて、通過するフラグメントに一定の制限を規定することによって、要するに最初のフラグメントが、すべての必須ヘッダー情報を含むのに十分な大きさをもつようにすることによって、この種の攻撃を防ぐことができます。2つのやり方があり、ひとつは直接的であり、もうひとつは間接的です。ヘッダーの先頭から測られます。関連するトランスポートプロトコルの機能であり、正しく設定された特定のフィルタの機能でもあることを覚えておいてください。短い場合には、そのフラグメントは捨てられます。ないフラグメントは、チェックされる必要があります。オフセットのフラグメントが捨てられた場合、宛先のホストは、再構築を完遂することができないからです。これまでのところ、このようになります。ないフラグメントに適用することはできません。パケットに適用する必要はありません。それゆえ、タイニーフラグメントテストの改良版はこのようになります。下記のオーバーラッピングフラグメントについての章で検討するように、このテストではすべてのフラグメンテーション攻撃をブロックすることはできず、実際、より一般的なテクニックが使用される場合には不要です。あるフラグメントが存在しなければならないという経験則に依拠します。オフセットのフラグメントがあることを示します。フラグメントを捨てることは、受け手のホストにおける再構築をブロックし、上記の直接的手法と同程度に有効です。新しいフラグメントが、以前に受け取ったいかなるフラグメントのオーバーラップした部分をも上書きしてしまうことになる、再構築アルゴリズムについて記述しています。ヘッダー情報をオーバーラップして書き換えてしまうような一連のパケットを作成することができてしまいます。フラグメントオフセットを持っていないので、次のパケットは、大部分のフィルタ実装を通過してしまうことでしょう。改良版のデータグラム再構築アルゴリズムについて概説していますが、これ自体は主に再構築過程におけるギャップを埋めることに関するものです。オーバーラッピングフラグメントの論点については触れていません。実装が、オーバーラッピングフラグメント攻撃を受け付けないものであることを保証されているわけではありません。再構築の実装は、先のフラグメントのデータを後のフラグメントのデータよりも優先するようにすることによって、これらの攻撃を避ける注意をしています。コードに基づいているわけではなく、そのようなものの中には脆弱なものもありそうです。Englishこの例において、フラグメントは、上記の節で述べた最小サイズの要件を満たすのに十分な大きさです。コネクション要求パケットをドロップするように設定されています。いったフィルタを通過することができる無害な値をもっています。フラグをもっています。いった最初のフラグメントのものとは異なります。オフセットのフラグメントではないのでチェックされず、これもまたフィルタを通過します。あるアルゴリズムを完全に確認する場合、受け手のホストは「悪い」データが後から着たので、そのパケットをコネクション要求として再構築します。次に送ることによって、同様の攻撃を遂行することができてしまいます。Englishオーバーラップセーフな再構築アルゴリズムを使用することを要求する標準はないので、この攻撃に対するホストの潜在的脆弱性は、極めて大きいといえます。フィルタリングコードについて、より良い戦略を採用することによって、この「攻撃」をブロックすることができるようになります。オフセットでないフラグメントに最小フラグメントオフセットを指定している場合、トランスポートヘッダーのフィルタパラメータ部分中のオーバーラップを防ぐことができます。持っている場合、これは捨てられる必要があります。オクテットしかスタートさせないからです。フラグメントをドロップさせることによって、前で検討したようにタイニーフラグメント攻撃からも防ぐことができます。)できることを要求します。バイトである必要があることを意味します。バイトのデータを運ぶことができます。パケットを生成したりはしません。ヘッダーを要するからです。結局、フィルタがタイニーフラグメント攻撃とオーバーラッピングフラグメント攻撃の両方で動作するようにするための一般的なアルゴリズムは、このようになります。PACKET他のトランスポートプロトコルヘッダーにあるフィールドに基づいたフィルタリングが、ルーターによって提供されている場合には、ヘッダーの中におけるそれらのフィールドの位置によって最小値は、より大きい可能性があります。オクテット以降のデータについて許されている場合には、柔軟なユーザインターフェイスと何らかの新しいトランスポートプロトコルのためのフィルタの実装の理由で、FO==1パケットをドロップするだけでは十分ではないことでしょう。パケットをフィルタすることについて、セキュリティの観点からの意味合いに関するものです。5月におけるファイアウォールメーリングリストでの議論から発展しました。参加者には次の方々がいました。