iProxy.online logo
Прокси для
Ресурсы
Компания
Search icon
/
RU
English
Português
Русский
Español
Türkçe
Українська
Tiếng Việt
ไทย
中文
हिंदी
Show menu icon

Как мы обнаружили скрытую ошибку TLS 1.3 на тысячах Android-устройств

Начало Работы
Средний рейтинг: 0.00 голосов

Если вы работаете с мобильными прокси, вы знаете эту боль: что-то ломается, и никто не может объяснить почему. Устройство находится в другой стране. Пользователь говорит «не работает». Никаких логов, никаких сообщений об ошибках, никаких трассировок стека. Просто тишина.

Именно это и произошло у нас — только мы успели это поймать до того, как большинство пользователей вообще заметило. Вот почему.

Нужны мобильные прокси?
Создайте прокси прямо сейчас!
Начните 48-часовой пробный период

iProxy постоянно запускает диагностику сети на каждом устройстве.

Наше Android-приложение не просто пересылает трафик. Оно выполняет полный набор проверок состояния сети — контролирует соединение, задержки, разрешение DNS, доступность по HTTP и HTTPS и многое другое. Эти проверки непрерывно выполняются против контролируемых серверов, поэтому мы в любой момент знаем состояние сети каждого устройства.

network-diagnostics.svg

Именно так мы и обнаружили проблему: небольшой процент устройств начал не проходить проверки HTTPS, тогда как HTTP работал без сбоев. Ошибка возникала на этапе TLS-рукопожатия. Никакой ошибки, никакого сообщения о таймауте — просто соединение, которое молча уходило в никуда.

Без встроенной диагностики это было бы невидимо. Пользователи наблюдали бы периодические сбои прокси без какой-либо закономерности и объяснений. Мы бы только гадали.

Что происходило на самом деле

Сбои были связаны именно с TLS 1.3. Соединения по TLS 1.2 через то же устройство, к тому же серверу, в то же время — работали нормально. TLS 1.3 — нет.

В итоге причиной оказалось сочетание двух факторов:

tls-handshake-comparison.svg

Современные TLS-клиенты отправляют значительно большие сообщения при рукопожатии, чем раньше. Go 1.23+ и Chrome 124+ теперь по умолчанию включают обмен ключами на основе постквантовой криптографии (ML-KEM). Из-за этого первое сообщение TLS-соединения — ClientHello — становится достаточно большим, чтобы превысить размер одного TCP-пакета. Ответ сервера в TLS 1.3 также отправляется одним большим блоком (вместе со всей цепочкой сертификатов), который может занимать 4–6 КБ для таких сайтов, как Google или Cloudflare.

Android-устройства под нагрузкой на память с трудом буферизуют эти увеличившиеся сообщения. Наше приложение работает как TCP-прокси — оно читает байты из одного сокета и записывает в другой. Когда на устройстве не хватает RAM, такая буферизация может молча давать сбои. Данные рукопожатия либо не пересылаются дальше, либо ответ не возвращается обратно. Без ошибки. Без сбоя. Просто ничего.

TLS 1.2 полностью избегает этой проблемы: его рукопожатие разбито на несколько небольших итераций обмена, и ни одно отдельное сообщение не достигает такого размера, чтобы вызвать проблемы.

Почему это важно для качества прокси

Именно такие проблемы отличают надёжный прокси-сервис от раздражающего.

Без активной диагностики провайдер видел бы жалобы пользователей на случайные сбои HTTPS. Служба поддержки говорила бы «перезапустите приложение» или «проверьте подключение к интернету». Проблема то появлялась бы, то исчезала. Никто не связал бы её с версиями TLS или памятью устройства.

В iProxy мы автоматически обнаружили эту закономерность. Наша система диагностики определила, что TLS 1.3 даёт сбои, тогда как TLS 1.2 работает — на конкретных устройствах, в конкретное время. Это дало нам точное направление для поиска.

Что мы сделали

Разобравшись в проблеме, мы выпустили два исправления:

auto-recovery.svg

Умный откат TLS. Когда наша диагностика обнаруживает паттерн сбоя TLS 1.3 на устройстве, мы автоматически вносим корректировки. Трафик продолжает передаваться без каких-либо действий со стороны пользователя.

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

Кроме того, мы нашли и устранили утечки памяти в нашем приложении, которые способствовали возникновению проблемы. Улучшение сразу стало видно на наших дашбордах мониторинга — частота сбоев TLS 1.3 по всему парку устройств значительно снизилась.

Вот что на самом деле означает «управляемая прокси-инфраструктура»

Написать приложение, которое пересылает TCP-пакеты, может каждый. Сложность — в том, чтобы знать, когда оно перестаёт работать, понимать причину и устранять проблему до того, как пользователь откроет тикет в поддержку.

iProxy мониторит состояние сети на каждом устройстве в режиме реального времени. Мы не ждём, пока пользователи сообщат о проблемах — мы обнаруживаем их, диагностируем и во многих случаях устраняем автоматически. Вот в чём разница между прокси-приложением и прокси-инфраструктурой.

Наша команда разработчиков опубликовала подробный технический разбор этого расследования. Если вам интересны детали — захваты пакетов, различия между Go и curl, аспект постквантовой криптографии — читайте здесь: Когда TLS 1.3 «тихо» умирает внутри вашего Android-прокси.


iProxy.online предоставляет инфраструктуру мобильных прокси в 100+ странах и через 600+ операторов связи. Наше Android-приложение превращает телефоны в надёжные прокси-серверы со встроенной диагностикой сети, автоматическим мониторингом состояния и удалённым управлением.

Оцените эту статью, если она вам понравилась: