【问题标题】:Creating an bomb-proof worker process (on windows)创建防弹工作进程(在 Windows 上)
【发布时间】:2011-05-12 21:53:54
【问题描述】:

我编写了一个使用 C 语言编写的各种库的 pdf 查看器。此 C 代码可能很容易被利用。而且要检查的行太多了。我将不得不假设此代码可能包含可利用的错误。

问题是 C 代码非常简单。字节流在一端输入,位图(也是字节流)从另一端输出。

受谷歌浏览器的启发,我正在考虑创建一个单独的进程来进行解码和页面渲染。理想情况下,这应该在一个绝对无权做任何事情的进程中执行,除了读取它拥有的一个输入流,并在另一端输出到字节流(一些未压缩的位图)。

我认为流程不应该做的是:

  • 任何磁盘访问
  • 打开套接字
  • 内存使用量有限
  • 与其他进程访问共享内存
  • 加载其他 dll 的
  • ...还有什么?

这可能吗?这是在某处描述的吗?

【问题讨论】:

标签: windows security process isolation


【解决方案1】:

如果您有源代码 - 您可以检查它没有执行所描述的事情。 好吧,限制可用内存有点困难。但是,您可以使用SetProcessWorkingSetSize

此外,在您构建可执行文件后,您可以检查其 DLL 导入表(通过依赖项walker)以确保它不会访问任何文件/套接字函数。

【讨论】:

  • 我所说的是我不希望利用代码能够做的事情。我认为仍然可以通过在运行时查询它们的地址来从进程可见的 dll 中运行函数。我正在寻找操作系统级别的防线。
  • 您也可以检查代码没有导入LoadLibraryXGetProcAddress。因此 - 代码可能无法使用任何其他套接字/文件功能。除非它是一个真正严重被利用的代码,它可能会在运行时扫描映射到内存中的 kernel32.dll 并在其导出表中找到所需的函数。
【解决方案2】:

这是不可能的。最终,任何潜在的漏洞利用代码都将以该进程运行的任何特权运行。如果您以标准用户身份运行它,那么您将限制可能造成的损害,但最好的办法是尽可能多地修复代码。

【讨论】:

  • 我同意漏洞利用仅限于进程权限。所以我们的想法是将这些特权减少到最低限度。
  • 您可以创建一个新组/用户并使用本地安全策略对其进行严格限制,但这对于一个小型 PDF 查看器来说似乎有点极端。
猜你喜欢
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
相关资源
最近更新 更多