{"vulnerability": "CVE-2025-46568", "sightings": [{"uuid": "055d7564-f20a-4d07-b1f4-9d2851fbf49b", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "2a075640-a300-48a4-bb44-bc6130783b9b", "vulnerability": "CVE-2025-46568", "type": "published-proof-of-concept", "source": "Telegram/QFVP5TcYkEi5fC3DYhpbJ3tJ8sPusYmL1ImuYd1RRjGW6cE", "content": "", "creation_timestamp": "2025-05-01T20:00:50.000000Z"}, {"uuid": "5313675e-089b-495d-8ba7-1134dfdf7b1a", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "2a075640-a300-48a4-bb44-bc6130783b9b", "vulnerability": "CVE-2025-46568", "type": "seen", "source": "https://t.me/DarkWebInformer_CVEAlerts/14487", "content": "\ud83d\udd17 DarkWebInformer.com - Cyber Threat Intelligence\n\ud83d\udccc CVE ID: CVE-2025-46568\n\ud83d\udd25 CVSS Score: 7.7 (cvssV4_0, Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:P)\n\ud83d\udd39 Description: Stirling-PDF is a locally hosted web application that allows you to perform various operations on PDF files. Prior to version 0.45.0, Stirling-PDF is vulnerable to SSRF-induced arbitrary file read. WeasyPrint redefines a set of HTML tags, including img, embed, object, and others. The references to several files inside, allow the attachment of content from any webpage or local file to a PDF. This allows the attacker to read any file on the server, including sensitive files and configuration files. All users utilizing this feature will be affected. This issue has been patched in version 0.45.0.\n\ud83d\udccf Published: 2025-05-01T17:20:46.488Z\n\ud83d\udccf Modified: 2025-05-02T13:33:46.987Z\n\ud83d\udd17 References:\n1. https://github.com/Stirling-Tools/Stirling-PDF/security/advisories/GHSA-998c-x8hx-737r", "creation_timestamp": "2025-05-02T14:15:53.000000Z"}, {"uuid": "40f9bdf1-bf60-4338-864b-8a3ae0bb567b", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "2a075640-a300-48a4-bb44-bc6130783b9b", "vulnerability": "CVE-2025-46568", "type": "published-proof-of-concept", "source": "https://t.me/wr3dmast3rvs/57", "content": "\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0432 \u043b\u0430\u0439\u0432-\u0440\u0435\u0436\u0438\u043c\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0430\u043d\u0430\u043b\u0438\u0437\u043e\u043c \u043a\u043e\u0434\u0430 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 SSRF \u0432 Stirling-PDF (CVE-2025-46568): \u0447\u0442\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 WeasyPrint. \u041d\u0435 \u0431\u044b\u043b\u043e \u043e\u0441\u043e\u0431\u043e \u0432\u0430\u0436\u043d\u043e, \u043a\u0430\u043a\u0430\u044f CVE. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043f\u043e\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430 \ud83c\udfc3\u200d\u2642\ufe0f\n\nStirling-PDF \u2014 \u044d\u0442\u043e \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 PDF (\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435). \u0412 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0434\u043e 0.45.0 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 SSRF-\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u043c\u0443 \u0447\u0438\u0442\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 HTML \u0432 WeasyPrint \u26a0\ufe0f\n\n\u0421\u0443\u0442\u044c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438:\n1. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 HTML-\u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u043e URL;\n2. WeasyPrint \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u0435\u0433 , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b (file://) \u0432 PDF \u043a\u0430\u043a \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\n\n\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u2014 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0430\u043d\u0438\u0442\u0438\u0437\u0430\u0446\u0438\u0438 HTML \u043f\u0435\u0440\u0435\u0434 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u043e\u043c:\n// 1. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 URL \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0445\u0435\u043c\u0443 http/https\nif (!URL.matches(\"^https?://.*\") || !GeneralUtils.isValidURL(URL)) {\n    throw new IllegalArgumentException(\"Invalid URL format provided.\");\n}\n\n// 2. \u041f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 URL \u0432 WeasyPrint \u0431\u0435\u0437 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 HTML\nList command = new ArrayList&lt;&gt;();\ncommand.add(runtimePathConfig.getWeasyPrintPath());\ncommand.add(URL);  // HTML \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \ncommand.add(\"--pdf-forms\");\ncommand.add(tempOutputFile.toString());\n\n// 3. WeasyPrint \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442 PDF \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438\nProcessExecutor.runCommandWithOutputHandling(command);\n\nPoC:\n\n\n\n    \n\n\n\n\n\u0415\u0441\u043b\u0438 \u0412\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430 \u0438\u043b\u0438 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f, \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u043a Discord \u0438 \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0438! \ud83d\udd0d", "creation_timestamp": "2025-06-21T19:52:27.000000Z"}]}