Secure Lua execution environment based on LuaJIT with process isolation.
Result of engineering thesis at the Wrocław University of Science and Technology [Link will be available in repository].
Only Linux is currently supported.
- Linux kernel 5.1+ (requires seccomp-bpf, memfd and
F_SEAL_FUTURE_WRITE) - CMake 3.27+
- Python3.11+ (for build-time tools)
- C compiler toolchain
- Valgrind (for running tests, at least 3.23.0 or some tests may fail)
- Headers for OpenSSL (you may need to install a package like
libssl-dev)
Make sure that submodules are up to date:
git submodule update --init --recursiveCreate build directory and prepare build with cmake (-DEXAMPLES=ON enables building example programs):
cmake -B build -DEXAMPLES=ONBuild the library and examples:
cmake --build buildRun tests:
make -C build testThere are 4 steps to the build:
- Enums are generated from CSV files in
intermediate/. libghost.sois built without an embedded jail executable (ghost-jail).ghost-jailis built and linked against the previously builtlibghost.so.libghost.sois rebuilt withghost-jailembedded.
The final libghost.so is self-contained and does not need ghost-jail to be on disk.
The directory build/examples contains the example programs filesize and prep.
Build documentation by running the following command in the root directory:
doxygenDocumentation is written into the docs directory.