projects
/
project
/
luci.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
7a37d02
)
luci-base: sys: prevent path traversal via sys.init routines
author
Jo-Philipp Wich
<
[email protected]
>
Wed, 19 Jan 2022 15:32:52 +0000
(16:32 +0100)
committer
Jo-Philipp Wich
<
[email protected]
>
Wed, 19 Jan 2022 15:34:07 +0000
(16:34 +0100)
Filter the init script name parameter through fs.basename() to avoid
invoking paths outside of /etc/init.d/.
Reported-by: Graham R <
[email protected]
>
Signed-off-by: Jo-Philipp Wich <
[email protected]
>
(cherry picked from commit
8752701b0d01a81d0bd0a735be733f24ad11ab69
)
modules/luci-base/luasrc/sys.lua
patch
|
blob
|
history
diff --git
a/modules/luci-base/luasrc/sys.lua
b/modules/luci-base/luasrc/sys.lua
index aa00766fb87d8de247d9debc1d2319330e8c8761..af345a16d57291a0daffca53a58707180f3dfb9a 100644
(file)
--- a/
modules/luci-base/luasrc/sys.lua
+++ b/
modules/luci-base/luasrc/sys.lua
@@
-566,6
+566,7
@@
function init.names()
end
function init.index(name)
+ name = fs.basename(name)
if fs.access(init.dir..name) then
return call("env -i sh -c 'source %s%s enabled; exit ${START:-255}' >/dev/null"
%{ init.dir, name })
@@
-573,6
+574,7
@@
function init.index(name)
end
local function init_action(action, name)
+ name = fs.basename(name)
if fs.access(init.dir..name) then
return call("env -i %s%s %s >/dev/null" %{ init.dir, name, action })
end