pyplot font python lua lupa

font - ¿Se puede usar Lupa para ejecutar un código lua que no sea de confianza en Python?



title plt python (1)

Digamos que creo LuaRuntime con register_eval=False y un attribute_filter que impide el acceso a cualquier cosa excepto algunas funciones de python. ¿Es seguro suponer que el código lua no podrá hacer os.system("rm -rf *") o algo así?


Al mirar el documento de Lupa :

Restringir el acceso de Lua a los objetos de Python

Lupa proporciona un mecanismo simple para controlar el acceso a los objetos de Python. Cada acceso de atributo se puede pasar a través de una función de filtro de la siguiente manera ...

No dice nada sobre prevenir o limitar el acceso a las instalaciones proporcionadas por Lua. Si no se realizan otras modificaciones en el entorno LuaRuntime , una secuencia de comandos lua puede hacer algo como os.execute("rm -rf *") .

Para controlar en qué tipo de entorno funciona la secuencia de comandos lua, puede usar setfenv y getfenv para getfenv la secuencia de comandos antes de ejecutarla. Por ejemplo:

import lupa L = lupa.LuaRuntime() sandbox = L.eval("{}") setfenv = L.eval("setfenv") sandbox.print = L.globals().print sandbox.math = L.globals().math sandbox.string = L.globals().string sandbox.foobar = foobar # etc... setfenv(0, sandbox)

Ahora, al hacer algo como L.execute("os.execute(''rm -rf *'')") se producirá un error de script.