
ERPNEXT v15.67.0의 블로그 게시물 기능에 존재하는 저장형 교차 사이트 스크립팅(XSS) 취약점으로 인해 공격자는 content 필드에 주입된 조작된 페이로드를 통해 임의의 웹 스크립트 또는 HTML을 실행할 수 있습니다.
📌 요약
ERPNext(v15.67.0) / Frappe(v15.72.4)의 블로그 모듈에는 저장형 크로스 사이트 스크립팅(XSS) 취약점이 존재합니다. 블로그 게시물을 생성하거나 편집할 수 있는 인증된 사용자는 content 필드에 조작된 HTML/JavaScript를 주입할 수 있습니다. 해당 페이로드는 저장되며, 블로그 게시물 페이지를 보는 모든 사용자의 브라우저에서 실행되어 임의 스크립트 실행, 정보 유출, 서비스 거부 및 기타 클라이언트 측 공격을 가능하게 합니다. 관리자 권한은 반드시 필요하지 않습니다. 블로그 게시물을 생성/편집할 수 있는 권한이 있는 모든 사용자가 이 취약점을 악용할 수 있습니다.
취약점 유형: 저장형 크로스 사이트 스크립팅(CWE-79)
영향을 받는 제품: ERPNext / Frappe
영향을 받는 버전(보고됨):
영향을 받는 구성 요소: ERPNext 블로그 모듈
경로(Route): /app/blog-post/<blog_name>
취약한 필드: content (블로그 게시물 생성 / 편집 양식)
공격 유형: 원격(인증 및 블로그 게시물 생성 권한 필요)
심각도: 높음(클라이언트 측 코드 실행, 데이터 탈취, 세션 하이재킹 가능성)
예상 CVSS v3.1 점수: 7.5(High) — 추정치이며, 권한 있는 평가 기관(CNA)이 최종 점수를 산정해야 함
상태: 수정되지 않음(보고 기준)
발견자: Mohammed Aloli
발견 날짜: 명시되지 않음
CVE ID: CVE-2025-56379
승인된 환경 또는 실습 환경에서만 테스트하십시오. 소유하지 않았거나 명시적 테스트 권한이 없는 시스템에 대해 실행하지 마십시오.
재현 단계
블로그 게시물을 생성/편집할 수 있는 권한이 있는 사용자로 대상 ERPNext 인스턴스에 인증합니다.
블로그의 게시물 생성/편집 경로로 이동합니다. 예:
/app/blog-post/<blog_name>
content 필드에 페이로드를 삽입하고 게시물을 저장합니다:
다른 사용자(또는 새 브라우저의 동일 사용자)로 블로그 게시물 페이지(/app/blog-post/<blog_name>)를 엽니다. 페이로드는 열람자의 브라우저에서 실행됩니다(여기서는 alert("xss")).
참고: PoC는 간단한 onerror alert를 사용합니다. 실제 공격은 쿠키를 유출하거나, 피해자를 대신해 작업을 수행하거나, 원격 스크립트를 로드할 수 있습니다(CSP 및 쿠키 플래그에 따라 다름).
블로그 게시물을 생성하거나 편집할 수 있는 공격자는 content 필드에 악성 스크립트를 저장합니다. 블로그 게시물 페이지를 방문하는 모든 사용자 — 관리자를 포함하여 — 는 자신의 브라우저 컨텍스트에서 공격자의 스크립트를 실행하게 됩니다. 그 결과로는 세션 탈취(쿠키가 HttpOnly가 아닌 경우), 피해자 세션에서의 강제 작업, 공격자가 접근할 수 있는 페이지에서의 데이터 유출, UI 레드레스(redress) 공격, 클라이언트 측 구성 요소의 DoS 가능성 등이 있습니다.
content HTML을 삭제(sanitize)하거나 출력 시 이스케이프하되, 위험한 태그와 속성(on* 속성, javascript: URI, <script>, `` 등 제거)을 제거하는 안전한 HTML sanitizer를 사용하십시오. 유지 관리가 잘 되는 라이브러리를 선호하십시오.<p>, <b>, <i>, <ul>, <li>, 엄격한 href 검증이 있는 <a href>). 인라인 이벤트 핸들러는 허용하지 마십시오.'unsafe-inline' 사용 금지, 필요한 경우 nonce/해시 기반 스크립트 허용 사용).HttpOnly인지 확인하고 적절한 SameSite 속성을 설정하여 쿠키 탈취 및 CSRF 유사 위험을 줄이십시오.https://github.com/frappe/erpnexthttps://github.com/frappe/frappehttps://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html작성자: Mohammed Aloli
본 문서는 방어, 수정 및 인식 제고 목적으로만 작성되었습니다. 소유하지 않았거나 명시적 테스트 권한이 없는 시스템에 대해 이 취약점을 악용하려 시도하지 마십시오. ERPNext/Frappe를 운영하는 경우 수정 사항을 적용하고, 삭제(sanitization)를 강제하고, 위의 완화 지침을 따르십시오.