この製品は、プロトコル・データやメモリが低レベルでどのように構成されているかについて無効な仮定を行い、その結果、意図しないプログラムの動作が発生する。
プラットフォームやプロトコルのバージョンが変わると、メモリ内のデータ構成が意図しない形で変わることがある。例えば、あるアーキテクチャではローカル変数 A と B を隣り合わせに置き、A を上にすることもあれば、隣り合わせに置き、B を上にすることもあります。パディングの大きさは、各変数が適切なワード・サイズに整列されるようにするため に変化します。
プロトコルの実装では、特定のデータを取り出すために、他のフィールドからの相対的なオフセットを計算するのが一般的である。新しいプロトコルのバージョンを含むような例外的な条件では、データレイアウトを通常とは異なる方法で変更するようなコーナーケースが追加されることがあります。その結果、ある実装がパケット内の意図しないフィールドにアクセスし、ある型のデータを別の型のデータとして扱ってしまうことがある。
The product makes invalid assumptions about how protocol data or memory is organized at a lower level, resulting in unintended program behavior.
When changing platforms or protocol versions, in-memory organization of data may change in unintended ways. For example, some architectures may place local variables A and B right next to each other with A on top; some may place them next to each other with B on top; and others may add some padding to each. The padding size may vary to ensure that each variable is aligned to a proper word size.
In protocol implementations, it is common to calculate an offset relative to another field to pick out a specific piece of data. Exceptional conditions, often involving new protocol versions, may add corner cases that change the data layout in an unusual way. The result can be that an implementation accesses an unintended field in the packet, treating data of one type as data of another type.