The OpenNET Project / Index page

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



"Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +/
Сообщение от opennews (ok) on 12-Июл-17, 07:05 
Представлен (http://www.mail-archive.com/announce@httpd.apache.org/m...) релиз HTTP-сервера Apache 2.4.27 (http://httpd.apache.org/), в котором представлено 8 изменения (http://www.apache.org/dist/httpd/CHANGES_2.4.27), из которых половина связана с решением проблем с нарушением совместимости. В частности, отключена поддержка
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.org/#2017-07-11) новые выпуски основной и стабильной веток высокопроизводительного HTTP-сервера nginx - 1.12.1 (http://nginx.org/en/CHANGES-1.12) и 1.13.3 (http://nginx.org/en/CHANGES), в которых устранена (http://mailman.nginx.org/pipermail/nginx-announce/2017/00020...) уязвимость (http://nginx.org/en/security_advisories.html)  CVE-2017-7529. При помощи отправки специально оформленного запроса злоумышленник может вызвать целочисленное переполнение и некорректную обработку диапазонов в range-фильтре. При использовании штатного набора модулей уязвимость потенциально может привести к утечке заголовка файла из кэша, если запрос возвращён из кэша. Заголовок может содержать IP бэкенд-сервера или другую частную информацию. При установке сторонних модулей не исключается вызов отказа в обслуживании или утечка части памяти  рабочего процесса. В качестве обходного метода защиты в настройках можно указать "max_ranges 1".


URL: http://www.mail-archive.com/announce@httpd.apache.org/m...
Новость: http://www.opennet.me/opennews/art.shtml?num=46838

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


10. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +2 +/
Сообщение от Comdiv (ok) on 12-Июл-17, 11:36 
Посмотрел исправление уязвимости в 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;

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  –3 +/
Сообщение от Аноним (??) on 12-Июл-17, 11:58 
Си нестандартизирован это многолетние мракобесие с хаками к неопределенному поведению языка при компияции.
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

15. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +2 +/
Сообщение от Comdiv (ok) on 12-Июл-17, 12:05 
Не совсем. Си стандартизирован и неопределённое поведение часть этого стандарта.
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

16. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +/
Сообщение от Аноним (??) on 12-Июл-17, 12:07 
Я понимаю ваш взгляд насчет забивание гвоздей микроскопом.
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

19. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +4 +/
Сообщение от 1 (??) on 12-Июл-17, 16:44 
Забивание гвоздей микроскопом - нестандартизировано (неизвестно каким видом микроскопа забивать гвозди - оптическим, ренгеновским и т.п.)
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

14. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +/
Сообщение от Аноним (??) on 12-Июл-17, 12:01 
>[оверквотинг удален]
>>}
> Всё бы хорошо, проверка переполнения есть, но в конечном вычислении допущена ошибка
>> start = start * 10 + *p++ - '0';
> что приводит к неопределённому поведению, поскольку start - знаковое целое.
> Возможно, nginx компилируют исключительно с флагом -fwrapv, и тогда этот код можно
> считать корректным, но если опираться исключительно на стандарт языка Си, то
> должно быть так:
>> start = start * 10 + (*p++ - '0');
> или так:
>> start = *p++ - '0' + start * 10;

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

17. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +/
Сообщение от Олег (??) on 12-Июл-17, 14:23 
Вы что то перепутали, с этим кодом все в порядке.
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

18. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +1 +/
Сообщение от Comdiv (ok) on 12-Июл-17, 14:33 
Я ничего не перепутал. В этом месте
> (start * 10 + *p++) - '0'

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

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

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

21. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +/
Сообщение от нах on 12-Июл-17, 18:58 
в рассылку-то отписались? Вряд ли Макс читает опеннет.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

22. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +1 +/
Сообщение от Dmitry (??) on 19-Июл-17, 14:10 
Проблему починили http://hg.nginx.org/nginx/rev/e3723f2a11b7
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

23. "Выпуск http-серверов Apache 2.4.27, nginx 1.13.3 и 1.12.1"  +/
Сообщение от Comdiv (ok) on 20-Июл-17, 15:52 
Это здорово, но я не уверен, что проблем совсем не осталось. Например,

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

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

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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