Рекомендуем
VPS на Windows и Linux — от 49 ₽ за 7 дней Быстрый запуск сервера на NVMe для сайтов, ботов и других задач.
Выбрать VPS

3proxy 1.0.2 закрыл ошибку проверки DNS-ответов — прокси расходует меньше памяти

24 октября 2026 года вышел 3proxy 1.0.2: встроенный DNS-прокси dnspr теперь проверяет источник и содержимое ответов, отсекая ответы с неверным адресом отправителя, идентификатором или вопросом. Разработчики также устранили зависание обработки неполной TLS-записи и снизили расход памяти HTTP-прокси: в приведённом ими сценарии с 2000 туннелей CONNECT потребление сократилось с 339 до 213 МБ.

3proxy 1.0.2 закрыл ошибку проверки DNS-ответов
3proxy 1.0.2 закрыл ошибку проверки DNS-ответов

DNS-прокси dnspr больше не принимает ответ от постороннего отправителя

В прежних версиях dnspr мог передать клиенту первый пакет, поступивший на сокет, через который отправлялся запрос к DNS-серверу. Программа при этом не проверяла, совпадают ли адрес отправителя, идентификатор DNS-запроса и сам вопрос. Если в сокет попадал поддельный ответ, клиент рисковал получить неверный адрес запрошенного домена.

В 1.0.2 исходящий DNS-запрос получает случайный идентификатор. dnspr принимает ответ только от того DNS-сервера, к которому обратился, и сверяет идентификатор вместе с вопросом. Так устраняется конкретный способ подмены ответа, описанный в примечаниях к релизу. В описании релиза нет сведений о подтверждённых атаках с использованием этой ошибки или отдельного идентификатора CVE.

Для понимания масштаба проблемы полезно знать, где используется dnspr. По официальной документации, он может пересылать запросы к DNS-серверам, указанным через nserver, и работать с кэшем nscache и статическими записями nsrecord. Поэтому некорректный ответ затрагивал именно клиентов, которые использовали такой DNS-прокси для определения адресов сайтов и сервисов.

Неполные TLS-записи больше не заставляют поток занимать весь CPU

Ещё одна ошибка проявлялась, когда клиент отправлял только часть TLS-записи и затем прекращал передачу. Обрабатывающий поток мог бесконечно работать, загружая одно процессорное ядро, а ожидание данных не завершалось по тайм-ауту. В 3proxy 1.0.2 это поведение исправлено.

Релиз меняет и обработку корректного TLS-трафика. С OpenSSL 1.1.0 и новее программа заранее считывает TLS-записи; по измерениям разработчиков, на их расшифрование уходит на 9–14% меньше процессорного времени. Это показатель конкретной операции, а не обещание такого же ускорения любого прокси-соединения.

HTTP-прокси теперь освобождает буфер запроса размером 64 КБ на время передачи данных через туннель CONNECT и ожидания следующего запроса в постоянном соединении. В опубликованном сравнении 2000 туннелей занимают 213 МБ вместо 339 МБ — разница составляет 126 МБ. Прежде буферы сохранялись и во время работы туннелей, которым они не требовались.

На Linux снова доступен собранный по умолчанию механизм splice(), но задействуется он для служб с опцией -s. Разработчики предусмотрели варианты -s1 для передачи от сервера, -s2 для передачи от клиента и -s3 для обоих направлений. Обычная -s выбирает случаи, где механизм выгоден для длинных потоков и больших объёмов данных.

Исправления SOCKS, обрывов соединений и работы в Linux и Windows

В SOCKS CONNECT и BIND при отсутствии -Ne программа возвращала клиенту адрес его подключения к прокси вместо адреса сокета, созданного для связи с назначением. Для BIND это было критично: клиент получал неверный порт, поэтому другая сторона не могла установить ожидаемое соединение. По сведениям разработчиков, ошибка существовала с версии 0.9.6.

Также исправлена обработка half-close — ситуации, когда одна сторона закрыла только отправку данных, сохранив возможность принимать ответ. Раньше из-за этого ответ мог обрываться, иногда с потерей мегабайтов данных; похожая проблема возникала при загрузке данных после закрытия отправки сервером. В Windows доработали завершение соединений, чтобы избежать утечки сокета и потери последних байтов ответа.

Для Linux устранены ошибки работы с Unix-сокетами: прокси мог передать лишь начало ответа, абстрактный сокет получал некорректное имя, а при перечитывании конфигурации удалялся файл слушающего сокета. Отдельно исправили ситуацию, когда сигнал SIGPIPE мог завершить процесс 3proxy. У HTTP-прокси устранено ненужное переподключение к серверу при смене метода запроса, например с GET на POST при обращении к тому же хосту.

Совместимость конфигураций после перехода на 3proxy 1.0.2

Обновление содержит изменения, которые влияют на привычное поведение служб. Параметр TCP_NODELAY теперь включён по умолчанию для соединений прокси с клиентом и сервером; в настройках предусмотрено его отключение через -ocTCP_NODELAY=0 и -osTCP_NODELAY=0. Параметры сокетов принимают значения в форме NAME=VALUE, а некорректные имена и значения считаются ошибкой конфигурации.

Поддержка адресов ftp:// в HTTP-прокси теперь требует отдельной опции -Xftp и сборки с FTP=true. Исправлена передача журналов в syslog и определение локального времени при использовании chroot. Разработчики устранили несколько источников утечек памяти, в том числе после неудачной перезагрузки конфигурации и ошибочного TLS-рукопожатия. Для связки wolfSSL с режимом WOLFSSL_QT, встречающейся в wolfSSL 5.9.1 из Ubuntu 26.04, исправили выпуск подменных сертификатов TLS.

Версия 1.0.2 опубликована для Windows, Linux в пакетах DEB и RPM, а также для отдельных платформ OpenWrt 24.10. Контрольные суммы и подписи сборок доступны на официальной странице релиза.

В релизе 3proxy 1.0.2 сошлись безопасность DNS и экономия ресурсов

По сравнению с 1.0.1 новая версия закрывает отдельную проблему проверки DNS-ответов, устраняет зависание при получении неполной TLS-записи и меняет расход ресурсов при большом числе HTTP-туннелей. Дополнительно исправлены сценарии с SOCKS BIND, частичным закрытием соединений и Unix-сокетами. Цифры экономии памяти и процессорного времени пока представлены как результаты измерений разработчиков; независимых сравнений в опубликованных материалах релиза нет.

Источники

При использовании материалов сайта необходимо указывать ссылку на TGLand.ru. Если вы копируете фрагменты текста в интернете, прямая гиперссылка, доступная для индексации поисковыми системами, должна быть размещена в начале материала.

Вам также может понравиться