Риск использования эксплойтов в исходящих TCP-соединениях

Я создаю серверное приложение, которое будет поддерживать соединения с другими приложениями, инициируя TCP-соединения через брандмауэр, который открыт только для исходящего трафика на соответствующие IP-порты, к которым будет подключаться приложение.

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

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

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


person ilDocteur    schedule 26.03.2009    source источник


Ответы (4)


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

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

Если вы можете доверять клиенту, но не сети, то добавление некоторого шифрования к вашему сетевому протоколу поможет.

person Chris AtLee    schedule 26.03.2009

Если ваш собственный сервер приложений не прослушивает входящие данные, риск очень невелик.

person Eric    schedule 26.03.2009
comment
Несколько необычный протокол, отвечающий этому критерию. - person chaos; 26.03.2009

Они не могут ничего сделать с вами, кроме как сообщить вам ваш протокол. Риск заключается как раз в том, что все, что можно сделать, от их конца до вашего конца, используя ваш протокол, будет сделано.

N.B. Я не имею в виду, что они должны говорить вам правильно сформированную версию вашего протокола. Если ваша система считывает входящие сообщения в статический буфер с помощью fgets (), то «переполнение буфера» является частью того, что можно сделать с вами, используя ваш протокол.

person chaos    schedule 26.03.2009

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

  • Третьи стороны могут отправлять входящую информацию в зависимости от того, что поддерживает протокол. Это в значительной степени проигранная битва, поскольку нет ничего, на что вы действительно можете положиться, что могло бы полностью их заблокировать. Увидеть ниже.
  • Если вы хотите убедиться, что информация поступает от правильного третьего лица, вам потребуется подписанная информация. Некоторые протоколы более высокого уровня могут сделать это за вас. Вы подвержены уязвимостям в реализации, но если протокол поддерживает ее, то вряд ли ваш собственный будет менее уязвимым.
  • Если вы хотите, чтобы информация была конфиденциальной, вам нужно шифрование. Некоторые протоколы более высокого уровня могут сделать это за вас. Применяются те же комментарии, что и выше.
  • Вы подвержены любой уязвимости в используемых протоколах нижнего уровня (неявно или явно). Избавиться от всего самостоятельно и невозможно, и непрактично, и если вы это сделаете, то, скорее всего, внесете уязвимости. Конечно, убедитесь, что у вас установлены самые свежие патчи.
person eglasius    schedule 26.03.2009