この積は、有効なポインタに対してポインタ演算を行うが、結果として得られるポインタが意図した有効なメモリ位置の範囲外を指す可能性のあるオフセットを使用する。
ポインタは任意のメモリ位置への参照を含むことができるが、プログラムは通常、個々の配列へのアクセスに使用される連続メモリなど、メモリの限られた部分へのアクセスにのみポインタを使用することを意図している。
プログラムは、構造化データ内に格納されたフィールドやサブエレメントにアクセスするために、オフセットを使用することがある。オフセットは、信頼できないソースからのものであったり、不正確な計算の結果であったり、他のエラーのために発生したりすると、範囲外になる可能性があります。
攻撃者がオフセットを制御または影響し、それが構造体の意図された境界の外を指すようにすることができれば、攻撃者は製品内の他の場所で使用されているメモリ位置に読み書きできる可能性があります。その結果、攻撃はプログラム変数を通してアクセスされる製品の状態を変更し、クラッシュや不安定な動作を引き起こし、場合によってはコードの実行につながる可能性があります。
The product performs pointer arithmetic on a valid pointer, but it uses an offset that can point outside of the intended range of valid memory locations for the resulting pointer.
While a pointer can contain a reference to any arbitrary memory location, a program typically only intends to use the pointer to access limited portions of memory, such as contiguous memory used to access an individual array.
Programs may use offsets in order to access fields or sub-elements stored within structured data. The offset might be out-of-range if it comes from an untrusted source, is the result of an incorrect calculation, or occurs because of another error.
If an attacker can control or influence the offset so that it points outside of the intended boundaries of the structure, then the attacker may be able to read or write to memory locations that are used elsewhere in the product. As a result, the attack might change the state of the product as accessed through program variables, cause a crash or instable behavior, and possibly lead to code execution.