Reciente vulnerabilidad de ASP.NET y BlogEngine.Net

Vamos a listar las noticias en orden cronológico, para intentar entender la vulnerabilidad:

Y así estamos…

Si no quieren leer todos los enlaces, el resumen de David Salgado sobre la vulnerabilidad:

En resumen… explota una vulnerabilidad relacionada con el algoritmo de cifrado que se utiliza en la autenticación por Forms. Va probando diferentes entradas y detectando la diferencia de respuesta de la aplicación para aprender y finalmente dar con una clave que da acceso.

Y si no queda claro aún, puede ver el video con la demo completa. Y la solución que se tiene ahora, pasa por evitar “responder” a los intentos de usar esta vulnerabilidad. ¿Cómo?. Evitar que los atacantes obtengan información usando los errores personalizados de ASP.NET (customErrors element, web.config).

 

La vulnerabilidad y BlogEngine:

No hay una respuesta oficial de BlogEngine, pero podemos hacer lo siguiente (para dormir tranquilos) hasta tener alguna respuesta oficial. Referencia: The Asp.Net Vulnerability and DotNetBlogEngine.Net.

1. Cambiar el elemento customErrors en el archivo web.config:

   1: <customErrors mode="RemoteOnly" defaultRedirect="~/error404.aspx" />

   2:    <error statusCode="404" redirect="error404.aspx" />

   3: </customErrors>

Por el siguiente:

   1: <customErrors mode="On" redirectMode="ResponseRewrite" 

   2:      defaultRedirect="~/fail.aspx" />

2. Crear la siguiente página ASPX, y subirla a la carpeta root de BlogEngine:

   1: <%@ Page Language="C#" AutoEventWireup="true" %>

   2: <%@ Import Namespace="System.Security.Cryptography" %>

   3: <%@ Import Namespace="System.Threading" %>

   4:  

   5: <script runat="server">

   6:    void Page_Load() {

   7:       byte[] delay = new byte[1];

   8:       RandomNumberGenerator prng = new RNGCryptoServiceProvider();

   9:  

  10:       prng.GetBytes(delay);

  11:       Thread.Sleep((int)delay[0]);

  12:         

  13:       IDisposable disposable = prng as IDisposable;

  14:       if (disposable != null) { disposable.Dispose(); }

  15:     }

  16:   < /script>

  17: <html>

  18: <head runat="server">

  19:     <title>Error</title>

  20: </head>

  21: <body>

  22:     <div>

  23:         An error occurred while processing your request.

  24:     </div>

  25: </body>

  26: </html>

A estar pendientes en estos días, para ver que pasa con esta vulnerabilidad.

 

Saludos,

2 comentarios sobre “Reciente vulnerabilidad de ASP.NET y BlogEngine.Net”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *