Reject unsafe ZIP paths
This commit is contained in:
@@ -128,6 +128,24 @@
|
||||
|
||||
## Git
|
||||
|
||||
## Исправление traversal — 2026-09-05
|
||||
|
||||
### Причина
|
||||
|
||||
`list_zip_files.js` использовал сырой `entryName` из ZIP: он напрямую попадал в `path` и разбивался через `split('/')`. Поэтому `..`, ведущий `/`, пустые сегменты и Windows backslash создавали видимые небезопасные группы и пути.
|
||||
|
||||
### Исправление
|
||||
|
||||
- Добавлена проверка сегментов ZIP entry до построения дерева.
|
||||
- Отклоняются пустые entry, абсолютные пути, backslash, `.`, `..` и пустые сегменты.
|
||||
- Пути и имена leaf-файлов строятся только из проверенных сегментов.
|
||||
- Вложенный ZIP с опасным путём пропускается без прерывания обработки внешнего ZIP.
|
||||
- Версия повышена до `0.1.8`.
|
||||
|
||||
### Повторная проверка
|
||||
|
||||
ZIP с `folder/../../escape.txt`, `/absolute.md`, `windows\\..\\bad.txt`, `folder/./dot.txt` и безопасным `safe/normal.txt` оставил только `paths.zip/safe/normal.txt`. Группы `..`, пустая группа и абсолютный путь больше не отображаются. Результат: `1 файлов · 2 B`.
|
||||
|
||||
- `c0b8788 Implement reusable upload platform` — первоначальный reusable upload platform.
|
||||
- `85605fe Remove VM upload layer; keep file picker only` — удаление VM upload и переход к picker-only.
|
||||
- `a965f18 Add hierarchical file picker` — иерархическое дерево, вложенные ZIP, удаление групп и файлов.
|
||||
|
||||
Reference in New Issue
Block a user