利用漏洞“向后”进入出站tcp连接的风险

时间:2009-03-26 18:43:44

标签: security tcp firewall network-protocols exploit

我正在构建一个服务器应用程序,它将通过防火墙启动TCP连接来维持与其他应用程序的连接,该防火墙仅对应用程序将连接到的相关IP端口的出站流量开放。

有人接管我们连接的机器以及通过我们建立的出站连接向后利用我们的应用程序的风险是什么。

连接上使用的协议不难理解,但它基于周期性心跳(间隔30秒)。如果错过了两个连续的心跳,则initiater(us)将终止连接并重新连接。

我们应用程序的源代码或二进制文件将无法用于我们连接的orginasation。

4 个答案:

答案 0 :(得分:3)

如果攻击者有权访问您要连接的计算机或网络,则攻击者可以直接嗅探网络流量。这可以让他对您的协议进行反向工程,然后尝试将恶意数据注入到返回服务器的数据中,或者完全替换客户端应用程序。

由于听起来您不能信任客户端应用程序,因此无论是谁启动连接,一旦启动,您就拥有双向通信通道。在这种情况下,最好的办法是验证来自客户端的所有数据。

如果您可以信任客户端而不是网络,那么在您的网络协议中添加一些加密将会有所帮助。

答案 1 :(得分:0)

如果您自己的应用程序服务器不侦听任何传入数据,那么风险很小

答案 2 :(得分:0)

除了向你讲协议外,他们对你无能为力。风险正是使用您的协议从终点到终点可以完成的任何事情都将完成。

N.B。我并不是说他们必须向您说出格式良好的版本的协议。如果你的系统使用fgets()将传入的消息读入静态缓冲区,那么'缓冲区溢出'是使用你的协议可以做的事情的一部分。

答案 3 :(得分:0)

您的情况是相当普遍的情况,将网络与互联网完全隔离的情况非常罕见。也就是说,考虑以下因素:

  • 第三方可以根据协议支持的内容发送信息。它几乎是一场失败的战斗,因为没有任何你可以真正依赖的东西会完全阻止它们。见下文。
  • 如果您想确保信息来自合适的第三方,那么您应该需要签名信息。一些更高级别的协议可以为您执行此操作。您在实施中暴露于漏洞,但如果协议支持它,那么您自己的漏洞就不会那么容易受到攻击。
  • 如果您想确保信息是私密的,则需要加密。一些更高级别的协议可以为您执行此操作。上述相同的评论适用。
  • 您可能会遇到使用的较低级别协议(隐式或显式)中的任何漏洞。滚动你自己的一切都是不可能和不切实际的,如果你这样做,你可能会引入漏洞。当然,请确保拥有最新的补丁。