Обновить rosetta-sdu-2026-0000/VULN-LOW-rosetta-sdu-2026-0000
This commit is contained in:
26
rosetta-sdu-2026-0000/VULN-LOW-rosetta-sdu-2026-0000
Normal file
26
rosetta-sdu-2026-0000/VULN-LOW-rosetta-sdu-2026-0000
Normal file
@@ -0,0 +1,26 @@
|
||||
#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() и т.п.)
|
||||
Reference in New Issue
Block a user