Files
RosettaBugBounty/rosetta-sdu-2026-0000/VULN-LOW-rosetta-sdu-2026-0000

27 lines
1.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#Rosetta Local CVE-LIST
CVE-2026-0000 (rosetta-sdu Path Traversal ) https://git.rosetta.im/Rosetta/rosetta-sdu/src/branch/main/README.md
Path Traversal
Риск: Низкий (текущая проверка ловит большинство векторов). Если platform или file начинаются с /, resolve() вернёт абсолютный путь, но startsWith отклонит его. Однако символьные трюки (вроде //etc/passwd) могут вести себя иначе на некоторых ОС/JVM
KERNEL_DIR.resolve(platform).resolve(arch) без фильтрации ..
GET через параметры platform и arch в строке запроса
в классе UpdatesResource есть метод findLatestKernel. Он берёт параметры platform и arch прямо из запроса и делает так:
----------------------------------------------------------------------------------------------------------------------------
java
java.nio.file.Path targetDir = KERNEL_DIR.resolve(platform).resolve(arch);
KERNEL_DIR это просто папка kernel. Дальше сервер смотрит есть ли там папка с таким путём, и если есть ищет в ней файлы. Но он не чистит строки от ../. Поэтому если передать arch=../../etc, то resolve склеит всё в путь kernel/../../etc, который после нормализации превратится в /etc.
Что проверяется:
fileName().startsWith(".") — пропускает файлы типа .hidden, .gitignore и т.п.
Что НЕ проверяется:
arch может быть "../../../etc" — и тогда итоговый путь станет:
Нет нормализации пути (Path.normalize(), getCanonicalPath() и т.п.)