研究人员如何避免套接字漏洞

本文关键字:漏洞 套接字 何避免 研究人员 | 更新日期: 2023-09-27 18:03:31

我需要使用c#让计算机通过网络进行通信。网络说要使用套接字

网络上还说,有很多恶意的人会喜欢破坏我们的工作,只要有一半的机会,通过开放端口,我们给了他们一半的机会。

在Windows 7/8/Server 2012机器上使用。net 4.5和c#中的套接字会引入哪些漏洞,如何最好地缓解这些漏洞?

有什么利害关系?打开一个端口真的会让恶意黑客破坏我们的工作吗?

研究人员如何避免套接字漏洞

虽然@jwd所说的大部分是正确的,但在许多情况下,通过沙箱或其他安全层限制联网应用程序的访问权限的概念可能既不可行也不可取。

网络应用程序的最大问题是它们如何处理(或无法处理)网络流中的畸形数据。99%的情况下,这是因为创建网络代码的开发人员很懒。时期。网络黑客的终极目标是远程代码执行。在这方面,过去有两种主要的方法相当成功:
  1. 传统上最大的问题是缓冲区溢出。
    当您使用c#的托管对象时,这就不太可能成为问题。你必须非常努力地使c#应用程序容易受到这种类型的攻击。自c语言中单个堆栈上的静态缓冲区的美好时光以来,我们已经走过了漫长的道路。

  2. 紧随其后的是各种注入攻击的问题。阅读SQL注入和代码注入的一般内容。总是绝对确定你正在检查用户提交给你的系统的每一个值,如果有疑问总是拒绝问题消息

  3. 文件系统访问。
    给定对任意路径的访问权限,攻击者可能能够将文件上传到可以执行该文件的位置。如果你允许上传,一定要确保他们不能去任何地方,只有一个特定的文件夹或一组文件夹。

  4. 当然,还有按设计执行代码。
    在这里,您的代码被设计为允许远程代码执行,但没有被充分保护以限制恶意内容。这通常是一个坏主意,但如果您必须允许这样做,请确保您的安全性尽可能强。

代码执行之后,安全漏洞是下一个大问题。你可以找到许多关于敏感数据通过安全性差的系统泄露的新闻报道,而且大多数时候是因为系统的"安全性"特别差。

端到端加密-例如通过SSL -是必须无论何时你可能传输敏感数据…包括用户名和密码。数据包嗅探器可以监视未加密的数据流并提取登录详细信息。假设您散列了实际的敏感登录数据…如果我用同样的哈希值登录会发生什么?

有很多这样的问题,在你掌握所有这些问题之前,你必须做大量的阅读。例如,SQL注入攻击会让你非常头疼。

最后,当所有这些都失败时,攻击者可能会满足于仅仅关闭您的系统。当您的网络代码失败时,请确保它能够优雅地处理。

故事的寓意:

  1. 链接加密(SSL或同等)是一件好事™
  2. 检查每一条输入并丢弃任何发送错误数据的连接。
  3. 始终假设您的系统将受到攻击,并相应地编写代码。
  4. 优雅地处理错误,否则后果自负。

打开的端口只有在监听它的东西允许的情况下才有危险。

通常,最薄弱的环节是你的应用程序,而不是底层的库。

当然有可能在以下方面有问题:

  • 你的操作系统对网络的处理
  • .NET框架对网络的处理

但是大多数情况下,当恶意数据到达

时,事情变得很糟糕
    应用程序

最后一个,当然,完全取决于你的应用程序的性质。

例如,如果你有一个监听任意命令的应用程序,比如在服务器上运行一个程序,那么攻击者基本上可以做任何你的应用程序有权限做的事情——删除文件,等等。

降低风险的一种方法是给你的应用程序非常小的权限-在操作系统级别。这样,被入侵的应用程序就不能删除系统文件。

另一种降低风险的方法是在沙盒环境中运行应用程序,例如chroot或FreeBSD jail。这也是与操作系统相关的。

简而言之,有些事情可能会在你的控制之外出错(例如:操作系统漏洞),还有其他事情,更有可能,只是你的应用程序出错。有一些方法可以减轻这种风险。