gpt4 book ai didi

c++ - 在 VM 中安全地运行 C++

转载 作者:太空狗 更新时间:2023-10-29 23:47:37 25 4
gpt4 key购买 nike

因此,我正在制作一个在线应用程序,用户可以提交代码并将输出显示给用户。我已将安全放在首位,并采取了以下步骤来确保代码安全运行:

  • 在虚拟机上运行代码,在唯一使用的 VPS 上运行这些虚拟机。这些 VM 不允许通过工作目录进行任何网络访问或文件访问。
  • 使用以下 G++ 标志:

    -O -std=c++98 -pedantic-errors -Wfatal-errors -Werror -Wall -Wextra -Wno-missing-field-initializers -Wwrite-strings -Wno-deprecated -Wno-unused -Wno-non-virtual-dtor -Wno-variadic-macros -fmessage-length=0 -ftemplate-depth-128 -fno-merge-constants -fno-nonansi-builtins -fno-gnu-keywords -fno-elide-constructors -fstrict-aliasing -fstack-protector-all -Winvalid-pch

我想我的问题是我怎样才能让它更安全?您个人认为这种方法有什么问题吗?

最佳答案

编译器标志并不重要。具有这些标志的 C++ 程序可以执行与使用任何其他标志集编译的 C++ 程序相同的操作。特别是,有许多方法可以实现未定义的行为,是的,可能会利用操作系统中可能存在的任何安全漏洞。

您正在执行不受信任的代码,故事结束。您可以希望操作系统不会受到损害,代码将无法获得新权限,甚至无法以 root 用户身份运行,否则会搞乱系统。

而且您可以希望,如果发生这种情况,它仍将包含在 VM 中并且不会影响主机。

但它仍然是不受信任的代码,并且它可以做任何不受信任的代码可能做的事情。您能做的最好的事情就是确保它以最少的权限运行,并且操作系统和虚拟化软件都已 100% 打上补丁。

当然,根据您提到的限制,我的第一个问题是,“有什么可以阻止我用垃圾填满硬盘吗?”好的,所以我不能在工作目录外写,但我仍然可以使磁盘空间不足。或者是否有磁盘配额或任何强制执行的内容?如何限制我使用的 CPU 时间?我是否能够使用机器上的所有资源,使其无响应?

关于c++ - 在 VM 中安全地运行 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4810688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com