Уязвимость функции path.join() менеджера пакетов pnpm связана с неверным ограничением имени пути к каталогу с ограниченным доступом при обработке поля directories.bin. Эксплуатация уязвимости может позволить нарушителю получить несанкционированный доступ к защищаемой информации и повысить свои привилегии
Использование рекомендаций:
https://github.com/pnpm/pnpm/commit/17432ad5bbed5c2e77255ca6d56a1449bbcfd943
https://github.com/pnpm/pnpm/releases/tag/v10.28.2
Компенсирующие меры:
Добавьте функцию проверки путей isSubdir() поля directories.bin в файле pkg-manager/package-bins/src/index.ts, аналогичную существующей проверке в commandsFromBin():
if (manifest.directories?.bin) {
const binDir = path.join(pkgPath, manifest.directories.bin)
if (!isSubdir(pkgPath, binDir)) {
return [] // Reject paths outside package
}
// ...
}
| Балл | 4.9 — средняя опасность |