ApostrofeCMS — это платформа управления контентом с открытым исходным кодом. До версии 3.5.3 `@apostropecms/import-export`,
Функция «extract()» в «gzip.js» создает пути записи файлов, используя «fs.createWriteStream(path.join(exportPath, header.name))». `path.join()` не разрешает и не очищает сегменты обхода, такие как `../`. Он объединяет их как есть, то есть запись tar с именем `../../evil.js` разрешается в путь за пределами предполагаемого каталога извлечения.
Перед открытием потока записи проверка канонического пути не выполняется. Это хрестоматийная уязвимость Zip Slip. Любой пользователь, которому предоставлено разрешение на глобальное изменение контента (роль, которую обычно назначают редакторам контента и менеджерам сайтов), может загрузить созданный файл `.tar.gz` через стандартный пользовательский интерфейс импорта CMS и записать контролируемый злоумышленником контент по любому пути, которого процесс Node.js может достичь в файловой системе хоста.
Версия 3.5.3 `@apostropecms/import-export` устраняет проблему.
Показать оригинальное описание (EN)
ApostropheCMS is an open-source content management framework. Prior to version 3.5.3 of `@apostrophecms/import-export`, The `extract()` function in `gzip.js` constructs file-write paths using `fs.createWriteStream(path.join(exportPath, header.name))`. `path.join()` does not resolve or sanitise traversal segments such as `../`. It concatenates them as-is, meaning a tar entry named `../../evil.js` resolves to a path outside the intended extraction directory. No canonical-path check is performed before the write stream is opened. This is a textbook Zip Slip vulnerability. Any user who has been granted the Global Content Modify permission — a role routinely assigned to content editors and site managers — can upload a crafted `.tar.gz` file through the standard CMS import UI and write attacker-controlled content to any path the Node.js process can reach on the host filesystem. Version 3.5.3 of `@apostrophecms/import-export` fixes the issue.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Apostrophecms Import-Export
cpe:2.3:a:apostrophecms:import-export:*:*:*:*:*:node.js:*:*
|
— |
3.5.3
|