请不要在使用Lua脚本宏病毒的行为吗?

问题描述 投票:2回答:1

所以我工作的一个程序,其中我保存Lua脚本作为文本文件通过一个应用程序被加载后执行(doText是我beleive功能)并返回一个值。我从Lua代码预期是采取浮动从C,做浮动(唯一)的数学运算,并返回另一个浮回C.

我很快意识到,一个恶意的演员可以注入Lua代码进入,使得它像一个宏病毒,如在Microsoft Word / Excel中/ PowerPoint中的文件;它可以打开一个Lua文件和复制,或者更糟的是,代码注入到例如使PE文件毒和恶意PE文件。

有没有办法来阻止Lua的功能,可用于恶意的演员(如文件IO操作)或实现的功能,以排除这种行为?

lua scripting virus
1个回答
4
投票

我的印象是,你要创建其中的Lua脚本运行的Lua沙箱。通过控制沙箱环境,您可以限制哪些脚本可以做。

有许多的类似#1的问题。

然后,Mozilla有一个github上,你可能会发现有用的。 Lua Sandbox Library

它看起来像有从Lua 5.1变化到Lua 5.2这引起了一些老沙箱技术不那么有效。这里是方法为lua 5.1的说明,然而Sand Boxes中使用的功能,setfenv()不再在Lua 5.2可用。

还有Safe Lua这可能会有帮助。

这篇文章,Sandboxing Lua from C提到采摘库加载一次一个创建特定的运行环境。

这是所建议准沙盒是如何实现的:创建新的Lua状态正常后,主机代码应该调用luaL_openlibs()函数来加载由Lua语言提供的标准库,但是这会拉很多功能,这可能是某些不需要的情况。因此,该沙箱拉入每个库分别通过调用luaL_requiref()并利用这个函数叶装载功能的表上lua的堆栈的顶部的事实。不需要的功能,然后让他们零值不确定,...

不过也有对这种做法的,未知的依赖,导致运行错误警告。

这里有必要给有关建议的解决方案一些最后的说明:目前尚不清楚Lua解释是否会在所有aspcts保存不需要的功能,当标准库的唯一子集被加载,但它也工作的很好我的解决方案之外的全部功能。在任何情况下,一些测试建议。这是由于这样的事实,该语言的一些看似核心功能(例如ipairs())实际上是由基础库提供。

最好的办法是锁定的脚本,让你可以使用沙箱技术,即使作为一个值得信赖的脚本运行。

© www.soinside.com 2019 - 2024. All rights reserved.