Создание локального сетевого сокета
![]() |
Критичность: НИЗКИЙ |
| Способ обнаружения: DAST, NETWORKING |
Описание
Приложение создаёт слушающий сетевой сокет (java.net.ServerSocket). Локальные сокеты используются для межпроцессного взаимодействия, отладки, встроенных HTTP-серверов и проксирования трафика. Stingray фиксирует факт создания такого сокета в рантайме как находку низкой критичности: сам по себе слушающий сокет не является уязвимостью, но требует проверки — что именно он принимает, есть ли аутентификация и к какому интерфейсу он привязан.
Пример наблюдаемого кода:
ServerSocket server = new ServerSocket(8080); // открыт слушающий порт
Socket client = server.accept();
Проблема
- Расширение поверхности атаки. Любой слушающий порт — это дополнительная точка входа. Если на нём работает встроенный сервис, его уязвимости (инъекции, обход логики) становятся эксплуатируемыми.
- Отсутствие аутентификации. Локальные сокеты часто реализуют без авторизации, рассчитывая на «доверенное локальное окружение», что приводит к утечке данных и выполнению привилегированных операций.
- Межприложенческий доступ. К TCP-сокету, привязанному не только к loopback, могут подключаться другие приложения на устройстве.
- Отладочные серверы в production. Сокеты, добавленные для разработки/профилирования, могут случайно попасть в release-сборку.
Если сокет привязан к
0.0.0.0(всем интерфейсам), риск существенно выше — см. дефект «Прослушивание всех сетевых интерфейсов через локальный сокет (0.0.0.0)».
Рекомендации
-
Привязывайтесь только к loopback (
127.0.0.1/InetAddress.getLoopbackAddress()), если сокет нужен исключительно самому приложению: -
Внедряйте аутентификацию для любого слушающего сокета, даже локального: токены, проверка вызывающей стороны, одноразовые секреты.
-
Предпочитайте Unix domain sockets /
LocalSocketдля взаимодействия в пределах устройства — они не доступны по сети. -
Минимизируйте время жизни сокета и закрывайте его сразу после использования.
-
Исключайте отладочные серверы из release-сборок.
-
Шифруйте передаваемые данные (TLS), если по сокету проходит чувствительная информация.
