【问题标题】:What are good programming practices to prevent malware in standalone applications?在独立应用程序中防止恶意软件的良好编程实践是什么?
【发布时间】:2010-10-15 06:36:50
【问题描述】:

是否有人对如何防止恶意软件攻击独立应用程序有任何想法。假设这是连接到互联网的 Windows 机器上的程序,这是最常见的场景。

我也想知道有哪些类型的攻击是可能的。我相信 .NET 会在运行代码之前使用一种校验和对代码进行某种类型的静态检查。这将检测到静态附加的恶意代码 sn-p。这个可以解决吗?

动态注入代码呢?单独的程序空间在某种程度上防止了这种情况。感染数据文件怎么办?将数据存储在数据库中并且仅使用服务调用而不使用文件操作是否更安全?

提高安全性的内存使用技术怎么样?我知道这不是一个独立的案例,但是,DNS 服务器损坏的问题与我认为 IP 地址的可预测使用有关。是否应该使内存使用更加不可预测?

【问题讨论】:

  • 这是一个大而模糊的问题,很大程度上取决于独立应用程序需要做什么。

标签: .net security malware


【解决方案1】:

我也想知道有哪些类型的攻击是可能的。

您可以检查的内容因您的应用程序而异。以下是一些可以帮助您入门的想法:

  • 假设您有一个图像编辑器,您需要确保人们不会因为图像编码器/解码器库中的错误而利用缓冲区溢出。

  • 如果您有浏览器或文档查看器,则需要在允许用户浏览该 URL 之前检查每个 URL——您应该禁用 javascript 注入。

  • 如果您正在处理套接字,请注意不允许任何任意连接。

  • 如果您正在从系统剪贴板读取/写入,请仔细检查数据并且不要留下任何内容。进行适当的清理。

  • 签署您自己的二进制文件和其他可分发文件。

  • 如果您的应用程序处理安全问题:

  • 使用好的加密库

  • 进行威胁分析
  • 不要使用静态密码

还有更多...

动态注入代码呢?

这几乎总是因为您的代码中存在一些错误。通过静态分析工具运行您的代码并检查缓冲区溢出和朋友。

提高安全性的内存使用技术怎么样?

在多用户场景中,您的应用程序已经被沙盒化,可以在每个用户自己的进程空间中运行。但是,为单个用户沙箱化不同的应用程序是没有意义的。

【讨论】:

    【解决方案2】:

    最重要的是:不要以管理员身份运行,或要求您以管理员身份运行。使用 CAS 拒绝自己不需要的权限。这样一来,如果一切都失败了,而你完全拥有了,那你只是搞砸了自己,而不是整台电脑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      相关资源
      最近更新 更多