Threat Model

Риски публичных прокси-серверов и как с ними жить

3 min read Published Updated 510 words

Относитесь к каждому бесплатному прокси как к ненадёжной инфраструктуре, потому что так оно и есть. Оператор анонимен, модель финансирования неясна, и один и тот же сокет может за неделю побывать в ботнете, взломанном домашнем роутере и исследовательской honeypot. Всё это не делает бесплатные прокси бесполезными — это делает небольшой набор привычек обязательным.

Распространённые атаки

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

Кража учётных данных через незащищённый HTTP. Если вы входите куда-либо через http:// через неизвестный прокси, оператор видит пароль. Всегда туннелируйте TLS через CONNECT или используйте SOCKS для подключения к адресату, который сам использует HTTPS. Современные потоки входа используют только HTTPS на крупных сайтах, но устаревшие интрасети, страницы администрирования IoT и старые CMS — нет.

Инъекция заголовков и содержимого. Враждебный HTTP-прокси может переписывать произвольные части вашего запроса: изменять куки, подменять referrer, внедрять параметры отслеживания или удалять заголовки кэширования. Тот же прокси может внедрять содержимое в ответы — скрипты в HTML, перенаправления в JSON, рекламу в статические страницы. Если вы читаете ответы сервера через прокси, считайте их скомпрометированными, пока не сможете проверить целостность через доверенный путь.

Перехват DNS через SOCKS5. SOCKS5 может разрешать имена хостов на стороне прокси. Если прокси искажает DNS-запись, вы подключаетесь к серверу, контролируемому оператором. Настройте ваш клиент на локальное разрешение, где это возможно: curl --resolve example.com:443:93.184.216.34, или в коде передавайте IP-адрес вместо имени хоста.

Логирование трафика. Даже добросовестный прокси может логировать каждый запрошенный вами URL. Для моделей угроз, включающих «какие URL запрашивал этот человек», любой публичный прокси — неправильный инструмент. Используйте Tor или платный VPN с опубликованной политикой отсутствия логов и историей оспаривания судебных повесток.

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

Защита в порядке приоритета

Отправляйте всё внутри TLS через CONNECT или на HTTPS-адресат через SOCKS. Никогда не используйте за публичным прокси те же учётные данные, которые вы используете где-либо ещё. Строго проверяйте сертификаты — привязка к эмитенту избыточна для неформального использования, но принимать любую цепочку безрассудно. Установите короткие таймауты на соединение и чтение. Логируйте ответы прокси для криминалистического анализа, когда рабочая нагрузка это оправдывает. Часто меняйте прокси; прокси, работавший пять минут назад, не обязательно тот же самый сейчас.

Для чего на самом деле хороши бесплатные прокси

Три категории задач оправдывают этот шум. Тестирование географических вариаций контента: отдаёт ли ваш CDN правильную страницу из Франкфурта по сравнению с Сан-Паулу? Сбор публичных, неаутентифицированных данных: результаты поисковых систем, публичные API без ограничений по IP, контент, уже проиндексированный в других местах. Проверка того, что ваше приложение ведёт себя корректно, когда его исходящий IP незнаком цели — полезно для QA в системах с IP-эвристиками мошенничества.

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