Логика разрешения подшаблона art-template (src/compile/adapter/resolve-filename.js), используемая директивами шаблона include() и Extend(), разрешает путь к целевому файлу через path.resolve(root, filename) без последующей проверки того, что результат остается внутри корня. Поскольку path.resolve() полностью отбрасывает root, когда filename является абсолютным путем, и не блокирует последовательности обхода '../', а разрешенный путь передается непосредственно в fs.readFileSync() в loader.js с его содержимым, скомпилированным и визуализированным, приложение, которое позволяет на имя подшаблона влиять на внешние входные данные (например, параметр запроса, переданный в {{include page}}), позволяет злоумышленнику читать произвольные файлы на диске, к которым может получить доступ процесс Node.
Показать оригинальное описание (EN)
art-template's sub-template resolution logic (src/compile/adapter/resolve-filename.js), used by both the include and extend template directives, resolves the target file path via path.resolve(root, filename) with no check afterward that the result remains inside root.
Характеристики атаки
Последствия
Строка CVSS v3.1