アドレス空間配置のランダム化
g ( α ) = isolated guessing; address space is re-randomized after each attempt {\displaystyle g\left(\alpha \,\right)={\mbox{isolated guessing; address space is re-randomized after each attempt}}\,}
g ( α ) = 1 − ( 1 − 2 − N ) α : 0 ≤ α {\displaystyle g\left(\alpha \,\right)=1-{\left(1-{2^{-N}}\right)^{\alpha }\,}:0\leq \,\alpha \,}
b ( α ) = systematic brute forcing on copies of the program with the same address space {\displaystyle b\left(\alpha \,\right)={\mbox{systematic brute forcing on copies of the program with the same address space}}}
b ( α ) = α 2 N : 0 ≤ α ≤ 2 N {\displaystyle b\left(\alpha \,\right)={\frac {\alpha \,}{2^{N}}}:0\leq \,\alpha \,\leq \,{2^{N}}}
多くのシステムで、 2 N {\displaystyle 2^{N}} は数千から数百万の範囲になりうる。現代の 64ビットシステム上では、これらの数値は少なくとも数百万に達する。
NOPスライドをシェルコードの注入に使うことができ、system()への戻りを試みるときは文字列 '/bin/sh' を任意個数のスラッシュの '////////bin/sh' に置き換えることができる。削減されるビット数は間隔 n {\displaystyle n} の攻撃に対して、ちょうど l o g 2 ( n ) {\displaystyle log_{2}\left(n\right)} である。
このような減少はスタックやヒープのデータ量のために制限される。たとえば、スタックは通常8MBに制限され、それよりも伸びて使われることは、めったにない。これにより削減が可能なのは最大19ビットであるが、より保守的な見積もりでは4-16KBのスタックの詰め物に対しておよそ 8-10ビットである。一方ヒープはメモリアロケータの振る舞いに制限される。glibcの場合、128KBを超える割り当てはmmap()を使って作られ、攻撃者のビット削減を5ビットに制限する。これはブルートフォースに対する制限要因でもある。行われる攻撃の回数を削減することはできるが、攻撃のサイズが十分大きくなると一部の環境での振る舞いは侵入検知システムと似たものになりうる。
A h = attacked bits per attempt of heap base entropy {\displaystyle A_{h}={\mbox{attacked bits per attempt of heap base entropy}}\,}
α = attempts made {\displaystyle \alpha ={\mbox{attempts made}}\,}
N = E s − A s + E m − A m + E x − A x + E h − A h {\displaystyle N=E_{s}-A_{s}+E_{m}-A_{m}+E_{x}-A_{x}+E_{h}-A_{h}\,}
攻撃者が成功する確率を計算するために、試行回数 α {\displaystyle \alpha } はシグネチャベースのIPS、法的規制、その他の要因によって中断されることなく実行されると仮定する。ブルートフォースの場合、デーモンを再起動することはできない。さらにどれだけ多くのビットが関係し、どれだけ多くのビットが1回あたりの試行で攻撃され、どれだけ多くのビット攻撃しなければならないビットが残るかも算出しなければならない。
以下の式は N {\displaystyle N} ビットのエントロピーに対する α {\displaystyle \alpha \,} 回の試行が与えられたとき、攻撃が成功する確率を表す。