• [^] # Re: Debian Security

    Posté par . En réponse au journal Apache n'apprécie pas le HTTP Range. Évalué à 10.

    Il y à plusieurs solutions proposées. Elles concernent toutes une façons de limiter les requêtes contenant des rangées.

    Rejeter Range

    Apache 2

    Pour Apache 2, on définit une variable d'environnement si on détecte plus de 5 rangées dans la requête et on retire le champ Range.

    SetEnvIf Range (,.*?){5,} bad-range=1
    RequestHeader unset Range env=bad-range
    
    

    Il est aussi possible de ne pas s'embêter et de carrément le retirer dès qu'il est présent.

    RequestHeader unset Range
    
    

    Apache 1.3

    Pour Apache 1.3 même chose mais en utilisant mod_rewrite.

    RewriteEngine on
    RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$)
    RewriteRule .* - [F]
    
    

    Limiter la taille des champs

    Deuxième solution, limiter la taille des champs de l'en-tête.

    LimitRequestFieldSize 200
    
    

    Inconvénient, cela peut casser certaines communications et le champ Range est toujours présent.

    Utiliser un compteur

    Le module mod_rangecnt dont les binaires sont disponibles permet de compter les rangées et de rejeter la requête.

    Suivre l'évolution

    La dernière solution est de suivre l'évolution de la résolution du problème et d'appliquer les patchs proposés.