
В Frappe Framework v15.72.4 обнаружена уязвимость SQL-инъекции через параметр fieldname в конечной точке API frappe.client.get_value.
📌 Краткое описание
В конечной точке API frappe.client.get_value в Frappe Framework v15.72.4 (а также в кодовой базе ERPNext v15.67.0) обнаружена слепая SQL-инъекция на основе времени. Аутентифицированный пользователь с доступом к API отчётности/клиента может внедрить SQL через параметр fieldname. Вставляя функции временной задержки (например, sleep(15)) в параметр fieldname, атакующий может подтвердить инъекцию по измеримым задержкам ответа — что позволяет осуществлять отказ в обслуживании, раскрытие информации (слепыми методами) и манипуляцию данными.
Тип уязвимости: SQL-инъекция (слепая, на основе времени) (CWE‑89)
Затронутые продукты: Frappe Framework / ERPNext
Затронутые версии (указанные в отчёте):
Затронутый компонент: метод API frappe.client.get_value (frappe/client.py)
Уязвимая конечная точка:
/api/method/frappe.client.get_value
Пример уязвимого запроса:
/api/method/frappe.client.get_value?doctype=Report&fieldname=ref_doctype+%2F+sleep(15)+&filters=Profit+and+Loss+Statement&_=1752174156893
Уязвимый параметр: fieldname (недостаточно санитизируется / конкатенируется в SQL)
Тип атаки: удалённая (требует аутентификации и доступа к API отчётности)
Серьёзность: высокая (слепая SQLi на основе времени позволяет эксфильтрацию данных, DoS и манипуляции)
Оценочный балл CVSS v3.1: 8.0 (высокий) — оценка основана на удалённой SQL-инъекции, требующей аутентификации и позволяющей раскрытие данных и DoS; окончательную оценку должны проводить организации-назначители.
Статус: не исправлено (по данным отчёта)
Обнаружил: Mohammed Aloli (GitHub: https://github.com/MoAlali)
Дата обнаружения: не указана в отчёте
ID CVE: CVE-2025-56380
Проводите тесты только в авторизованных / лабораторных средах. НЕ запускайте атаку против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
PoC-запрос (пример):

GET /api/method/frappe.client.get_value?doctype=Report&fieldname=ref_doctype+%2F+sleep(15)+&filters=Profit+and+Loss+Statement&_=1752174156893
Шаги для подтверждения
+%2F+sleep(15)+& и убедитесь, что ответ возвращается немедленно — это подтверждает, что задержку вызывает именно инъекция.Примечания: Замените sleep(15) на другие временные функции или значения времени, подходящие для используемой СУБД (например, pg_sleep(n) для PostgreSQL), в зависимости от движка БД. PoC демонстрирует слепую инъекцию на основе времени; более сложные нагрузки можно использовать для извлечения данных побитово.
Вектор атаки: аутентифицированный пользователь формирует GET-запросы к /api/method/frappe.client.get_value с вредоносным параметром fieldname, содержащим SQL-нагрузки (функции временной задержки).
Воздействие:
fieldname и все пользовательские данные никогда не конкатенируются напрямую в SQL. Используйте параметризованные запросы или ORM API с корректной привязкой параметров.sleep, pg_sleep, benchmark, /, ;).frappe.client.get_value и пути кода, обрабатывающего fieldname/фильтры, заменить небезопасную конкатенацию безопасными API и выпустить патч безопасности. Операторам следует оперативно применять обновления.https://github.com/MoAlali — X: https://x.com/alaliksa_ — LinkedIn: https://www.linkedin.com/in/mohammedaloli/https://github.com/frappe/frappe , https://github.com/frappe/erpnexthttps://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.htmlОбнаружено Mohammed Aloli
Эта информация предоставлена исключительно в целях защиты и устранения уязвимости. Не пытайтесь эксплуатировать эту уязвимость против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения. Операторам следует уделять первоочередное внимание установке патчей, применять исправления безопасного кода и следовать приведённым выше рекомендациям по смягчению последствий.