【发布时间】:2019-06-30 22:38:05
【问题描述】:
所以我正在开发一个程序,其中我将 Lua 脚本作为文本存储在文件中,以便稍后由应用程序加载以执行(doText 是我相信的函数)并返回一个值。我对 Lua 代码的期望是从 C 中获取一个浮点数,(仅)对浮点数进行数学运算,然后将另一个浮点数返回给 C。
我很快意识到恶意行为者可以将 Lua 代码注入文件中,使其行为类似于 Microsoft Word/Excel/PowerPoint 中的宏病毒;它可以打开 Lua 文件并复制,或者更糟的是,将代码注入到 PE 文件中,例如使 PE 文件具有毒性和恶意。
有没有办法阻止对恶意行为者有用的 Lua 功能(例如文件 io 操作)或实施功能来阻止这种行为?
【问题讨论】:
-
当然。只是不要将相关功能暴露给脚本。然后添加一个看门狗,这样就不会永远。
-
Lua 具有文件 io 功能。我正在考虑使用 C 解析与攻击者相关的函数(例如文件 io)的脚本,然后如果找到这些函数则不运行脚本。
-
我建议你永远不要低估人们在弄清楚如何运行恶意代码时的聪明才智。我仍然很惊讶人们会打扰,但他们肯定会。我正在研究 Lua 和 JavaScript 来编写应用程序的脚本,但在决定它只是打开了太多盒子后,我把它放在一边。
-
你能取消 Lua 库的某些部分吗?这将使这变得容易得多。是的,@RichardChambers 在我的程序中嵌入 Lua 是小学操场和迪斯尼世界之间的区别。不幸的是,迪斯尼世界需要安全......
-
@SteveMucci 这可能会有所帮助,How to drop all code and memory space of a Lua module 其中一个答案是 Lua 用户存档,该存档讨论了家庭酿造的
unrequire()函数。