From bfb0c960c0d67aceaae21ed39e15f06d2c0bdaa0 Mon Sep 17 00:00:00 2001 From: hugy Date: Fri, 29 May 2026 07:04:28 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20VULN-HIGH-rosetta-sdu-2026-0000?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VULN-HIGH-rosetta-sdu-2026-0000 | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 VULN-HIGH-rosetta-sdu-2026-0000 diff --git a/VULN-HIGH-rosetta-sdu-2026-0000 b/VULN-HIGH-rosetta-sdu-2026-0000 new file mode 100644 index 0000000..df3ebe4 --- /dev/null +++ b/VULN-HIGH-rosetta-sdu-2026-0000 @@ -0,0 +1,28 @@ +https://git.rosetta.im/Rosetta/rosetta-sdu/src/branch/main/README.md + + +Path Traversal (выход за пределы папки kernel) + +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. + +Останется только скачать эту ссылку ..... + + + + content = f.read().decode("utf-8", errors="replace") + print(content[:1000]) + except URLError: + print("Failed to download file.") + sys.exit(0) + +print("Not vulnerable") +sys.exit(1) +