1

オラクルのパディング エクスプロイトに関するこのアドバイザリで、Microsoft は次の推奨エラー ページを投稿しました。

<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Threading" %>

<script runat="server">
        void Page_Load() {
        byte[] delay = new byte[1];
        RandomNumberGenerator prng = new RNGCryptoServiceProvider();

        prng.GetBytes(delay);
        Thread.Sleep((int)delay[0]);

        IDisposable disposable = prng as IDisposable;
        if (disposable != null) { disposable.Dispose(); }
    }
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <div>
        An error occurred while processing your request.
    </div>
</body>
</html>

Thread.Sleep0 から 255 までの値はどうなっていますか? サーバー スレッドが 4 分の 1 秒も拘束されたくない。

4

1 に答える 1

3

その理由は、結果のタイミングを変更するためです。復帰にかかる時間を可変にすることで、エラー復帰のタイミングを使用して失敗の理由を判断することができなくなります。これが攻撃に使用されるアプローチです。

于 2010-09-26T20:57:48.030 に答える