JS: Add step through spread arg to path.join()

This commit is contained in:
Asger F 2023-07-07 14:05:19 +02:00
Родитель a826c8327a
Коммит d49359a95c
1 изменённых файлов: 16 добавлений и 0 удалений

Просмотреть файл

@ -847,6 +847,22 @@ module TaintedPath {
dst = call and
srclabel = dstlabel
)
or
exists(DataFlow::CallNode join |
// path.join() with spread argument
join = NodeJSLib::Path::moduleMember("join").getACall() and
src = join.getASpreadArgument() and
dst = join and
(
srclabel.(Label::PosixPath).canContainDotDotSlash()
or
srclabel instanceof Label::SplitPath
) and
dstlabel.(Label::PosixPath).isNormalized() and
if isRelative(join.getArgument(0).getStringValue())
then dstlabel.(Label::PosixPath).isRelative()
else dstlabel.(Label::PosixPath).isAbsolute()
)
}
/**