The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1

11.07.2017 23:53

Представлен релиз HTTP-сервера Apache 2.4.27, в котором внесено 8 изменений, из которых половина связана с решением проблем с нарушением совместимости. В частности, отключена поддержка HTTP/2 при использовании Prefork MPM, обеспечена совместимость FastCGI c PHP-FPM (возобновлено поведение версии 2.4.20), отключен экспорт недокументированной переменной 'apr_table' в mod_lua, улучшена совместимость mod_lua с Lua 5.1, 5.2 и 5.3. Кроме того, увеличена производительность и снижено потребление памяти в mod_http2, возобновлена поддержка полей из одного символа, устранено дублирование метода HEAD в заголовке Allow.

Также доступны новые выпуски основной и стабильной веток высокопроизводительного HTTP-сервера nginx - 1.12.1 и 1.13.3, в которых устранена уязвимость CVE-2017-7529. При помощи отправки специально оформленного запроса злоумышленник может вызвать целочисленное переполнение и некорректную обработку диапазонов в range-фильтре. При использовании штатного набора модулей уязвимость потенциально может привести к утечке заголовка файла из кэша, если запрос возвращён из кэша. Заголовок может содержать IP бэкенд-сервера или другую частную информацию. При установке сторонних модулей не исключается вызов отказа в обслуживании или утечка части памяти рабочего процесса. В качестве обходного метода защиты в настройках можно указать "max_ranges 1".

Дополнение: С запозданием появились сведения об устранении в Apache 2.4.27 двух уязвимостей, которые не были упомянуты в общем списке изменений: CVE-2017-9789 - обращение к уже освобождённому блоку памяти в mod_http2 и CVE-2017-9788 - утечка данных в mod_auth_digest из-за использования неинициализированной памяти.

  1. Главная ссылка к новости (http://www.mail-archive.com/an...)
  2. OpenNews: Выпуск http-сервера Apache 2.4.26 с полноценной поддержкой HTTP/2
  3. OpenNews: Легко эксплуатируемая DoS-уязвимость в HTTP-сервере Apache (дополнено)
  4. OpenNews: В HTTP-сервере Apache 2.4.23 устранена уязвимость
  5. OpenNews: Релиз HTTP-сервера nginx 1.12.0
  6. OpenNews: Выпуск nginx 1.13.2
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46838-apache
Ключевые слова: apache, httpd, nginx
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (11) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.10, Comdiv (ok), 11:36, 12/07/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Посмотрел исправление уязвимости в Nginx:

    >+if (size > NGX_MAX_OFF_T_VALUE - (end - start)) {
    >+    return NGX_HTTP_RANGE_NOT_SATISFIABLE;
    >+}
    >
    > size += end - start;

    И обратил внимание, на то как выводятся start и end.
    >while (*p >= '0' && *p <= '9') {
    >   if (start >= cutoff && (start > cutoff || *p - '0' > cutlim)) {
    >        return NGX_HTTP_RANGE_NOT_SATISFIABLE;
    >   }
    >   start = start * 10 + *p++ - '0';
    >}

    Всё бы хорошо, проверка переполнения есть, но в конечном вычислении допущена ошибка
    > start = start * 10 + *p++ - '0';

    что приводит к неопределённому поведению, поскольку start - знаковое целое.
    Возможно, nginx компилируют исключительно с флагом -fwrapv, и тогда этот код можно считать корректным, но если опираться исключительно на стандарт языка Си, то должно быть так:
    > start = start * 10 + (*p++ - '0');

    или так:
    > start = *p++ - '0' + start * 10;

     
     
  • 2.13, Аноним (-), 11:58, 12/07/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Си нестандартизирован это многолетние мракобесие с хаками к неопределенному поведению языка при компияции.
     
     
  • 3.15, Comdiv (ok), 12:05, 12/07/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не совсем. Си стандартизирован и неопределённое поведение часть этого стандарта.
     
     
  • 4.16, Аноним (-), 12:07, 12/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Я понимаю ваш взгляд насчет забивание гвоздей микроскопом.
     
     
  • 5.19, 1 (??), 16:44, 12/07/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Забивание гвоздей микроскопом - нестандартизировано (неизвестно каким видом микроскопа забивать гвозди - оптическим, ренгеновским и т.п.)
     
  • 2.14, Аноним (-), 12:01, 12/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >>}
    > Всё бы хорошо, проверка переполнения есть, но в конечном вычислении допущена ошибка
    >> start = start * 10 + *p++ - '0';
    > что приводит к неопределённому поведению, поскольку start - знаковое целое.
    > Возможно, nginx компилируют исключительно с флагом -fwrapv, и тогда этот код можно
    > считать корректным, но если опираться исключительно на стандарт языка Си, то
    > должно быть так:
    >> start = start * 10 + (*p++ - '0');
    > или так:
    >> start = *p++ - '0' + start * 10;

    https://blog.regehr.org/archives/1520

     
  • 2.17, Олег (??), 14:23, 12/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вы что то перепутали, с этим кодом все в порядке.
     
     
  • 3.18, Comdiv (ok), 14:33, 12/07/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я ничего не перепутал. В этом месте
    > (start * 10 + *p++) - '0'

    возможно переполнение, так как условие
    > if (start >= cutoff && (start > cutoff || *p - '0' > cutlim))

    проверяет корректность такого кода:
    > start * 10 + (*p++ - '0')

     
  • 2.21, нах (?), 18:58, 12/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    в рассылку-то отписались? Вряд ли Макс читает опеннет.

     
  • 2.22, Dmitry (??), 14:10, 19/07/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Проблему починили http://hg.nginx.org/nginx/rev/e3723f2a11b7
     
     
  • 3.23, Comdiv (ok), 15:52, 20/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Это здорово, но я не уверен, что проблем совсем не осталось. Например,

    > while (*fmt >= '0' && *fmt <= '9') {
    >   width = width * 10 + (*fmt++ - '0');
    > }

    не проверяет возможность переполнения, и вообще, адекватность полученного числа. width беззнаковый, поэтому неопределённого поведения тут нет, но, возможно, на всякий случай, стоит вставить проверку, чтобы точно избежать проблем в других местах.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру