
ERPNext v15.67.0에서 /api/method/frappe.desk.reportview.get 엔드포인트의 order_by 및 group_by 매개변수를 통해 여러 SQL 인젝션 취약점이 발견되었습니다.
order_by 및 group_by 매개변수를 통한 인증된 SQL 인젝션📌 요약
ERPNext v15.67.0 및 Frappe Framework v15.72.4에는 frappe.desk.reportview.get API 엔드포인트에 여러 인증된 SQL 인젝션 취약점이 존재합니다. order_by 또는 group_by 매개변수에 악의적인 입력을 주입하여 임의의 SQL 문을 실행할 수 있습니다. 이를 통해 인증된 사용자(보고서에 대한 기본 액세스 권한 보유)가 민감한 데이터를 추출하고, 데이터베이스 열거를 수행하며, 시스템 내 권한을 조작하거나 상승시킬 수 있습니다.
취약점 유형: SQL 인젝션 (CWE-89)
영향을 받는 제품: ERPNext / Frappe
영향을 받는 버전:
영향을 받는 엔드포인트:
POST /api/method/frappe.desk.reportview.get
취약한 매개변수:
order_bygroup_by인증 필요: 예 (sid 쿠키를 통한 유효한 세션)
공격 유형: 원격
심각도: 높음 (SQL 코드 실행, 데이터 유출, 잠재적 권한 상승)
예상 CVSS v3.1 점수: 8.6 (높음) — 추정치; 최종 점수는 공식 CVE 기관에서 지정해야 합니다.
상태: 수정되지 않음 (공개 시점 기준)
CVE ID: CVE-2025-56381

✅ 본인이 소유하거나 명시적 허가를 받은 시스템에서만 테스트하세요. 동의 없이 프로덕션 시스템에 사용하지 마세요.
%28select%20updatexml%28null%2Cconcat%280x7e%2Cdatabase%28%29%2C0x7e%29%2Cnull%29%29
{
"doctype": "User",
"order_by": "(select updatexml(null,concat(0x7e,database(),0x7e),null))"
}
이를 통해 SQL 인젝션이 성공적으로 실행되었고 현재 데이터베이스 이름이 유출되었음을 확인할 수 있습니다.
order_by 또는 group_by 페이로드가 포함된 조작된 POST 요청이 /api/method/frappe.desk.reportview.get로 전송됩니다.order_by 및 group_by를 허용 가능한 컬럼 이름의 알려진 허용 목록(allowlist)과 대조하여 검증하세요./reportview.get API 및 보고서 기능에 대한 액세스를 제한하세요.frappe.desk 메서드를 감사해야 합니다. 운영자는 패치가 제공되는 즉시 업그레이드해야 합니다.발견자: Mohammed Aloli
Frappe Framework: https://github.com/frappe/frappe
ERPNext 프로젝트: https://github.com/frappe/erpnext
OWASP SQL 인젝션 치트 시트: https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html
본 권고는 교육 및 방어적 보안 연구 목적으로만 게시됩니다. 승인 없이 이 취약점을 악용하는 것은 불법이며 비윤리적입니다. ERPNext 또는 Frappe의 개발자 또는 관리자라면 권장 완화 조치를 즉시 적용하고 비정상적인 API 사용을 모니터링하세요.