完全にJVMの多くをロックする簡単な方法があります:フローティングバグの影響を受けるウェブアプリケーションはどれですか?
class runhang {
public static void main(String[] args) {
System.out.println("Test:");
double d = Double.parseDouble("2.2250738585072012e-308");
System.out.println("Value: " + d);
}
}
または、コンパイラハングアップする:
class compilehang {
public static void main(String[] args) {
double d = 2.2250738585072012e-308;
System.out.println("Value: " + d);
}
}
をここで説明したように:http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/
私の質問は非常に簡単です:どのようなうまく構想されたWebアプリケーションが、これによって現実的に影響を受けるのか分かりますか?
つまり、どのような種類のWebアプリケーションで攻撃者がサービス拒否を実行する可能性がありますか?既知の弱点を使用していますか?
ひどく悪いです。しかし、金銭計算に浮動小数点を使用するプログラマー以外にも、クラッシュする可能性のある多くのJavaベースのWebサイトは見当たりません。
私はおもちゃの科学的なアプレットが候補であることが、それ以外にも見ることができます...
をここでブロックされたスレッド( "殺す-3" Linux上で使用して行う)のthreadumpです:
"main" prio=1 tid=0x09ab8a10 nid=0x57e9 runnable [0xbfbde000..0xbfbde728]
at sun.misc.FDBigInt.mult(FloatingDecimal.java:2617)
at sun.misc.FloatingDecimal.multPow52(FloatingDecimal.java:158)
at sun.misc.FloatingDecimal.doubleValue(FloatingDecimal.java:1510)
at java.lang.Double.parseDouble(Double.java:482)
EDITここでロックされ
のJVM:
Javaのバージョン "1.5.0_10" のJava(TM)2 Runti私の環境、標準版(1.5.0_10-B03を構築) は、Java HotSpot(TM)ServerのVM(1.5.0_10-B03、混合モードを構築する)
Javaのバージョン "1.6.0_17" のJava(TM)SEランタイムJava HotSpot(TM)サーバVM(ビルド14.3-b01、混合モード)
(私はこれをコミュニティのWikiに変換するにはどうすればいいですか) – SyntaxT3rr0r
これはまったくのように見えますユーザが入力した文字列の値をdoubleに変換すると、影響を受ける可能性があります。 –
これはどうして本当の質問ではありませんか?誰かがこれを閉じるためにどのように投票できますか? – SyntaxT3rr0r