
Защитная самопроверка одной цели на предмет подверженности Langflow уязвимости CVE-2025-3248
Запускайте только на серверах, которыми вы владеете или на тестирование которых у вас есть разрешение.
Область действия: успешный результат означает только то, что эта узкая проверка обнаружила запрос аутентификации и версию Langflow на уровне или выше исправленного порога для CVE-2025-3248. Это не является общим заключением о безопасности, репутации, конфигурации или компрометации.
Небольшая защитная самопроверка для уязвимости Langflow, связанной с CVE-2025-3248. Передайте EXPOSECHECK один базовый URL — ваш собственный сервер или localhost — и он сообщит:
/api/v1/validate/code аутентификации для неавторизованного запроса;1.3.0; иЭто не эксплойт и не массовый сканер. Он принимает одну цель, не отправляет исполняемый код и не проводит поиск по всему интернету. Зонд конечной точки проверки отправляет только пустой объект JSON ({}).
Исследование угроз Sysdig задокументировало JADEPUFFER, который, по мнению исследователей, является первой атакой программы-вымогателя, выполненной от начала до конца агентом ИИ. Первоначальный доступ был связан с известной, исправленной уязвимостью Langflow CVE-2025-3248: старые открытые экземпляры позволяли неаутентифицированный доступ к конечной точке проверки кода.
Langflow — это легитимный фреймворк с открытым исходным кодом для приложений ИИ. Риск представляет открытое, неисправленное развертывание, а не сам Langflow. Langflow 1.3.0+ содержит соответствующее исправление и требует аутентификации на конечной точке.
Требуется Node.js 18+; пакеты устанавливать не нужно.
node check.js http://localhost:7860
Также можно вывести результат в машиночитаемом формате:
node check.js http://localhost:7860 --json
Коды выхода полезны в локальных скриптах:
0 — PATCHED FOR CVE-2025-32481 — EXPOSED2 — NEEDS ATTENTION, неверный ввод или неубедительная проверкаPATCHED FOR CVE-2025-3248 требует как запроса аутентификации 401/403, так и обнаруженной версии 1.3.0 или новее. Это не означает, что сервер в целом безопасен. Конечная точка, которая достигает проверки запроса без запроса аутентификации, помечается как EXPOSED. Отсутствующие, перенаправленные, заблокированные или неоднозначные ответы намеренно сообщаются как NEEDS ATTENTION, а не угадываются как безопасные.
Откройте index.html напрямую или запустите локальный сервер из каталога:
python3 -m http.server 8080
Затем перейдите по адресу http://localhost:8080.
Браузеры применяют правила CORS и смешанного контента. Кросс-доменный сервер может быть исправен, но все равно блокировать чтение ответа страницей. Это приводит к неубедительному результату; используйте CLI для надежной проверки.
Запустите встроенный набор регрессионных тестов с Node.js 18+:
node --test test.js
Набор тестов фиксирует общедоступную лексику результатов, чтобы исправленное состояние в рамках CVE не могло незаметно деградировать до общего утверждения безопасно или всё в порядке.
Демонстрации детерминированы и не связываются с внешним сервером.
CLI:
node check.js --demo exposed
node check.js --demo patched
Браузер: используйте Демо: открыто и Демо: исправлено над панелью вердикта. По умолчанию страница загружает демонстрацию открытого состояния, что позволяет надежно записывать экран, не нацеливая инструмент на живую цель.
Сетевая подсказка проверяет только введенный URL. Она не разрешает DNS и не доказывает, что хост доступен из интернета.
Зеленое оформление применяется только к отображаемому предикату. В частности, PATCHED FOR CVE-2025-3248 не означает БЕЗОПАСНО.
Обновите Langflow до 1.3.0+, поместите его за аутентификацию и уберите из публичного интернета.
Многоуровневая защита по-прежнему важна: ограничьте входящий трафик, не размещайте инструменты разработки непосредственно в публичном интернете, смените учетные данные, если заподозрите воздействие, и проверьте журналы сервера. Если этот инструмент сообщает о старой версии за аутентификацией, он возвращает NEEDS ATTENTION, поскольку программное обеспечение все равно должно быть исправлено.
MIT. См. LICENSE.
| Проверка | Наблюдаемый защитный сигнал | Сигнал внимания |
|---|
| Доступность | Любой HTTP-ответ подтверждает, что хост работает | Тайм-аут или сбой соединения неубедительны |
| Аутентификация конечной точки | 401 или 403 для пустого неаутентифицированного запроса | 2xx, 400 или 422 означает, что запрос аутентификации не произошел до принятия/проверки запроса |
| Версия | Langflow 1.3.0+ | <1.3.0 уязвим; неизвестные версии требуют ручной проверки |
| Сетевая подсказка | Локальный/частный URL | Публичный IP/домен информативен и должен побудить к проверке подверженности |