¿Existe una vulnerabilidad de seguridad que permita todos los orígenes CORS si el origen de la solicitud coincide con un patrón?

1

Originalmente preguntado en: enlace

Teníamos el requisito de permitir solicitudes de origen cruzado siempre que el origen fuera parte del dominio corporativo. Si bien esta pregunta no es específica de C # ni de la API web, los fragmentos a continuación muestran nuestra estrategia.

Tenemos una colección de expresiones regulares que definen los orígenes permitidos:

    private static readonly Regex[] AllowedOriginPatterns = new[]
    {
        new Regex(@"https?://\w[\w\-\.]*\.company.com",
                  RegexOptions.Compiled | RegexOptions.IgnoreCase)
    };

Más adelante, en nuestro atributo ICorsPolicyProvider , probamos el origen. Si el origen coincide con cualquier patrón, agregamos el origen al conjunto de orígenes permitidos:

    var requestOrigin = request.GetCorsRequestContext().Origin;
    if (!string.IsNullOrWhiteSpace(requestOrigin) &&
        AllowedOriginPatterns.Any(pattern => pattern.IsMatch(requestOrigin)))
    {
        policy.Origins.Add(requestOrigin);
    }

La ventaja de este enfoque es que podemos admitir un conjunto grande y flexible de orígenes autorizados y restringir los orígenes no autorizados, todo sin colocar cientos de orígenes en nuestros encabezados.

Tenemos un problema con la reescritura del encabezado HTTP en la parte de nuestro proxy inverso. En algunas circunstancias, el proxy inverso reemplaza el valor Access-Control-Allow-Origin con el host. Me parece sospechoso, pero esa no es mi pregunta.

Se propuso que cambiemos nuestro código para que, si el origen cumple con nuestra condición previa, devolvamos * en lugar de repetir el origen en la respuesta.

Mi pregunta es si abrimos una vulnerabilidad de seguridad potencial devolviendo Access-Control-Allow-Origin: * a los orígenes que coinciden con nuestras condiciones previas. Espero que los navegadores verifiquen los encabezados de control de acceso con cada solicitud. Si es así, no estoy demasiado preocupado. Si no, me imagino a un atacante que ejecuta un sitio web que no es de confianza aprovechando los navegadores que previamente han recibido un * para un origen confiable.

He leído el artículo de OWASP sobre el escrutinio de los encabezados CORS . El artículo no refleja ninguna de mis preocupaciones, lo cual es tranquilizador; sin embargo, quería preguntar a la comunidad antes de seguir adelante.

    
pregunta kbrimington 09.04.2015 - 01:26
fuente

0 respuestas

Lea otras preguntas en las etiquetas