Что делать, если я напишу программу для открытия TCP-порта и запуска, скажем, эхо-сервера? Может ли кто-нибудь получить доступ к данным в моей системе? или любой другой риск открытия порта?
Это зависит от того, насколько хорошо написана программа и под какими учетными данными работает ваша серверная программа. Например, предположим, что вы выделяете буфер фиксированной длины для чтения из сокета, а затем вы читаете больше, чем выделенный размер, может быть возможно создать запросы сервера, которые переполняют буфер в стеке и перезаписывают адрес возврата. В этот момент хакер может переназначить адрес возврата, чтобы он находился в (переполненном) буфере, который мог содержать реальный код. Затем, если ваша серверная программа запускается от имени пользователя root / администратора, вы разрешаете выполнение кода в этом контексте.
Если ваша программа уязвима, хакер может выполнить код в вашей системе с привилегиями вашей программы. Или, возможно, он мог бы организовать DoS-атаку (ваша программа будет занимать весь процессор, память или дисковое пространство, и все перестанет работать и рухнет :-)).
Раньше можно было найти ошибку в стеке TCP / IP ОС и использовать ее. Так что, даже если ваша программа была идеальной, были проблемы с открытым портом. Однако я давно не слышал о таких ошибках.