Extend the first CVE-2018-1999023 unit test to also try loadstring()
Like @gfgtdf pointed out, loadstring() is still supported by Lua in the
name of backwards compatibility, even though it was deprecated in Lua 5.2
and is no longer mentioned in Lua manual. Thus, as of committing this it's
actually possible to load Lua bytecode.
Let's unit test this to ensure that we don't reintroduce this
vulnerability.
(cherry-picked from commit aa73b83600
)
This commit is contained in:
parent
912dfcc9e6
commit
21999b1fc9
1 changed files with 15 additions and 9 deletions
|
@ -7,20 +7,26 @@
|
|||
[/lua]
|
||||
[lua]
|
||||
code = <<
|
||||
local function f1()
|
||||
bytecode_executed = true
|
||||
end
|
||||
local f2, err = load(string.dump(f1))
|
||||
if f2 then
|
||||
f2()
|
||||
end
|
||||
>>
|
||||
local function f1()
|
||||
bytecode_executed = true
|
||||
end
|
||||
local f2, err = load(string.dump(f1))
|
||||
if f2 then
|
||||
f2()
|
||||
end
|
||||
pcall(function()
|
||||
f2, err = loadstring(string.dump(f1))
|
||||
if f2 then
|
||||
f2()
|
||||
end
|
||||
end)
|
||||
>>
|
||||
[/lua]
|
||||
[event]
|
||||
name = prestart
|
||||
[lua]
|
||||
code = <<
|
||||
wml.variables["execution_prevented"] = not rawget(_G, "bytecode_executed")
|
||||
wml.variables["execution_prevented"] = not rawget(_G, "bytecode_executed")
|
||||
>>
|
||||
[/lua]
|
||||
{ASSERT ({VARIABLE_CONDITIONAL execution_prevented equals yes})}
|
||||
|
|
Loading…
Add table
Reference in a new issue